gitextract_bzvznlar/ ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── COPILOT_INSTRUCTIONS.md ├── LICENSE-MIT ├── LICENSE-PREMIUM ├── README.md ├── api/ │ └── og.ts ├── components.json ├── dev-tools/ │ ├── README.md │ ├── bubbletea-test-cli/ │ │ ├── README.md │ │ ├── animations/ │ │ │ ├── ascii_motion_anim.go │ │ │ ├── copilotspin/ │ │ │ │ └── copilot_spin.go │ │ │ ├── effects/ │ │ │ │ └── ascii_motion_anim_effects.go │ │ │ ├── effects2/ │ │ │ │ └── ascii_motion_anim_effects2.go │ │ │ ├── effects3/ │ │ │ │ └── ascii_motion_anim_effects3.go │ │ │ └── newtest/ │ │ │ └── ascii_motion_anim_new.go │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── clipboard-test.js │ ├── debug-video-export.js │ ├── font-test.html │ ├── gridColorTest.ts │ ├── ink-test-cli/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ascii-motion-cli-effects.tsx │ │ │ ├── ascii-motion-cli_256.tsx │ │ │ └── cli.tsx │ │ └── tsconfig.json │ ├── opentui-test-cli/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ascii-motion-opentui-hex.tsx │ │ │ ├── ascii-motion-tui-ansi2.tsx │ │ │ ├── ascii-motion-tui-effects.tsx │ │ │ ├── ascii-motion-tui-semantic.tsx │ │ │ ├── ascii-motion-tui.tsx │ │ │ ├── ascii-motion-tui2.tsx │ │ │ ├── cli.tsx │ │ │ ├── fish-animation-256.tsx │ │ │ └── fish-animation.tsx │ │ └── tsconfig.json │ ├── react-export-test/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── ascii-motion-animation-effects.tsx │ │ │ ├── ascii-motion-animation-new.tsx │ │ │ ├── ascii-motion-animation.tsx │ │ │ ├── main.tsx │ │ │ ├── shader-test-01.tsx │ │ │ ├── shader-test-02.tsx │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── sample-json-export.json │ ├── test-frame-timing.js │ ├── test-ibm-vga-font.html │ ├── test-json-html-export.js │ ├── test-palette.json │ ├── test-sf-mono.html │ ├── test-video-export.js │ └── test-video-loops.js ├── docs/ │ ├── ADDING_CUSTOM_FONTS.md │ ├── ADDING_FEATURES_TO_PROJECT_SYSTEM.md │ ├── ANIMATION_PLAYBACK_OPTIMIZATION.md │ ├── ANIMATION_PLAYBACK_OPTIMIZATION_PLAN.md │ ├── ANIMATION_SYSTEM_GUIDE.md │ ├── ASCII_BOX_TOOL_IMPLEMENTATION_PLAN.md │ ├── ASCII_TYPE_TOOL_IMPLEMENTATION_PLAN.md │ ├── BEZIER_GRANULAR_UNDO_IMPLEMENTATION.md │ ├── BEZIER_SHAPE_TOOL_IMPLEMENTATION_PLAN.md │ ├── BRUSH_HOVER_PREVIEW_PLAN.md │ ├── BRUSH_TOOL_USER_GUIDE.md │ ├── BUBBLETEA_EXPORT_IMPLEMENTATION_PLAN.md │ ├── BUILD_FIXES.md │ ├── CANVAS_RENDERING_IMPROVEMENTS.md │ ├── CANVAS_TEXT_RENDERING.md │ ├── COEP_CONFIGURATION_GUIDE.md │ ├── COEP_TROUBLESHOOTING_GUIDE.md │ ├── COLOR_PALETTE_OVERHAUL_PLAN.md │ ├── CROP_CANVAS_TO_SELECTION.md │ ├── DIALOG_COMPONENT_AUDIT.md │ ├── DIALOG_CONSISTENCY_UPDATE.md │ ├── DIGITAL_RAIN_GENERATOR_IMPLEMENTATION.md │ ├── DITHERING_ANALYSIS_AND_PLAN.md │ ├── DITHERING_IMPLEMENTATION_SUMMARY.md │ ├── DITHERING_QUICK_REFERENCE.md │ ├── DRAGGABLE_PICKERS_IMPLEMENTATION.md │ ├── DRAWING_GAP_FIX.md │ ├── EFFECTS_DEVELOPER_GUIDE.md │ ├── EFFECTS_IMPLEMENTATION_SUMMARY.md │ ├── EFFECTS_SYSTEM_IMPLEMENTATION.md │ ├── EFFECTS_SYSTEM_USER_GUIDE.md │ ├── ELLIPSE_RADIAL_GRADIENTS.md │ ├── EXPORT_METADATA_AUDIT_COMPLETE.md │ ├── FIGMA_COMPONENT_RECREATION_GUIDE.md │ ├── FIGMA_DESIGN_SYSTEM_SETUP.md │ ├── FIGMA_MCP_WORKFLOW_GUIDE.md │ ├── FIGMA_REACT_DIALOG_REDESIGN_MASTER_GUIDE.md │ ├── FIGMA_WORKFLOW_IMPLEMENTATION_SUMMARY.md │ ├── FIGMA_WORKFLOW_README.md │ ├── FONT_QUICK_REFERENCE.md │ ├── FONT_SELECTION_IMPLEMENTATION_PLAN.md │ ├── FONT_SYSTEM_IMPLEMENTATION_PLAN.md │ ├── FRAME_SYNCHRONIZATION_DEBUGGING_GUIDE.md │ ├── GENERATORS_IMPLEMENTATION_PLAN.md │ ├── GENERATOR_CANVAS_PREVIEW_OPTIMIZATION.md │ ├── GENERATOR_PREVIEW_RACE_CONDITION_FIX.md │ ├── GIT_SUBMODULE_SETUP.md │ ├── GRADIENT_FILL_IMPLEMENTATION.md │ ├── GRID_OPACITY_IMPROVEMENTS.md │ ├── INK_COMPONENT_EXPORT_IMPLEMENTATION_PLAN.md │ ├── LAYER_TIMELINE_OPTIMIZATIONS.md │ ├── LAYER_TIMELINE_REFACTOR_PLAN.md │ ├── LOGGING_CLEANUP_SUMMARY.md │ ├── MCP_GUIDE_RESOURCE_CODE.ts │ ├── MCP_LLM_USAGE_GUIDE.md │ ├── MCP_SERVER_IMPLEMENTATION_PLAN.md │ ├── MEDIA_IMPORT_ANALYSIS.md │ ├── MEDIA_IMPORT_FIXES_COMPLETE.md │ ├── MEDIA_IMPORT_HISTORY_INTEGRATION.md │ ├── MONOREPO_QUICK_REFERENCE.md │ ├── MONOREPO_SETUP_COMPLETE.md │ ├── MONOREPO_SETUP_GUIDE.md │ ├── MULTI_FRAME_SELECTION_IMPLEMENTATION_PLAN.md │ ├── MULTI_FRAME_SELECTION_MANUAL_TEST_PLAN.md │ ├── ONION_SKINNING_GUIDE.md │ ├── OPENTUI_COMPONENT_EXPORT_IMPLEMENTATION_PLAN.md │ ├── OPEN_SOURCE_SECURITY_STRATEGY.md │ ├── OS_CLIPBOARD_TESTING.md │ ├── PALETTE_REMAP_IMPLEMENTATION.md │ ├── PASTE_FUNCTIONALITY_TEST.md │ ├── PERFORMANCE_ANALYSIS_REPORT.md │ ├── PERFORMANCE_OPTIMIZATION.md │ ├── PERFORMANCE_OPTIMIZATION_ACTION_PLAN.md │ ├── PERFORMANCE_OPTIMIZATION_PHASE1.md │ ├── PERMANENT_DELETE_RLS_FIX.md │ ├── PERSISTENT_SELECTION_IMPLEMENTATION_PLAN.md │ ├── PHASE_4_ADVANCED_TOOLS_PLAN.md │ ├── POST_EFFECTS_DEVELOPER_GUIDE.md │ ├── POST_EFFECTS_USER_GUIDE.md │ ├── PREMIUM_DOCS_MOVED.md │ ├── PRIVACY_POLICY.md │ ├── PROCEDURAL_EFFECTS_HANDOFF.md │ ├── PROJECT_MANAGEMENT_ENHANCEMENT_PLAN.md │ ├── REACT_COMPONENT_EXPORT_IMPLEMENTATION_PLAN.md │ ├── README.md │ ├── RESPONSIVE_TESTING_CHECKLIST.md │ ├── SCATTER_BLEND_COLORS_FEATURE.md │ ├── SCATTER_EFFECT_FINAL_IMPLEMENTATION.md │ ├── SECURITY_HEADERS_INDEX.md │ ├── SECURITY_REVIEW.md │ ├── SHARED_UI_COMPONENTS_PATTERN.md │ ├── SVG_EXPORT_IMPLEMENTATION_PLAN.md │ ├── SVG_TEXT_TO_OUTLINES_IMPLEMENTATION_PLAN.md │ ├── SVG_TEXT_TO_OUTLINES_IMPLEMENTATION_SUMMARY.md │ ├── TAB_ORDER_STRATEGY.md │ ├── TERMS_OF_SERVICE.md │ ├── TIME_EFFECTS_IMPLEMENTATION_PLAN.md │ ├── TOOL_BEHAVIOR_IMPLEMENTATION.md │ ├── TYPOGRAPHY_IMPLEMENTATION.md │ ├── UI_COMPONENTS_DESIGN_SYSTEM.md │ ├── UNDO_REDO_BUG_FIXES.md │ ├── VERCEL_JSON_REFERENCE.md │ ├── WIDTH_HEIGHT_INPUT_FIX.md │ └── timanthes.txt ├── eslint.config.js ├── index.html ├── package.json ├── packages/ │ └── core/ │ ├── package.json │ ├── src/ │ │ ├── components/ │ │ │ ├── index.ts │ │ │ └── ui/ │ │ │ ├── alert.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── menubar.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── slider.tsx │ │ │ ├── switch.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toggle.tsx │ │ │ └── tooltip.tsx │ │ ├── index.ts │ │ └── lib/ │ │ └── utils.ts │ └── tsconfig.json ├── postcss.config.js ├── public/ │ ├── ffmpeg/ │ │ ├── ffmpeg-core.js │ │ └── ffmpeg-core.wasm │ ├── fonts/ │ │ └── jetbrains-mono/ │ │ └── LICENSE.txt │ └── site.webmanifest ├── scripts/ │ ├── check-licenses.js │ ├── create_mcp_guide.py │ ├── download-fonts.sh │ ├── extract-logo-frames.js │ ├── migrate-to-monorepo.js │ ├── setup-premium-submodule.sh │ ├── update_mcp_resources.py │ └── version-bump.js ├── src/ │ ├── App.css │ ├── App.tsx │ ├── __tests__/ │ │ ├── canvasStoreLayerSync.test.ts │ │ ├── easing.test.ts │ │ ├── effectBlocks.test.ts │ │ ├── effectRegistry.test.ts │ │ ├── effectsPipeline.test.ts │ │ ├── layerCompositing.test.ts │ │ ├── layerLimits.test.ts │ │ ├── phase5ExportMigration.test.ts │ │ ├── phase6Integration.test.ts │ │ ├── sessionMigration.test.ts │ │ ├── timelineStore.test.ts │ │ ├── timelineUI.test.ts │ │ └── useTimelineHistory.test.ts │ ├── components/ │ │ ├── common/ │ │ │ ├── AppReveal.tsx │ │ │ ├── AsciiMotionLogo.tsx │ │ │ ├── CellRenderer.tsx │ │ │ ├── CollapsibleHeader.tsx │ │ │ ├── CollapsiblePanel.tsx │ │ │ ├── ColorSwatch.tsx │ │ │ ├── DraggableDialogBar.tsx │ │ │ ├── MouseCoordinates.tsx │ │ │ ├── PanelSeparator.tsx │ │ │ ├── PanelToggleButton.tsx │ │ │ ├── PerformanceMonitor.tsx │ │ │ ├── PerformanceOverlay.tsx │ │ │ ├── Spinner.tsx │ │ │ ├── ThemeToggle.tsx │ │ │ └── VersionDisplay.tsx │ │ ├── demos/ │ │ │ └── SimpleAsciiDemo.tsx │ │ ├── features/ │ │ │ ├── AboutDialog.tsx │ │ │ ├── AccountButton.tsx │ │ │ ├── ActiveLayerIndicator.tsx │ │ │ ├── ActiveStyleSection.tsx │ │ │ ├── AnchorPointOverlay.tsx │ │ │ ├── AsciiBoxPanel.tsx │ │ │ ├── AsciiTypePanel.tsx │ │ │ ├── AsciiTypePreviewDialog.tsx │ │ │ ├── AuthButtons.tsx │ │ │ ├── BackgroundColorMappingSection.tsx │ │ │ ├── BezierActionButtons.tsx │ │ │ ├── BrushControls.tsx │ │ │ ├── BrushPreview.tsx │ │ │ ├── BrushSizePreviewOverlay.tsx │ │ │ ├── BubbleteaExportDialog.tsx │ │ │ ├── CanvasActionButtons.tsx │ │ │ ├── CanvasGrid.tsx │ │ │ ├── CanvasOverlay.tsx │ │ │ ├── CanvasRenderer.tsx │ │ │ ├── CanvasResizeDialog.tsx │ │ │ ├── CanvasSettings.tsx │ │ │ ├── CanvasSizePicker.tsx │ │ │ ├── CanvasWithShortcuts.tsx │ │ │ ├── CharacterMappingControls.tsx │ │ │ ├── CharacterMappingSection.tsx │ │ │ ├── CharacterPalette.tsx │ │ │ ├── CharacterPaletteEditor.tsx │ │ │ ├── ColorPicker.tsx │ │ │ ├── ColorPickerOverlay.tsx │ │ │ ├── ColorPicker_new.tsx │ │ │ ├── ColorReadout.tsx │ │ │ ├── EffectsSection.tsx │ │ │ ├── EnhancedCharacterPicker.tsx │ │ │ ├── ExportCharacterPaletteDialog.tsx │ │ │ ├── ExportImportButtons.tsx │ │ │ ├── ExportPaletteDialog.tsx │ │ │ ├── ForegroundBackgroundSelector.tsx │ │ │ ├── FullscreenToggle.tsx │ │ │ ├── GalleryMobileMenu.tsx │ │ │ ├── GeneratorsPanel.tsx │ │ │ ├── GeneratorsSection.tsx │ │ │ ├── GradientPanel.tsx │ │ │ ├── GradientPropertyPreview.tsx │ │ │ ├── GradientStopPicker.tsx │ │ │ ├── HamburgerMenu.tsx │ │ │ ├── HtmlExportDialog.tsx │ │ │ ├── ImageExportDialog.tsx │ │ │ ├── ImportCharacterPaletteDialog.tsx │ │ │ ├── ImportModal.tsx │ │ │ ├── ImportPaletteDialog.tsx │ │ │ ├── InkExportDialog.tsx │ │ │ ├── InlineProjectNameEditor.tsx │ │ │ ├── InteractiveBezierOverlay.tsx │ │ │ ├── InteractiveGradientOverlay.tsx │ │ │ ├── InteractiveVectorShapeOverlay.tsx │ │ │ ├── JsonExportDialog.tsx │ │ │ ├── KeyboardShortcutsDialog.tsx │ │ │ ├── LayerTransformOverlay.tsx │ │ │ ├── MCPConnectionDialog.tsx │ │ │ ├── MainCharacterPaletteSection.tsx │ │ │ ├── ManageCharacterPalettesDialog.tsx │ │ │ ├── ManagePalettesDialog.tsx │ │ │ ├── MediaImportPanel.tsx │ │ │ ├── MobileDialog.tsx │ │ │ ├── NewProjectDialog.tsx │ │ │ ├── OnionSkinControls.tsx │ │ │ ├── OpenTuiExportDialog.tsx │ │ │ ├── PastePreviewOverlay.tsx │ │ │ ├── PlaybackControls.tsx │ │ │ ├── PlaybackOverlay.tsx │ │ │ ├── PlaybackStatusBar.tsx │ │ │ ├── PostEffectsSection.tsx │ │ │ ├── PreprocessingSection.tsx │ │ │ ├── ProjectCanvasPreview.tsx │ │ │ ├── ProjectSettingsDialog.tsx │ │ │ ├── ProjectsDialog.tsx │ │ │ ├── PublishToGalleryDialogWrapper.tsx │ │ │ ├── PublishedProjectSaveWarningDialog.tsx │ │ │ ├── ReactExportDialog.tsx │ │ │ ├── SaveToCloudDialog.tsx │ │ │ ├── SessionExportDialog.tsx │ │ │ ├── SilentSaveHandler.tsx │ │ │ ├── TextColorMappingSection.tsx │ │ │ ├── TextExportDialog.tsx │ │ │ ├── TimelinePanel.tsx │ │ │ ├── ToolBehaviorSettings.tsx │ │ │ ├── ToolManager.tsx │ │ │ ├── ToolPalette.tsx │ │ │ ├── ToolPalette_backup.tsx │ │ │ ├── ToolPalette_new.tsx │ │ │ ├── ToolStatusManager.tsx │ │ │ ├── TransparencySection.tsx │ │ │ ├── UpgradeToProDialog.tsx │ │ │ ├── VideoExportDialog.tsx │ │ │ ├── WelcomeAsciiAnimation.tsx │ │ │ ├── WelcomeAsciiAnimationData.tsx │ │ │ ├── WelcomeDialog.tsx │ │ │ ├── ZoomControls.tsx │ │ │ ├── generators/ │ │ │ │ ├── DigitalRainSettings.tsx │ │ │ │ ├── GeneratorsMappingTab.tsx │ │ │ │ ├── ParticlePhysicsSettings.tsx │ │ │ │ ├── PlaceholderGeneratorSettings.tsx │ │ │ │ ├── RadioWavesSettings.tsx │ │ │ │ ├── RainDropsSettings.tsx │ │ │ │ └── TurbulentNoiseSettings.tsx │ │ │ ├── preview/ │ │ │ │ └── GeneratorPreviewCanvas.tsx │ │ │ └── timeline/ │ │ │ ├── ContentFrameBlock.tsx │ │ │ ├── EasingCurveEditor.tsx │ │ │ ├── EffectBlock.tsx │ │ │ ├── EffectPropertiesPanel.tsx │ │ │ ├── EffectTrackRow.tsx │ │ │ ├── FrameRateControl.tsx │ │ │ ├── GlobalEffectsTrackHeader.tsx │ │ │ ├── GroupHeader.tsx │ │ │ ├── GroupPropertiesPanel.tsx │ │ │ ├── KeyframeDiamond.tsx │ │ │ ├── KeyframeEditorPanel.tsx │ │ │ ├── LayerContextMenu.tsx │ │ │ ├── LayerList.tsx │ │ │ ├── LayerListItem.tsx │ │ │ ├── LayerMenu.tsx │ │ │ ├── LayerPropertiesPanel.tsx │ │ │ ├── PostEffectBlock.tsx │ │ │ ├── PostEffectPropertiesPanel.tsx │ │ │ ├── PostEffectsTrackHeader.tsx │ │ │ ├── TimecodeDisplay.tsx │ │ │ ├── TimelineContextMenu.tsx │ │ │ ├── TimelineResizeHandle.tsx │ │ │ ├── TimelineRuler.tsx │ │ │ ├── TimelineToolbar.tsx │ │ │ ├── TimelineTrackArea.tsx │ │ │ ├── timecodeUtils.ts │ │ │ └── timelineRulerUtils.ts │ │ ├── icons/ │ │ │ ├── DiscordIcon.tsx │ │ │ ├── GitHubIcon.tsx │ │ │ ├── GradientIcon.tsx │ │ │ ├── README.md │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tools/ │ │ │ ├── AsciiBoxTool.tsx │ │ │ ├── AsciiTypeTool.tsx │ │ │ ├── BezierShapeTool.tsx │ │ │ ├── DrawingTool.tsx │ │ │ ├── EllipseTool.tsx │ │ │ ├── EyedropperTool.tsx │ │ │ ├── FlipHorizontalTool.tsx │ │ │ ├── FlipVerticalTool.tsx │ │ │ ├── GradientFillTool.tsx │ │ │ ├── LassoTool.tsx │ │ │ ├── LayerTransformTool.tsx │ │ │ ├── MagicWandTool.tsx │ │ │ ├── PaintBucketTool.tsx │ │ │ ├── RectangleTool.tsx │ │ │ ├── SelectionTool.tsx │ │ │ ├── TextTool.tsx │ │ │ └── index.ts │ │ └── ui/ │ │ ├── alert.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── dialog.tsx │ │ ├── dropdown-menu.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── menubar.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── skeleton.tsx │ │ ├── slider.tsx │ │ ├── sonner.tsx │ │ ├── switch.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toggle.tsx │ │ └── tooltip.tsx │ ├── constants/ │ │ ├── bezierAutofill/ │ │ │ ├── ansiCharacters.ts │ │ │ ├── ansiCharacters_backup.ts │ │ │ ├── blockCharacters.ts │ │ │ ├── brailleCharacters.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── boxDrawingStyles.ts │ │ ├── colors.ts │ │ ├── defaultCharacterPalettes.ts │ │ ├── defaultPalettes.ts │ │ ├── effectsDefaults.ts │ │ ├── features.ts │ │ ├── figletFonts.ts │ │ ├── fonts.d.ts │ │ ├── fonts.ts │ │ ├── generators.ts │ │ ├── hotkeys.ts │ │ ├── index.ts │ │ ├── onionSkin.ts │ │ ├── postEffectDefaults.ts │ │ ├── shapeVectors.ts │ │ └── version.ts │ ├── contexts/ │ │ ├── CanvasContext/ │ │ │ ├── CanvasProvider.tsx │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ ├── useCanvasContext.ts │ │ │ └── useCanvasDimensions.ts │ │ ├── CanvasContext.ts │ │ ├── CanvasContext.tsx │ │ ├── ModalContext/ │ │ │ ├── ModalProvider.tsx │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ └── useModalContext.ts │ │ ├── ModalContext.ts │ │ ├── ModalContext.tsx │ │ ├── ThemeContext/ │ │ │ ├── ThemeProvider.tsx │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ └── useTheme.ts │ │ ├── ThemeContext.ts │ │ └── ThemeContext.tsx │ ├── hooks/ │ │ ├── useAdminProjectLoader.ts │ │ ├── useAnimationHistory.ts │ │ ├── useAsciiBoxTool.ts │ │ ├── useAsciiTypePlacement.ts │ │ ├── useAsciiTypeTool.ts │ │ ├── useCanvasDragAndDrop.ts │ │ ├── useCanvasLassoSelection.ts │ │ ├── useCanvasMagicWandSelection.ts │ │ ├── useCanvasMouseHandlers.ts │ │ ├── useCanvasRenderer.ts │ │ ├── useCanvasRenderer.ts.backup │ │ ├── useCanvasResize.ts │ │ ├── useCanvasSelection.ts │ │ ├── useCanvasState.ts │ │ ├── useCloudDialogState.ts │ │ ├── useCloudProjectActions.ts │ │ ├── useCompositedCanvas.ts │ │ ├── useCropToSelection.ts │ │ ├── useDrawingTool.ts │ │ ├── useEffectBlockHistory.ts │ │ ├── useFlipUtilities.ts │ │ ├── useFrameNavigation.ts │ │ ├── useFrameSynchronization.ts │ │ ├── useGeneratorPreview.ts │ │ ├── useGradientFillTool.ts │ │ ├── useHoverPreview.ts │ │ ├── useKeyboardShortcuts.ts │ │ ├── useKeyframeableProperty.ts │ │ ├── useLayerLimit.ts │ │ ├── useLayerTransformTool.ts │ │ ├── useLayoutState.ts │ │ ├── useMemoizedGrid.ts │ │ ├── useOnionSkinRenderer.ts │ │ ├── useOptimizedPlayback.ts │ │ ├── useOptimizedRender.ts │ │ ├── usePasteMode.ts │ │ ├── usePerformanceMonitor.ts │ │ ├── usePlaybackFpsMonitor.ts │ │ ├── usePlaybackOnlySnapshot.ts │ │ ├── usePostEffectBlockHistory.ts │ │ ├── usePostEffectsRenderer.ts │ │ ├── useProjectDialogState.ts │ │ ├── useProjectFileActions.ts │ │ ├── useScrubInput.ts │ │ ├── useSelectionSync.ts │ │ ├── useTextTool.ts │ │ ├── useTimelineHistory.ts │ │ ├── useToolBehavior.ts │ │ ├── useWelcomeDialog.ts │ │ └── useZoomControls.ts │ ├── index.css │ ├── index.css.backup │ ├── lib/ │ │ ├── figletClient.ts │ │ ├── premium-stub.ts │ │ └── utils.ts │ ├── main.tsx │ ├── mcp/ │ │ ├── client.ts │ │ ├── index.ts │ │ ├── store.ts │ │ ├── types.ts │ │ └── useMCPConnection.ts │ ├── pages/ │ │ ├── CommunityPage.tsx │ │ └── EditorPage.tsx │ ├── registry/ │ │ ├── effectRegistry.ts │ │ ├── effects/ │ │ │ ├── hueSaturation.ts │ │ │ ├── index.ts │ │ │ ├── levels.ts │ │ │ ├── motionTrails.ts │ │ │ ├── remapCharacters.ts │ │ │ ├── remapColors.ts │ │ │ ├── scatter.ts │ │ │ ├── waveWarp.ts │ │ │ └── wiggle.ts │ │ ├── postEffectRegistry.ts │ │ └── postEffects/ │ │ ├── blur.ts │ │ ├── chromaticAberration.ts │ │ ├── glow.ts │ │ ├── index.ts │ │ ├── pixelate.ts │ │ └── screenDistortion.ts │ ├── stores/ │ │ ├── animationStore.ts │ │ ├── animationStoreAdapter.ts │ │ ├── asciiBoxStore.ts │ │ ├── asciiTypeStore.ts │ │ ├── bezierStore.ts │ │ ├── canvasStore.ts │ │ ├── characterPaletteStore.ts │ │ ├── exportStore.ts │ │ ├── generatorsStore.ts │ │ ├── gradientStore.ts │ │ ├── importStore.ts │ │ ├── paletteStore.ts │ │ ├── playbackOnlyStore.ts │ │ ├── previewStore.ts │ │ ├── projectMetadataStore.ts │ │ ├── selectionStore.ts │ │ ├── timelineStore.ts │ │ └── toolStore.ts │ ├── styles/ │ │ └── bundled-fonts.css │ ├── types/ │ │ ├── easing.ts │ │ ├── effectBlock.ts │ │ ├── effects.ts │ │ ├── export.ts │ │ ├── generators.ts │ │ ├── index.ts │ │ ├── mp4box.d.ts │ │ ├── palette.ts │ │ ├── postEffect.ts │ │ ├── timeEffects.ts │ │ ├── timeline.ts │ │ └── welcomeDialog.ts │ ├── utils/ │ │ ├── asciiConverter.ts │ │ ├── bezierAutofillUtils.ts │ │ ├── bezierFillUtils.ts │ │ ├── bezierPathUtils.ts │ │ ├── bezierStrokeUtils.ts │ │ ├── boxDrawingEngine.ts │ │ ├── brushUtils.ts │ │ ├── canvasAnalysis.ts │ │ ├── canvasDPI.ts │ │ ├── canvasResizeUtils.ts │ │ ├── canvasSizeConversion.ts │ │ ├── canvasTextRendering.ts │ │ ├── characterPaletteValidation.ts │ │ ├── clipboardUtils.ts │ │ ├── colorConversion.ts │ │ ├── cropUtils.ts │ │ ├── directCanvasRenderer.ts │ │ ├── dirtyTracker.ts │ │ ├── effectKeyframeInterpolation.ts │ │ ├── effectsPipeline.ts │ │ ├── effectsProcessing.ts │ │ ├── exportDataCollector.ts │ │ ├── exportPixelCalculator.ts │ │ ├── exportRenderer.ts │ │ ├── fillArea.ts │ │ ├── flipUtils.ts │ │ ├── font/ │ │ │ ├── fontLoader.ts │ │ │ ├── fontRegistry.ts │ │ │ ├── index.ts │ │ │ ├── opentypePathConverter.ts │ │ │ └── types.ts │ │ ├── fontDetection.ts │ │ ├── fontLoader.ts │ │ ├── fontMetrics.ts │ │ ├── frameUtils.ts │ │ ├── generators/ │ │ │ ├── digitalRain.ts │ │ │ ├── generatorEngine.ts │ │ │ ├── particlePhysics.ts │ │ │ ├── radioWaves.ts │ │ │ ├── rainDrops.ts │ │ │ └── turbulentNoise.ts │ │ ├── gradientEngine.ts │ │ ├── gridColor.ts │ │ ├── kdTree.ts │ │ ├── layerCompositing.ts │ │ ├── layerLimits.ts │ │ ├── layerTransformUtils.ts │ │ ├── lineArtConverter.ts │ │ ├── mediaProcessor.ts │ │ ├── paletteValidation.ts │ │ ├── performance.ts │ │ ├── polygon.ts │ │ ├── postEffectsPipeline.ts │ │ ├── projectUtils.ts │ │ ├── renderScheduler.ts │ │ ├── selectionConstraint.ts │ │ ├── selectionUtils.ts │ │ ├── sessionImporter.ts │ │ ├── sessionMigration.ts │ │ ├── shapeBasedConverter.ts │ │ ├── svgExportUtils.ts │ │ ├── timeEffectsProcessing.ts │ │ ├── vectorShapeGeometry.ts │ │ └── webgl/ │ │ ├── WebGLPostProcessor.ts │ │ ├── commonShaders.ts │ │ ├── index.ts │ │ └── shaderCompiler.ts │ └── vite-env.d.ts ├── supabase/ │ ├── .gitignore │ └── config.toml ├── tailwind.config.js ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── vercel.json ├── vite.config.ts └── vitest.config.ts