• v0.5.4 689de2ff0f

    v0.5.4 — the map says whose railroad is whose

    Jesse.Markowitz released this 2026-08-21 21:12:25 +00:00 | 70 commits to main since this release

    Six things found playing the StartOS build, all of them the game telling
    you what it already knew.

    The lobby's Start button did not look disabled when it was. The reported
    symptom was "it says it's waiting for a player but Start is enabled" — it
    wasn't: the note and the disabled assignment are two lines apart in the
    same block. The page had only header button:disabled and #actions button:disabled, and #lb-start is in neither, so a disabled button kept
    its normal face AND still lit up under the cursor from the generic
    button:hover. It advertised a click it would refuse. The rule is generic
    now.

    The game code was rendered as "— code TRESTLE-5109" in dim text beside a
    heading, reading like a reference number rather than the thing you have to
    send somebody. It is a labelled block at 22px with a Copy button, and a
    clipboard refusal says the code can be selected instead of failing
    silently. The blurb under it was also WRONG — it claimed the chairs were
    "in the order everyone joined", which stopped being true in v0.4.1 when the
    §4.4 D12 started deciding. It now says what actually happens.

    Every Office on the Division map was labelled with its tier, which every
    other player's Office also has, so four districts read identically and
    "where does Bob sit" had no answer on the one map showing where trains are.
    The owner's name takes the headline and the tier moves beside the A/D
    count. Amber marks whose move it is — the same "happening here" the action
    panel uses — and "(you)" is spelled out on the reader's own district,
    because colour alone cannot say which of four railroads is yours. Turn
    colour wins over the you-colour when both apply: whose turn it is changes
    every few seconds, which railroad is yours never does.

    Under the map, the chain in words with the roll behind it: "West to East:
    Alice (1) → Bot 2 (5) → Bot 1 (11)". state.openingRolls has been kept for
    exactly this since v0.4.1 and nothing had displayed it. It also answers
    "is the host always at the eastern end" outright — no. Alice there is the
    host, rolled lowest, and sits at the western end.

    Supporting: Frame gained viewer and viewerSeat. Every private field on it
    was already scoped to one player, but nothing said which player, so a page
    could draw a railroad without being able to say whose it was — harmless in
    solitaire, the first question at four seats. Frame also gained
    openingRolls. Bots are Bot 1 / Bot 2 rather than all Bot, since two of them
    are two different railroads. The standalone replay gets all of it: players,
    actor and viewer are not delta'd keys in compress, so they ride whole on
    every frame and replay.ts passes the same roster.

    Verified: 673 tests pass (668 + 5). The new ones were mutation-checked —
    removing the (you) suffix, never applying the turn mark, and reinstating
    the pre-v0.4.1 identity seating each fail the suite. The seating test
    deliberately asserts across six seeds that the eastern end is NOT always
    player 0, which is the claim it exists to defend.

    Downloads