clone

a browser grid puzzle game where you push words around to rewrite the rules of each level

Plan D22 motion for remaining menu scenes

Dami committed 58a90aa
commit
58a90aa96da287064b7563c22549f9bc97911066
parent
6f9d78ffd0466c0aa4c69facc6eaa56a888ca13f
author
Dami <dami.etoile@gmail.com>
1 file changed, +11 -1
Mopenspec/changes/animate-stage-motion-language/design.md12+++++++++++-
M openspec/changes/animate-stage-motion-language/design.md +11 -1
@@ -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.