v1.4.2 — Three.js 3D Layer System, Model Import & Effect Reordering - #67
Merged
Conversation
…e badge Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…sting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Central shortcut system with types, 6 NLE preset maps (MasterSelects, Premiere, DaVinci, FinalCut, After Effects, Beginner), HMR-safe singleton registry with key matching, and settingsStore integration for preset selection and custom overrides. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace hardcoded key checks in useTimelineKeyboard, Toolbar, and useGlobalHistory with registry.matches() calls. Add useShortcut convenience hook. Menu shortcut labels are now dynamic. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shows a dismissible card explaining how to use the AI Editor on first open after login. Persisted via hasSeenAIChatOnboarding in settingsStore so it only appears once. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New Settings > Shortcuts tab with: - NLE preset dropdown (MasterSelects, Premiere, DaVinci, FinalCut, AE, Beginner) - Searchable shortcut list grouped by category - Click-to-record key combos with conflict detection - Custom preset save/load/delete - Visual indicators for overridden shortcuts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When user picks Premiere/DaVinci/FinalCut/AE/Beginner in the welcome screen, the matching keyboard shortcut preset is now automatically applied. Also fixes lint error in ShortcutsSettings. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix ShortcutsSettings: compute effective shortcut map reactively from store state (activeShortcutPreset + shortcutOverrides) via useMemo instead of reading from singleton registry with stale memo - Remove double-scroll in shortcuts tab (remove max-height/overflow from .shortcut-list, let settings-content handle scrolling) - Merge Output, Performance, Preview, Import, MIDI, AI Features into General tab — fewer sidebar items, less clicking - Reorder sidebar: General first, then Shortcuts - Increase preferences dialog height from 480px to 720px Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace full-width Add Effect dropdown with compact layout: select takes remaining space, video/audio toggle buttons on the right. Audio effects show placeholder for now. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use isAudioEffect() to split effects list by toggle mode - Add AUDIO_EFFECT_PARAMS definitions for audio-volume and audio-eq - EffectParams falls back to audio param defs when not in GPU registry - Fixes "Unknown effect type" for audio-volume and audio-eq Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…me tab - EffectsTab now has video/audio toggle; audio mode renders VolumeTab inline - Remove separate "Volume"/"Audio" tab buttons from PropertiesPanel - Audio clips default to audio mode, video clips to video mode - Pass isAudioClip prop to EffectsTab for correct default mode - Video effects list now always excludes audio effects (no duplicate display) - Remove unused VolumeTab lazy import from index.tsx Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove skipEffects=isDraggingPlayhead — effects now render during timeline scrubbing for instant visual feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
After selecting a program in the welcome screen, shows a brief confirmation that shortcuts were adapted to the selected layout, with a note that the interactive tutorial is coming soon. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds menu entry at top of Info menu to re-open the welcome/NLE selection dialog for debugging and re-selecting shortcut presets. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ange Adds a new 'saveMode' setting: 'continuous' (default) or 'interval'. In continuous mode, every store change triggers a debounced 2s save to disk, so users never have to think about saving. Switching to 'interval' in settings restores the previous timer-based autosave behavior. Undo/redo is unaffected as it operates on in-memory snapshots. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…y area Right-clicking on empty space in the media panel (list view, grid view, or empty state) now shows a context menu with the same options as the Add dropdown: Import Media, Composition, Folder, Text, Solid, and Adjustment Layer (coming soon). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Reduce debounce from 2s to 1s for faster saves - Add beforeunload handler that flushes pending save on page close/refresh - Remove hasUnsavedChanges guard so continuous save always syncs stores - Add logging for continuous save events (fires, skips, flushes) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…fixes - Three.js integrated as isolated 3D scene renderer (renders to OffscreenCanvas → WebGPU compositor) - Per-clip 3D toggle (AE-style): layers become 3D planes with perspective camera - TransformTab shows 3D controls (Position Z, Rotation X/Y/Z, Scale Z) only when clip is 3D - AE-style rotation display: "2x +30.0°" with independently draggable multiplier and remainder - 3D model import: OBJ/glTF/GLB/FBX files as timeline clips (auto-3D, OBJLoader/GLTFLoader) - Model clips: wireframe debug toggle, default lighting, auto-center/normalize, restore after refresh - Effect drag-drop reordering via handle (drag only from ≡ icon, sliders unblocked) - Effect reorder store action (reorderClipEffect) with undo/redo support - DraggableNumber: clientX fallback when pointer lock fails (fixes unresponsive controls) - WebGPU init: adapter fallback without powerPreference, device fallback without limits, 5s timeouts - WebGPU init failure: clear error message instead of infinite spinner - Safari/Firefox: WebGPU detection instead of hardcoded browser block - 3D keyframe lanes hidden in 2D mode, track height calculated correctly - Timeline property values update dynamically when keyframes change - scale.z support through entire pipeline (interpolation, cache, layer builder, Three.js) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Research-verified shortcuts for all 4 NLE presets: Premiere Pro: - Loop: Ctrl+L (was Shift+L) - Clear In/Out: Ctrl+Shift+X (was X) - New Project: Ctrl+Alt+N (was Ctrl+N) - Redo: Ctrl+Shift+Z only DaVinci Resolve: - Loop: Ctrl+/ - Clear In/Out: Alt+X (was X) - No New/Open Project shortcuts (Project Manager only) - Redo: Ctrl+Shift+Z only Final Cut Pro: - Loop: Cmd+L (Ctrl+L) - Clear In/Out: Option+X (Alt+X) - No Save/Save As (FCP auto-saves) - Redo: Cmd+Shift+Z only After Effects: - No JKL shuttle (AE is not an NLE) - In/Out: B/N (work area begin/end) - Frame step: PageDown/PageUp + Ctrl+Arrow - Split: Ctrl+Shift+D - Blend modes: Shift+= / Shift+- (AE has this!) - No Razor tool, no loop toggle shortcut - Marker: Numpad * / Shift+8 - New Project: Ctrl+Alt+N Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add complete preset comparison table showing all 6 presets with per-action differences. Add customization section documenting the Settings UI features (preset selection, per-key override, custom presets, conflict detection, reset). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Export: add model layer branch + is3D/scale.z to ExportLayerBuilder
- Opacity/Blend: pass clip values to synthetic compositor layer (single 3D layer)
- scale.z keyframes: fix interpolation when baseTransform has no z
- Uniform scale ("All") includes Z for model clips
- Three.js: premultipliedAlpha=false for correct alpha compositing
- Add docs/Features/3D-Layers.md with full architecture & usage docs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- README: add OBJ/glTF/GLB/FBX to supported formats table - README: update GPU architecture note (Three.js lazy-loaded for 3D) - Feature README: add 3D Layer System to highlights and doc index - Feature README: add Three.js to technology stack Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… Cylinder, Torus, Cone) Adds a "Mesh" submenu to both the Add dropdown and right-click context menu in the Media Panel. Each primitive creates a MeshItem in the Meshes folder, which can be dragged to the timeline to create a 3D clip rendered via Three.js. - MeshItem type + meshItems in mediaStore with full CRUD and persistence - MeshClipSlice for timeline clip creation with is3D + meshType - ThreeSceneRenderer creates primitive geometries (Box, Sphere, Plane, etc.) - Full drag & drop pipeline from MediaPanel to Timeline - FileTypeIcon with 3D cube icon (small + large) - Project save/load support for meshItems Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…dd dropdown Changed overflow from hidden to visible on .media-context-menu and .add-dropdown-menu so the Mesh submenu can expand beyond the parent bounds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add model branch to buildNestedClipLayer (was returning null for model clips) - Add model loading in loadNestedClips and loadSubNestedClips (blob URL + is3D) - Set mediaFileId on model clips for nested comp file lookup - Replace require() with top-level imports in NestedCompRenderer - Add process3DLayersForNested for Three.js rendering inside nested comps - Add model passthrough in NestedCompRenderer.collectNestedLayerData Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Media-Panel.md: Add dropdown, context menu, drag types, store architecture - 3D-Layers.md: Primitive mesh creation section with geometry table, key files - Timeline.md: Mesh clips section, meshClipSlice in store architecture - README.md: Updated 3D Layer System highlight - Fix unused CameraConfig import in NestedCompRenderer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- NestedCompRenderer triggers Three.js lazy init when 3D layers found - Add model restore branch in loadState nested clip loading (both sub-nested and top-level) - Store update after model source set ensures render loop picks it up Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Version → 1.4.2 (version.ts, package.json, README, docs) - BUILD_NOTICE: "FINALLY REAL 3D" with supported 3D formats - Fix: WhatsNewDialog no longer overwrites BUILD_NOTICE title with Native Helper Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Deploying masterselects with
|
| Latest commit: |
4114b64
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://5cf74c57.masterselects.pages.dev |
| Branch Preview URL: | https://staging.masterselects.pages.dev |
- Hero stats table: 660KB gzip, 138k lines TS, 14 deps, 2400+ WGSL - Three.js badge added to tech stack - Subtitle: "Browser-based Video Compositor & 3D Engine" - 3D model formats highlighted in description Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
2x +30.0°display with independently draggable multiplier and remainderTest plan
🤖 Generated with Claude Code