Show the build, play from the keyboard, and clean up the ledger
Five things from the second playtest. A status line at the top of every screen: the game, the pack, your current title, and the version plus the commit it came from. `tools/stamp.js` writes the commit into src/build-info.js before serving and before building, so a distributed dist/theladder.html states exactly which commit produced it. An uncommitted working tree gets a `+` suffix — "4cab9fc+" is honest in a way a bare SHA would not be. The whole game is now playable on Enter. Every screen marks one control and the app focuses it after each render: the first *available* option while choosing, the next-turn button once the result is in, "keep going" on the retrospective. Tab and Shift+Tab reach the other options. Locked options needed no special handling — the browser's tab order already skips disabled controls, so they stay visible without being in the way. "What is notable? under What changed?" — two fixes. `notable` is the retrospective's own list of moments; a display rule can now say `inLedger: false` and it is left out, because "Notable — changed" tells nobody anything. Flags are the opposite and stay, but as sentences the pack supplies rather than as booleans: "The envelope is in your locker." instead of "the envelope: now true". Exported logs live in logs/, gitignored, and `npm run analyze` reads the newest one there when given no argument. A log records what a real person did turn by turn, including whatever they typed into the feedback box — committing one once would put it in the history for good. Version set to 0.3.0 on the reasoning that the engine was 0.1 and the interface 0.2; say if you want a different scheme and I will renumber. 119 tests. Reasoning in docs/DECISIONS.md §25-28. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VMSFHyVPitUoosW5wyEADj
This commit is contained in:
co-authored by
Claude Opus 5
parent
4cab9fc41e
commit
76072edf4e
@@ -31,6 +31,8 @@ currently playable only from a test harness.
|
||||
| Calendar, scheduled wages and rent | done |
|
||||
| Promotion from the mailroom to Dispatch | done |
|
||||
| Repetition analytics (`npm run analyze`) | done |
|
||||
| Version and build shown on screen | done |
|
||||
| Keyboard play (Enter / Tab) | done |
|
||||
| Played in a real browser | done — first playtest 2026-09-09 |
|
||||
|
||||
The first playtest confirmed the interface, saves and the exported log all work
|
||||
@@ -49,6 +51,11 @@ it.**
|
||||
npm run serve # then open http://localhost:8080
|
||||
```
|
||||
|
||||
The game plays from the keyboard: Enter takes the focused option, Enter again
|
||||
moves to the next day, and Tab / Shift+Tab pick a different option. The top of
|
||||
every screen names the game, the pack, your current title, and the version and
|
||||
commit you are running.
|
||||
|
||||
A server is needed during development because browsers refuse ES module imports
|
||||
over `file://`. If port 8080 is taken, run `python3 -m http.server <port>`
|
||||
instead.
|
||||
@@ -63,7 +70,7 @@ That is one self-contained file with the stylesheet and every module inlined.
|
||||
It plays by double-clicking it — no server, no network, nothing installed.
|
||||
|
||||
```sh
|
||||
npm test # 114 tests: engine, content, UI wiring, and the build
|
||||
npm test # 119 tests: engine, content, UI wiring, and the build
|
||||
```
|
||||
|
||||
To see what a playtest actually did — turns against distinct situations, how
|
||||
@@ -71,9 +78,13 @@ often each recurred, which locked gates players kept meeting, and anything they
|
||||
typed into the feedback box:
|
||||
|
||||
```sh
|
||||
npm run analyze -- theladder-feedback-2026-09-10-11-04-22.json
|
||||
npm run analyze # the newest export in logs/
|
||||
npm run analyze -- <file> # a specific one
|
||||
```
|
||||
|
||||
Drop exports into `logs/`. They are gitignored — a log is a record of what a
|
||||
real person did, including anything they typed into the feedback box.
|
||||
|
||||
There are no runtime dependencies and no build step for development. Node is
|
||||
used only to run the tests, the single-file build, and the log analyser.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user