Skip to content

Releases

v0.33.11

Choose a tag to compare

@dkdev24 dkdev24 released this 26 Oct 04:52

Behind-the-scenes toolchain update: build and test tooling moved to Node 24 LTS (.nvmrc 24.22.1, @types/node ^24). The game and site are unchanged.

v0.33.3 — Hall of Fame sweep is capacity-based, not age-based

Choose a tag to compare

@dkdev24 dkdev24 released this 27 Aug 01:50

Fixed

  • Unfinished runs stayed on the board instead of being swept a day after your last move. The board's cleanup previously deleted any in-progress run once it was more than 24 hours old — and since finishing the game is rare, nearly every run is "in progress," so the whole board would empty out roughly a day after each play session. In-progress runs are no longer removed on age alone; they stay until the board holds more than 20 of them, and even then only the oldest excess ones, older than 30 days, are cleared out. Finished runs were never affected and still stay forever.

v0.33.2 — the board's default name is the Hero you picked

Choose a tag to compare

@dkdev24 dkdev24 released this 24 Aug 15:36

Changed

  • An untouched "Name on the board" field now submits your Hero's name, not Anonymous. The
    field's placeholder shows the Hero currently picked and follows the pick live if you switch
    characters before pressing Begin. Typing a name of your own still overrides it, exactly as
    before; reopening the picker (/cast, or resuming a save) still shows the field blank rather
    than pre-filled when the stored name is just the Hero's name going unchanged.

v0.29.1 — the board gets column headings

Choose a tag to compare

@dkdev24 dkdev24 released this 23 Aug 07:01

Changed

  • The Hall of Fame board now says what its columns are — rank, player, score and moves — so the
    numbers read without being guessed at. On a phone, where the rows stack instead of lining up in
    columns, the headings are left off: they would be labelling nothing.
  • The front page has one "start playing" button per screenful instead of two. The changelog
    section's copy is gone; the Hall of Fame's is right above it and does the same job.

Fixed

  • The Hall of Fame button's label sat too high. It now sits centred, like the one at the top of
    the page always did.

v0.29.0 — the Hall of Fame

Choose a tag to compare

@dkdev24 dkdev24 released this 23 Aug 06:32

Added

  • A Hall of Fame board on the front page. Every run that starts appears on it — how far it got,
    in score and moves — with runs being played right now marked PLAYING NOW, and finished runs
    ranked above the rest by move count. Nobody has finished the game yet, so the board is a list of
    attempts for the moment, which is the point: it shows that people are playing.
  • A name of your own, asked for once, on the screen where you choose your characters. It is
    optional, twelve characters, and an untouched field simply reads Anonymous. A checkbox on the
    same screen keeps your run off the board entirely — untick it and nothing about your game is ever
    sent anywhere.
  • A flag beside each name. It comes from the country the request arrives from and is never more
    than that: no account, no address stored, nothing that identifies a person. A run is a name, a
    country, a score, a move count, and the times it started and was last seen.

Notes

  • The board is an arcade cabinet, not a record book. It cannot tell an honest run from an invented
    one, and it does not pretend to — the machines it imitates could not either.

v0.28.4 — The comic finally notices when you die

Choose a tag to compare

@dkdev24 dkdev24 released this 22 Aug 16:47

Fixed

  • Dying is now a moment in the comic. Zork kills you often, and the strip had never once
    reacted: the frame reserved for it was going to the quit command instead, so the Hero pulled a
    face when the player left the game and none at all when a troll removed his head. A death now gets
    what it always should have — the killing blow, the "you have died" banner, and then a panel holding
    on the Hero's face, in the room it happened in, before the game drops him somewhere else.
  • Winning is something you can read. The barrow's closing speech — the reward for the whole game
    — was being drawn as six cramped close-ups of two people talking. The speech is now laid out to be
    read, and the Hero's delighted reaction is the panel that follows it.
  • Quitting is no longer treated as a feeling. The strip still ends on the Hero when you quit; he
    just no longer emotes about it.

Also in this release

v0.28.0–v0.28.3 were never tagged, so upgrading from v0.27.6 brings them too:

  • v0.28.3 — the Hero is not, in fact, mostly annoyed
  • v0.28.2 — the death frame is its own frame
  • v0.28.1 — a close-up means the same thing for everyone
  • v0.28.0 — choose your cast

v0.27.6 — The ending gets its own backdrop

Choose a tag to compare

@dkdev24 dkdev24 released this 22 Aug 10:09

