- commit
- 58a90aa96da287064b7563c22549f9bc97911066
- parent
- 6f9d78ffd0466c0aa4c69facc6eaa56a888ca13f
- author
- Dami <dami.etoile@gmail.com>
| M | openspec/ | 12 | +++++++++++- |
@@ -1,6 +1,6 @@
11 ## Context22 3-The engine already emits settled turns and the presentation layer owns visual effects. D22 in `docs/design.md` defines timing and ordering. Current `src/stage.js` reads `performance.now()` directly, and several visual effects use requestAnimationFrame or timers independently. Input has its own repeat clock. Win and Pause draw through `src/render/stage-overlays.js`.3+The engine emits settled turns and the presentation layer owns visual effects. D22 in `docs/design.md` defines timing and ordering. The stage now uses an explicit presentation clock while input keeps its own repeat clock. Pause and Win have separate renderers and scene phases; Title, INDEX, Gift, and Workshop still need the same coherent entry and exit feedback.44 55 ## Decisions66 @@ -16,6 +16,16 @@ Pause entry, active navigation, select, and exit are distinct phases. An exit ca
1616 1717 The winning cell comes from the settled event/board frame, not a guessed grid location. Word skid uses an actual pushed-word movement. Ledger entering/leaving spans use their physical sentence IDs. Step roll compares consecutive settled move counts and rolls down on Undo. These effects never change simulation state or hit geometry.1818 19+### Roll the menu language through the remaining scenes20+21+Extend the pure menu motion helpers with a shared opening, settled, and exiting contract. Stage owns each scene's presentation generation and captures a single exit action; it ignores further navigation until the exit completes. Existing scene controllers continue to own selection and pointer geometry.22+23+1. Title and INDEX reuse their tile drop and node pop while gaining a coordinated scene shell and reverse exit. Their hit targets remain fixed to settled geometry throughout motion.24+2. Gift gains a card slam and a 16px fall on exit. Details expansion stays within the scene; only leaving actions wait for exit.25+3. Workshop gains list and shell entry/exit. Notes, import/share/export, and remove confirmation remain local interactions; Back and Play wait for exit. Modal motion can follow after the base list flow.26+27+Each slice must show intermediate and settled frames under `?slowmo=8`, immediate reduced-motion end states, and unchanged keyboard/touch/pointer targets. The stage event boundary stays separate from renderers so the stage shell does not absorb scene-specific drawing code.28+1929 ### Test state and visual timing separately2030 2131 Pure phase/timing helpers get deterministic tests. Browser tests exercise input rejection during exit, skip-then-continue, reduced motion, and representative intermediate frames under `?slowmo=8`. Final settled frames retain legible copy and touch targets.