clone

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

main
miau-is-true / openspec / changes / archive / 2026-09-24-fix-miau-forward-facing / specs / game-presentation / spec.md
spec.md 3.2K rendered
1## MODIFIED Requirements23### Requirement: Supported character glyphs SHALL use scoped facing state4The presentation SHALL maintain horizontal facing per entity ID as visual state separate from simulation coordinates. The built-in MIAU 🐈 SHALL have native left-facing direction, including when a pack repeats that same glyph as a plain palette string. A mod palette object MAY declare `faces: 'left' | 'right'` for another profile glyph; a different plain string and a front-facing glyph such as FENN 🦊 SHALL remain non-directional by default. Every accepted horizontal displacement SHALL update a directional entity's facing to its travel direction, including being pushed. When a pushed entity also moves itself horizontally in the same turn, its self-movement direction SHALL take precedence. Vertical movement, transformation, idle frames, and blocked intents SHALL preserve prior horizontal facing. Undo SHALL restore per-ID facing history, while loading or resetting a level SHALL use its native declared or neutral facing. A facing change MAY use a glyph-only squash; reduced motion SHALL apply the direction immediately.56#### Scenario: Built-in cat faces forward in every pack7- **WHEN** a MIAU entity with the built-in 🐈 glyph moves right in a core proof or a pack with `palette.MIAU: '🐈'`8- **THEN** the settled board mirrors the native-left glyph to face right, without mirroring its cell, shadow, or text910#### Scenario: Leftward travel uses the native pose11- **WHEN** that MIAU entity subsequently moves left12- **THEN** the settled board draws the native-left glyph without a mirror1314#### Scenario: Pushes turn a directional actor15- **WHEN** a directional entity is successfully pushed one cell to the right16- **THEN** its settled horizontal facing is right, while a blocked push leaves its prior facing unchanged1718#### Scenario: Self-movement wins after a push19- **WHEN** one accepted turn pushes an actor right and then moves that actor left under an automaton rule20- **THEN** the actor's settled horizontal facing is left2122#### Scenario: Vertical movement preserves the horizontal pose23- **WHEN** a MIAU entity moves up or down after facing right24- **THEN** its horizontal glyph orientation remains right because the side-profile emoji has no vertical view2526#### Scenario: A transformation preserves per-ID facing27- **WHEN** an entity transforms to another noun during a settled turn28- **THEN** the entity ID retains its prior horizontal facing, unless the resulting noun has no directional glyph and uses its normal fallback2930#### Scenario: A custom mod glyph opts in explicitly31- **WHEN** a mod supplies a different profile glyph with `faces: 'right'`32- **THEN** leftward travel mirrors that glyph, while a different plain-string glyph is not mirrored3334#### Scenario: Undo and reset restore the correct pose35- **WHEN** the player undoes a directional turn or resets/loads a level36- **THEN** Undo restores the prior per-ID facing, and reset/load returns MIAU to the declared native-left pose3738#### Scenario: Reduced motion skips facing animation39- **WHEN** reduced motion is enabled and a horizontal move changes facing40- **THEN** the settled glyph faces its direction immediately without a transitional squash