Added

  • The barrow interior is drawn. Winning the game now renders against the barrow-interior
    backdrop instead of the barrow's outside wall. The art shipped with the backdrop pass months ago
    but nothing had ever referenced it — Zork I models no room inside the barrow, so there was no
    room id to key it on. The winning frames are keyed on the win itself; the frame the Hero speaks
    his last line from, at the door, is still the exterior.

Changed — repository preparation for the public release

  • docs/ reorganized. A new docs/README.md index says which documents are specifications,
    which are working documents, and which are history; four superseded planning documents moved to
    docs/archive/ with a note on what replaced each.
  • The root README rewritten for someone arriving cold: what the project is, a sample comic
    strip, a link to the live site, a status table, and how to run it locally.
  • verification/README.md added — how parity is established against the original 1980s binary,
    and what "143/143 strict" does and does not mean.
  • Licensing accuracy. NOTICE and THIRD_PARTY.md now record that Comic Chat's character art
    is decoded and redistributed as the sprite sheets the browser draws, and separate it from the
    room backdrops in the same folder, which are original assets. The Comic Neue font ships with its
    OFL license text, as OFL-1.1 requires.

The project remains under the Apache License 2.0.

v0.27.5 — The ending reaches the comic pane

Choose a tag to compare

@dkdev24 dkdev24 released this 22 Aug 08:43

Fixed

  • The ending of Zork I is now a comic. Winning the game — walking west into the Stone Barrow —
    closed the comic pane on a single balloon reading "Inside the Barrow". Everything the ending is
    for was dropped: the cavern, the footbridge, the sign, and the ZORK II/III sign-off. The win now
    reads whole, across six panels, in its own frame with its own name box.
  • Winning no longer looks like dying. The one victory in the game drew a terrified Hero, because
    the affect table fired its death marker on any game-over and ignored the outcome the event carries.
    A win now gets its own marker — a smiling Hero, waving.

Notes

The concatenated transcript text is unchanged: Zork I parity holds at 143/143 strict. Engine 148
tests, web 335, pixel gate 24/24 clean.

v0.27.0 — The dark is dark

Choose a tag to compare

@dkdev24 dkdev24 released this 05 Aug 16:36

Added

  • A pitch-black room now looks pitch black. Walk into the cellar without a lamp and the comic
    panel goes black: no room drawn, no figures, just the balloons over the dark. Until now the panel
    cheerfully showed you the cellar while the narration insisted you could not see a thing. Striking
    the lamp is its own panel — the reveal reads as a reveal, and the room finally gets its name box.

Fixed

  • Typing a command on a desktop browser no longer loses the input focus (a regression from the
    mobile keyboard-dismiss fix).
  • inventory and look no longer cut the Dungeon Master's balloon down to its first line.

Changed

  • The comic pane's title now tells you which version you are playing — Grues in Comic v0.27.0
    BETA — instead of naming the software it was built from.
  • Cookieless visitor analytics on the site pages. No cookies, no personal data.

v0.17.2 — Initial internal release

Pre-release

Choose a tag to compare

@dkdev24 dkdev24 released this 22 Jul 08:02

Initial internal release. The repository is private and pre-public — 1.0.0 is reserved for public
launch (repo goes public + website ships). This tag marks the first checkpoint worth cutting after
strong progress across the importer, engine, and comic presentation.

Major achievements so far

  • AI-assisted modernization pipeline. Two historical Microsoft open-source projects (Zork I ZIL,
    MS Comic Chat) modernized into a browser-native adventure engine via an Intermediate Representation —
    extract semantics, execute the IR, never emulate the runtime. ZIL S-expression importer → IR schema +
    validator → zero-dependency TypeScript engine.
  • Engine parity: 143/143 strict. The engine replays 11 golden walkthroughs turn-for-turn against
    the original Release 119 transcripts with full strict parity. (Gate C — engine complete — claimed at
    v0.9.0.)
  • The game is completable: 350/350. The engine wins Zork I end-to-end, scoring 350/350 and ending
    in Stone Barrow with a game-over{victory}, zero crashes/deaths, pinned by a completion test.
  • Comic Chat presentation. A browser-native comic pane beside the live console: art decode/pose/pack
    pipeline, backdrops, panel sequencing (a faithful CUnitPanelPage port), character portraits, and a
    Narrative Director that edits the turn stream into a past-tense story (drops refusals, collapses
    backtracks, gives the Guide a voice).

This release (v0.17.2)

  • Speech-balloon tails now connect to their speaker instead of ending in mid-air.
  • A whole comic panel is readable without scrolling on portrait mobile — including with the on-screen
    keyboard up — by capping panel height to the pane and hiding the member list where space is tight.

Tests: 113 web · ~129 engine · 193 IR · 143/143 strict transcript parity.