Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4f80f59
docs(motion-menus): rewrite onto the shipped MenuDocument motion pipe…
ScottMorris Aug 19, 2026
1b636d4
docs(rich-menu-editor-plan): record per-slice implementation status
ScottMorris Aug 19, 2026
c79aaf5
docs(spec): cover shipped motion menus, animated highlights, and asse…
ScottMorris Aug 19, 2026
14bd8e7
docs(readme): list motion menus and animated highlights in the featur…
ScottMorris Aug 19, 2026
cb7bdca
docs(motion-menus): apply prettier formatting
ScottMorris Aug 19, 2026
60c9de2
docs(menus): true up motion docs after the review fixes
ScottMorris Aug 19, 2026
d12e8d1
docs(spec): describe the cumulative, persisted asset scope accurately
ScottMorris Aug 19, 2026
23a91ed
docs(spec): describe the stepped DVD lowering for eased highlight tracks
ScottMorris Aug 19, 2026
ca4da58
docs(rich-menu-editor-plan): mark Slice A partial pending profile-dri…
ScottMorris Aug 19, 2026
d58f55f
docs(rich-menu-editor-plan): mark Slice D partial pending opacity/act…
ScottMorris Aug 19, 2026
b660c7d
docs(motion-menus): correct the endpoint-clamp wording to match the i…
ScottMorris Aug 19, 2026
ee996bb
docs(motion-menus): describe the cumulative, persisted asset scope ac…
ScottMorris Aug 19, 2026
29cbc07
docs(motion-menus): true up preview sampling and the validation table
ScottMorris Aug 19, 2026
3701d17
docs: use Canadian spelling for synthesised/deserialise
ScottMorris Aug 19, 2026
354c86a
docs(motion-menus): true up preview/validation docs to the compiled-b…
ScottMorris Aug 19, 2026
295833f
docs(motion-menus): note the Linux blob-URL fallback for the canvas v…
ScottMorris Aug 19, 2026
4e7cc4c
docs(menus): qualify animation-diagnostic estimates and correct Slice…
ScottMorris Aug 19, 2026
701032a
docs(motion-menus): true up DCSQ sampling and audio-continuity claims
ScottMorris Aug 19, 2026
b5563f7
docs(motion-menus): scope the easing warning, note the density clamp …
ScottMorris Aug 19, 2026
ec855ff
docs(spec): scope the easing warning to highlight/activate tracks, dr…
ScottMorris Aug 19, 2026
78ceb44
docs(menus): qualify the overlay AA claim and Slice A's compile-previ…
ScottMorris Aug 19, 2026
33ee528
docs(motion-menus): fix Canadian spelling; describe opacity/position …
ScottMorris Aug 19, 2026
06aea8f
docs(spec): distinguish runtime asset grants from the static protocol…
ScottMorris Aug 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ Current DVD authoring capabilities include:

- titleset-aware project editing with drag-and-drop title organisation
- chapter seeding from source media plus chapter-targeted menu and end actions
- menu editing with authored scene documents, layers, motion timing support, and still-image composition nodes
- menu editing with authored scene documents, layers, still-image composition nodes, and motion menus with intro/loop timing, audio beds, and timeout actions
- animated button highlights authored as keyframe tracks on a timeline strip and compiled into the disc's subpicture stream
- semantic interaction graphs and remote-navigation preview simulation
- asset inspection with embedded metadata title surfacing, compatibility explanations, fix-oriented validation, and still-image imports for menu authoring
- DVD build planning and execution with diagnostics export and toolchain checks
Expand Down
27 changes: 16 additions & 11 deletions SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,9 @@ Someone who understands FFmpeg and DVD authoring basics and wants a better front
- **Scene-Driven Authoring**: Support for a full scene graph with layers, groups, and non-interactive nodes (Text, Image, Shape, Video).
- **Still-Image Authoring Assets**: Imported still-image assets can be used in menu backgrounds and image nodes without being exposed as valid title-source selections.
- **Integrated Motion Model**: Menus support an authored timing model (intro, loop, timeout) and background audio from day one.
- **Motion Menu Compilation**: Motion backgrounds compile end-to-end — intro and loop cells trimmed from the background video, an audio bed (authored asset, background audio, or silence), and loop-count/timeout behaviour authored into the disc's navigation commands.
- **Animated Highlights**: Keyframe tracks on button highlight/activate colour and opacity, lowered to timestamped subpicture schedules on DVD. The disc can only change a subpicture bitmap at a keyframe timestamp and holds each value until the next one, so a `linear`/`ease-in`/`ease-out`/`ease-in-out` track is evaluated identically in the editor and the build only for Hold easing (or in 'Honest Preview' — see below); the normal editor preview interpolates continuously between keyframes as a friendlier authoring view, and authoring a non-hold easing on a highlight/activate track of a DVD motion menu raises the `menu.animation-easing-quantised` warning (including on a track the planner ultimately drops as uncompiled — that track additionally gets `menu.animation-node-not-compiled`).
- **Timeline Editing**: A timeline strip under the canvas for scrubbing the motion background, retiming intro/loop regions, and editing keyframes.
- **Semantic Interaction**: Explicit focus routing and navigation mapping with remote simulation.
- **Advanced Action Model**: Support for stream selection (audio/subtitle) and action sequencing.
- **Target-Aware Compilation**: Honest compilation into DVD-safe assets with visible downgrade reporting and 'Honest Preview' diagnostics.
Expand Down Expand Up @@ -625,6 +628,7 @@ Examples include:

