diff --git a/TODO.md b/TODO.md index 0a068eb..e0a9578 100644 --- a/TODO.md +++ b/TODO.md @@ -34,9 +34,11 @@ Queued 2026-08-21, from playing the StartOS build: Queued 2026-08-22, from playing on StartOS: -7. **Make "Games in Progress" readable** — nested groups rather than one run-on line per game, plus - sorting by name, start time or last move. Reasoning in Multiplayer below. Small, and it is the - action most used for actual administration. +7. **Make "Games in Progress" readable** — **ON HOLD, 2026-08-29 (Jesse).** StartOS 0.4.0.2 is + expected to improve how action results are displayed, which is most of what makes this unreadable + — so wait and see what the platform fixes before rewriting the action around a limitation that + may be gone. Re-open it against 0.4.0.2 and re-read the output before designing anything. + Reasoning in Multiplayer below. 8. **Give a player a way back into a game after losing their browser** — a fresh browser is still locked out of a RUNNING game, even though the server knows who they are. Reasoning in Multiplayer below; needs Jesse's call on whether a token in a URL is acceptable. **The lobby half of this was @@ -106,8 +108,16 @@ Queued 2026-08-22, from the v0.4.9e gameplay-testing report filed as Gitea issue Suppressed on the first frame, on Undo stepping back across a rollover, and on the Day the game ends — the outcome panel is the thing to read then. -13. **Show me the other players' moves, bots included** — raised by Jesse 2026-08-22 from playing a - multiplayer game. Reasoning in Multiplayer below. +13. **Watch the other players and the bots actually make their moves** — raised by Jesse + 2026-08-22, and **settled 2026-08-29 as the harder of the two readings**: "I want to be able to + watch other players and bots make their moves. It's not fun to do my turn and have magic happen + in the background and then have to figure out what others did." + + So this is not the log-legibility fix. It is the ordered, per-action presentation of everyone + else's turns — **the same mechanism Gitea#20 step 4 specifies for the common board**, routed to a + player's own screen as well. Jesse: "this relates to issue #20 and will require a lot more + thinking." Do not start it as a standalone piece; it wants designing with #20. Reasoning in + Multiplayer below. 14. **INVESTIGATE: stamp the history with wall-clock time** — even if nothing displays it yet, so "how long did that turn take" can be answered afterwards. Reasoning in Replay / Save Games below. @@ -235,6 +245,23 @@ Queued 2026-08-29, from building Gitea#11 and #16 (both shipped in v0.7.3, main folds a batch of events AFTER `advance` has already mutated past the moment they describe. Worth settling with the badge pass (#33) rather than on its own, since that is the only consumer. +37. ~~**Bump the StartOS wrapper to 0.7.3.**~~ — done 2026-08-29 (`74aea24` in + `station-master-startos`). Submodule pinned to `v0.7.3` (`45580d8`), `current.ts` at `0.7.3:0`, + release notes in all five locales, `README.md` and `instructions.md` updated. No new version file + and no migration — the outgoing `0.7.2:0`'s `up` was empty, `versions.md`'s common case, so + `current.ts` bumped in place. Verified: `npm run check` clean, prettier clean, `make x86` packs + as `v0.7.3:0`. **NOT installed on a box and not played** — see #35. + + **Unlike 0.7.2, games in progress survive this one**, and both docs lead with it. No card data + changed and the engine changes are additive, so every intent in a 0.7.2 save is still legal; + proven rather than assumed by `test/harness.test.ts`, which replays the three files in + `public/replays` (all recorded under an older ruleset) and asserts every intent still applies. + + **The v0.7.3 tag is made locally and signed, but not pushed** — agents cannot push to + `origin`. Until Jesse pushes it, the tag exists only here and in the wrapper's submodule clone; + the recorded pin is the commit SHA, which is already on `origin`, so the wrapper is not blocked + on it. + --- ## Replay / Save Games @@ -713,11 +740,31 @@ Deferred while planning the server; decisions and reasoning are in `docs/archite is a line of text. The Division map is the one shared picture, and it shows trains on the Mainline, not switching inside a district. - **Not yet established: which of the two Jesse means.** "I need to see other players' moves" fits - both "the history panel is not telling me" (a legibility problem — the panel scrolls, a bot can - take a dozen actions between your turns, and nothing marks where your last turn ended) and "I - want to watch their railroad" (a Frame problem). Ask before building: the first is an afternoon, - the second is a new view. + **ANSWERED 2026-08-29, and it is the harder reading.** Jesse: "I want to be able to watch other + players and bots make their moves. It's not fun to do my turn and have magic happen in the + background and then have to figure out what others did." So the complaint is not that the + history panel is hard to read — it is that the moves are not WATCHABLE. Marking the log is a + consolation prize, not the fix. + + **This is Gitea#20 step 4, pointed at a player's screen instead of the common board.** That + issue — the public common-board display published into Jitsi — already specifies the mechanism, + and `docs/plans/jitsi-common-board.md` §"Step 4 — Preserve individual human and bot actions" + has the design: a display-step collector inside `GameSession` that captures a projected frame + after EVERY successful `submit()`, human and bot alike, deltas it, and emits one step per + accepted intent (not one per `GameEvent` — an intent drains automatic work behind it, and the + event list is not a complete reducer). + + **The reason it is not simply free once #20 lands** is that the plan deliberately stops short + of here: *"Keep player pushes unchanged: players still receive the final coalesced result after + all immediately due bots finish."* Extending the step stream to seated players raises questions + the common board never has to answer — a spectator can be a second behind, a player waiting to + act cannot; and a player animating three bot turns while their own move is due is a game that + feels slower, which is the opposite of the complaint. **Jesse, 2026-08-29: "this relates to + issue #20 and will require a lot more thinking."** Design it with #20; do not start it alone. + + **The constraint below still binds either way**, and hardest here: the common board is seatless + and shows only public state, whereas a step stream sent to a SEATED player is a Frame, and + Frames are redacted per seat. **The constraint on the second**, and it is the one that must not be got wrong: a district's BOARD is public — cards on the table, cars standing on them, trains — and a player's HAND, @@ -784,8 +831,14 @@ Deferred while planning the server; decisions and reasoning are in `docs/archite not yet decided whether a token in a URL is acceptable; the alternative is a bare token pasted into a field, which is uglier and stays out of history. -- [ ] **The StartOS "Games in Progress" action is one long unreadable run-on per game.** Raised by - Jesse 2026-08-22 after using it against four games. Lives in the WRAPPER repo +- [ ] **The StartOS "Games in Progress" action is one long unreadable run-on per game.** + **ON HOLD, 2026-08-29 (Jesse): StartOS 0.4.0.2 should make action displays better.** The + diagnosis below is that the action-result view collapses newlines — which is exactly the sort + of thing a platform release fixes. Re-read the real output on 0.4.0.2 before building anything; + the nested-group rewrite may turn out to be unnecessary, and designing around a limitation that + has just been lifted is worse than waiting. + + Raised by Jesse 2026-08-22 after using it against four games. Lives in the WRAPPER repo (`station-master-startos`, `startos/actions/gamesInProgress.ts`), whose `AGENTS.md` says work belongs in issues on that repo rather than a `TODO.md` — recorded here because this is where the project's list actually is; move it if that policy is meant to bind.