The eye icon in the track labels was not responding to clicks because
the onClick handler was placed directly on HugeiconsIcon which doesn't
forward click events to the underlying SVG. Fixed by wrapping the icon
in a button element.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use linear interpolation for resampling instead of nearest neighbor
- Clamp output samples to [-1, 1] range to prevent distortion from
overlapping audio clips exceeding valid amplitude range
This should reduce audio artifacts in exported videos, especially
when multiple audio sources overlap.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The VideoCache was creating Input objects but not storing them,
so input.dispose() was never called. This caused WebCodecs
VideoDecoder resources to leak, leading to browser crashes
during video playback.
Changes:
- Store Input object in VideoSinkData
- Call input.dispose() on initialization errors
- Call input.dispose() when clearing video from cache
- Clear frame references when disposing
This follows the same pattern as AudioManager which properly
manages Input disposal.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Creates a new /about page with:
- Project mission and vision
- Key features overview
- Open source information
- Community links
- Call to action
Updates footer to link to /about instead of GitHub README.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a "cut-selected" action that copies selected elements to
clipboard and then deletes them, enabling standard cut behavior.
Note: Drag/drop elements to other tracks was already implemented.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Validates file sizes before processing media uploads:
- Image limit: 50MB
- Video limit: 500MB
- Audio limit: 100MB
Shows clear error messages with actual file size when exceeded.
Valid files still process even when some files are rejected.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add LinkSquare02Icon to grid and list views on Projects page
- Icon appears on hover and opens project editor in new tab
- Prevents default link navigation to allow new tab opening
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add theme toggle to Projects page header (#689)
- Fix nested button HTML validation errors in header and hero (#687)
- Use asChild prop to render Links with button styles
- Add ability to add multiple keyboard shortcuts per action (#696)
- New "+" button to add additional shortcuts
- Replace mode only removes the specific key being edited
- Right-click to remove a shortcut when multiple exist
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: major editor overhaul (assets, properties, timeline, fonts)
Refactor editor core systems to standardize UI architecture and improve performance.
Assets & Properties:
- Replace monolithic property items with composable `Section` architecture.
- Add specialized sections for Transform, Blending, and Text.
- Implement `NumberField` with scrubbing and math evaluation.
- Add new ColorPicker with EyeDropper and multiple format support.
- Standardize asset panels using new `PanelView` layout.
Fonts & Stickers:
- Implement custom font atlas/sprite system for high-performance previews.
- Add virtualized FontPicker with search and favorites.
- Refactor stickers to use a provider-based architecture (icons, emoji, flags, shapes).
- Standardize sticker IDs to `provider:value` format.
Timeline & Interaction:
- Convert bookmarks to rich objects with notes, colors, and duration.
- Refactor drag-and-drop to use Command pattern (enabling proper undo/redo).
- Add Shift modifier to disable snapping during moves/resizes.
- Add new overlays for layout guides and text editing.
Renderer:
- Add support for multi-line text, custom line-height, and letter-spacing.
- Implement global composite operation (blend modes).
- Update sticker node to resolve dynamic provider IDs.
Infrastructure:
- Add storage migrations (v3->v6) for text weights, sticker IDs, and bookmarks.
- Update global styles and core UI components (Button, Input, Popover).
* add ts-nocheck directive to settings-legacy.tsx to suppress TypeScript errors
* fix: correct global composite operation assignment in TextNode to ensure proper blend mode handling
* deleted shadcn components with errors
* formatting
* fix linter issues
* migrate from next middleware to proxy
* add missing component back
* add breadcrumb back
* chore: add @radix-ui/react-primitive deps
* chore: more deps
* chore: add missing env vars to bun-ci
* next env