- Scene-driven authoring with layers and non-interactive nodes.
- Integrated motion model with timing, animation tracks, and background audio.
- Timeline-based editing of intro/loop regions and highlight keyframes against in-canvas video playback.
- Interactive hotspots with semantic playback actions.
- Theme-driven components (HeroTitleButton, ChapterThumbnailTile).
- Target-specific compile variant preview (DVD 4:3/16:9 safe-areas).
Expand Down Expand Up @@ -654,17 +658,15 @@ Each button should support:

The preview is not merely visual. It must also simulate remote-navigation logic so users can detect bad directional mappings.

Motion menus should be treated as a future expansion area rather than a v1 requirement.
Motion menus are implemented as an extension of the menu asset and compilation model rather than as a separate system. Current support includes:

Future support may include:
- motion-video backgrounds trimmed from an imported video asset
- looping menu audio from an authored audio bed, the background video's own audio, or synthesised silence
- clip-based menu intros that transition into looping states, with loop count and timeout actions
- animated button highlights driven by keyframe tracks (highlight and activated-state colour and opacity on DVD)
- motion-aware preview: in-canvas video playback, a timeline strip, and highlight animation sampled from the same tracks the build compiles

- motion-video backgrounds
- animated button states or menu elements where feasible
- looping menu audio
- clip-based menu intros that transition into looping states
- motion-aware preview and timing simulation

This should be architected as an extension of the menu asset and compilation model rather than as a completely separate system.
Remaining future motion work includes per-button video regions (motion thumbnails) and animated per-state button bitmaps where a target format supports them.

The application should plan for future assisted menu generation for common DVD structures.

Expand Down Expand Up @@ -1177,6 +1179,7 @@ This is a local-first desktop tool.
- Builds occur locally.
- No account is required.
- External tool execution should be constrained to known commands and validated arguments.
- The webview's media access is scoped: at project open, asset import, and relink, the app grants the embedded webview access to exactly the imported assets' source paths — these runtime grants add nothing broader on top of the static asset-protocol scope, which remains confined to `$APPCACHE/**` and `$APPDATA/**` (`apps/spindle/src-tauri/tauri.conf.json`). These grants are cumulative (nothing revokes an earlier path when a project closes, an asset is relinked, or a different project opens in the same process) and persisted across restarts (`tauri_plugin_persisted_scope`, registered in `apps/spindle/src-tauri/src/lib.rs`), so the scope is the union of every path ever granted, not a per-session allowlist. Revoking stale grants and dropping persistence is tracked as a follow-up (issue #129).

### 24.2 User trust

Expand Down Expand Up @@ -1205,6 +1208,8 @@ Because this app orchestrates binaries, the product should clearly communicate:
- chapter editing
- chapter seeding from source media
- Scene-driven menu system with authored documents and motion support
- motion menu authoring end-to-end: video backgrounds, audio beds, intro and loop segments, loop count and timeout actions
- animated button highlights via keyframe tracks, with a timeline editor for regions, scrubbing, and keyframes
- semantic navigation mapping with remote simulation
- chapter-targeted menu and title end actions
- direct titleset editing with compatibility guidance
Expand Down Expand Up @@ -1484,7 +1489,7 @@ To keep scope healthy, v1 should avoid overexposing deeper DVD command logic.

Recommended v1 scope:

- still menus only
- still and motion menus with explicit intro/loop timing (deeper temporal logic stays out of scope)
- one clear action per button
- basic end-action routing
- no deep VM command authoring UI
Expand Down Expand Up @@ -1652,7 +1657,7 @@ Any future support in this area should include:

## 30. Future Expansion

- motion menus
- motion button thumbnails: per-button video regions composited into motion backgrounds
- autogenerated title, chapter, audio-track, and subtitle-track menus
- theme-aware menu generation
- smarter bitrate optimisation
Expand Down
Loading
Loading