Commit Graph

11 Commits

Author SHA1 Message Date
ejlewis daa5e9d655 fix(ui): polish terminal options and assets
ci/woodpecker/push/woodpecker Pipeline was successful
2026-05-10 07:00:22 -05:00
ejlewis 33933b00d7 fix(mystery): improve mobile terminal and chips
ci/woodpecker/push/woodpecker Pipeline was successful
2026-05-10 05:53:32 -05:00
ejlewis 2a9b6155ef feat(mystery): add opening and main-floor content 2026-05-09 21:51:12 -05:00
ejlewis 5f8e3b1a34 fix(ui): keep input typable post-end so player can type restart/undo
Disabling the input via the disabled attribute blocks keydown events
entirely, so players couldn't type 'restart' or 'undo' after reaching an
ending. Switch to a CSS class for the faded visual state; the keydown
handler already restricts post-end input to those two commands.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 15:06:37 -05:00
ejlewis e167979fa7 feat(ui): render ending lines distinctly and lock input on end-state
Ending-kind lines get a separator and italic styling. Once endedWith is
set, the terminal disables the input and rejects all commands except
restart and undo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 14:57:52 -05:00
ejlewis 157dd07c9c fix(mystery): letter doesn't open in foyer 2026-05-09 01:03:47 -05:00
ejlewis f75030e7ee fix(mystery): persist player input lines so they survive reload
appendLines() only updated the DOM, never state.transcript, so any
UI-originated line (player input, restart/undo/quit messages) vanished
on page reload. Engine narration was unaffected because dispatch()
already adds its lines to state.transcript.

Fix: appendLines() now pushes into state.transcript (capped at
TRANSCRIPT_CAP) and renders. Engine output uses renderAll() directly
since dispatch already added its lines to state.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 00:54:54 -05:00
ejlewis 9e49f1f519 feat(mystery): mobile chip computation and rendering
Pure computeChips function (TDD, 4 tests) generates context-aware direction/item/encounter/meta chips from game state; chip-render.ts wires chips to DOM; terminal.ts calls refreshChips on init, each Enter dispatch, restart, and undo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 00:18:25 -05:00
ejlewis 3c0c386bbe feat(mystery): theme toggle wiring with localStorage persistence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 00:14:15 -05:00
ejlewis 5f5dc6071b feat(mystery): terminal — input handling, dispatch wiring, autosave 2026-05-08 23:45:10 -05:00
ejlewis 96d3036c4d feat(mystery): /mystery route + CRT bezel + theme scaffold 2026-05-08 23:39:58 -05:00