Skip to content

Commit 7147a81

Browse files
authored
Implement unified menu authoring interface (#23)
## Summary ### User-facing changes - **Unified workspace:** Bind, Route, and Compile modes have been folded into a single primary canvas and inline inspector. - **Compile preview:** A new overlay honestly exposes DVD downsampling constraints (like transitioning from 8-bit alpha to a 4-color CLUT) while editing. - **Enhanced styling:** Added richer button states (Normal/Focus/Activate) and text typography controls to the inspector. ### Architecture - **Format scaling:** Established Blu-ray (HDMV/IG) as the primary authoring ceiling, with DVD/VCD as a graceful degradation floor. - **Multiplexing constraints:** Outlined the requirement for flawless I-frame sector alignment to support seamless branching (BOV) for fluid UI states. - **SPRM management:** Documented the need for reliable SPRM 1 and SPRM 2 manipulation by the compiler to support audio and subtitle stream selection. ## Test plan - [x] Mockups load cleanly in the browser without console errors. - [ ] Verify the unified canvas toggle behaviours (Compile Preview, Navigation Arrows, Safe Areas) function correctly. - [ ] Confirm the Compile Preview accurately reflects simulated DVD degradation limits. - [ ] Verify the mini-map and full navigation map accurately represent incoming and outgoing menu connections.
2 parents 33244cc + 762a12d commit 7147a81

48 files changed

Lines changed: 27211 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/agents/memory/edward-memory.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ Prefer structural facts over narration.
3131
- **Technical Trap**: Placeholder-based development can lead to 'Glossy but Broken' UI releases. All authored modes (Bind, Compile, Design, Remote) must be functional before a UI milestone is marked as 'Verified.'
3232
- **Validation Oracle**: The `execute_build_plan_smoke_authors_titleset_menu_return_path` test in the Rust plugin is the primary proof of a working end-to-end authoring loop.
3333
- **Architectural Boundary**: The project model and state are intentionally "format-agnostic" to support future Blu-ray, but implementation logic must remain strictly DVD-Video compliant for now.
34+
- **Product Strategy**: Blu-ray (HDMV/IG) is the primary authoring ceiling. DVD and VCD are targets for graceful degradation. The UI should hide complexity but honestly expose downsampling constraints via the Compile Preview.
35+
- **Technical Trap**: Fluid UI transitions simulated via seamless branching (timecode jumping) require absolute precision with I-frame alignment on sector boundaries to avoid laser seek "clunks".
3436

3537
## Open Questions
3638

docs/agents/memory/franklin-memory.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Prefer durable, reusable context over narration.
3434
- Trust and support surfaces should be checked alongside release surfaces; for example, diagnostics export can drift from runtime versioning even when the main app UI is current.
3535
- The shared filesystem-based agent communication layer now lives under `docs/agents/shared/`, with `context/` for Franklin/Edward broadcast state and `handoffs/<agent>/` inboxes for point-to-point JSON requests and responses.
3636
- The current laptop environment should be treated as container-first for verification work: when Rust tooling or mixed workspace validation is needed, prefer `ghcr.io/liminal-hq/tauri-dev-desktop:latest` rather than assuming host-installed Rust tools are available.
37+
- We have adopted Yuli's Set 2b unified menu editor design, establishing Blu-ray (HDMV/IG) as the primary authoring ceiling and DVD/VCD as a graceful degradation floor managed via the Compile Preview overlay.
38+
- Seamless branching (multiplexed BOV) for UI states and SPRM manipulation (`setAudioStream`, `setSubtitleStream`) are now confirmed backend requirements that the compiler and multiplexer must support reliably.
3739

3840
## Open Questions
3941

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Menu Editor Set 2b Format Scaling and Hardware Reality
2+
3+
## Strategic Context
4+
5+
The Spindle project targets Blu-ray (HDMV with Interactive Graphics/IG) as the primary authoring ceiling, and DVD (or VCD) as the graceful degradation floor. This approach shifts our design philosophy from "build for the lowest common denominator" to "design for premium and downsample gracefully."
6+
7+
## 1. The Blu-ray Baseline
8+
9+
Yuli's Set 2b designs, particularly the `Button Style` and `Text Style` panels, are completely valid under the Blu-ray specification. HDMV Interactive Graphics streams can handle:
10+
11+
- 8-bit color depth
12+
- 256 levels of alpha transparency
13+
- Rich interactive states (Focus and Activate)
14+
- Complex visual effects like soft drop shadows and glowing borders
15+
16+
## 2. Graceful Degradation (The Preview Compass)
17+
18+
If DVD is the floor, the interface must honestly manage the constraints.
19+
20+
- **Format-Aware Interface:** When a user specifies they are authoring only for DVD, the UI should gracefully fold away 8-bit alpha controls and present the 4-color CLUT (Color Look-Up Table).
21+
- **The Compile Preview Overlay:** When authoring for "Blu-ray + DVD Fallback", the `Compile Preview` overlay becomes the most vital compass in the application. Toggled via the `P` key, this overlay must show the user precisely how their rich Blu-ray UI will be downsampled (dithered into harsh blocks or flattened) when compiled to DVD subpictures. It translates BD ambition into DVD reality.
22+
23+
## 3. Seamless Branching for UI States (The Timecode Jump Illusion)
24+
25+
To achieve modern, fluid UI states on constrained optical formats, Spindle will employ seamless branching and multiplexed Button Over Video (BOV).
26+
27+
- **The Magic Trick:** By jumping the playhead to a different timecode in the background multiplex when a button is pressed, we can simulate "transitions."
28+
- **The Mechanical Reality:** This requires incredible precision with I-frame alignment. A timecode jump requires the laser to physically move across the platter. If jumps are not authored perfectly on sector boundaries, the user will experience a half-second black screen and a mechanical "clunk" instead of a fluid transition. Our multiplexing engine must be flawless.
29+
30+
## 4. SPRM Management and the Workspace
31+
32+
The auto-generated menus feature actions like `setAudioStream` and `setSubtitleStream`.
33+
34+
- **The User Experience:** The UI makes this look like a simple dropdown, hiding the complexity. This is the correct approach for the majority of users.
35+
- **The Under-the-Hood Reality:** Spindle must write `SetSystemStream` instructions to SPRM 1 and SPRM 2 in the virtual machine. The compiler logic must be ready to handle these new VM instructions before they are exposed.
36+
- **Advanced Scripting Mode:** We should reserve architectural space for a low-level scripting "advanced mode" (a trapdoor in the basement) where power users can manually manipulate player registers, but this is an extension beyond the v1 workspace.

0 commit comments

Comments
 (0)