Repository navigation
AGI IS HERE 1.2.2
Original Sierra games can now be edited, MIDI exports sound like the game, and errors say what happened in plain words. Dependencies are refreshed to their latest releases.
Editing original games
Edits to King's Quest I and IV, Manhunter 1 and 2 (DOS and Amiga), Space Quest II (DOS, Amiga and IIgs) and Space Quest I for the Amiga were refused with messages such as "Candidate source claims do not reproduce the candidate's native bytes". Each game ships records nothing ever loads: directory entries past the end of a volume, entries pointing into other records, filler entries, and logics that load or enter logics the release never shipped. None of these is a misreading on our side; docs/testing.md "Fixture notes" records the evidence.
Authoring now records what the base game already had and refuses only damage an edit introduces. Pre-existing defects carry forward byte for byte, a no-op yields zero changes, and the Agent names them calmly ("Two sounds in this game (215 and 216) cannot be read, so they stay as they are."). A room exit to a missing room that a game already had now warns in Problems instead of blocking every edit; a new one is still refused while room generation is off. Refusals name the cause and the next step.
Authentic MIDI export
MIDI export rounded each note to the nearest A440 semitone. King's Quest I's theme sits about 48 cents off A440, so 53 of its 233 notes landed a semitone off their neighbours. Export now keeps each sound's own tuning: note names share one offset, a pitch bend per note plays each chip divisor's exact frequency (within 1 cent), and our files re-import to identical divisors. Sounds with raw events export with those events silent and a notice instead of being refused.
Plain words, no silent endings
- Provider failures (key, permission, credit, rate limit, unavailable, model, request too large, offline, timeout) map from the SDKs' error classes and status codes to one plain sentence with a next step, in the agent panel, Create with AI, room building and image Generate. Raw text stays in Activity.
- When a tool batch ends in
finishafter an earlier call failed, the finish is refused and the model reads the failure first, in the workspace agent, remix, room building and genesis. A turn that ends with no change and no reply says so; the spend label reads "Usage not reported" instead of staying on "Usage pending". - The recovery notice now reads "Some edits were not saved because this game changed in another tab or window. Download them to keep a copy, or discard them."
Saving
- Conversations in installed games are journaled before the IndexedDB write, so an answer survives a tab closing before the save commits. The journal reuses the project journal's Web Lock ownership; diverged chats from two tabs are both kept.
- Attaching reference art saves through the open project session. Before, it raised the stored generation behind the session, which paused editing and disabled the Agent composer.
Reliability
- LOGIC completion resumed with a command that does nothing while the previous list is on screen; it now calls the suggest controller directly.
- An automatic code-action refresh could cancel an explicit Quick Fix request in Monaco 0.57; a guard lets the explicit request answer first.
- ROOMS rows briefly lost analysed entries after each commit, so a click could start and end on different rows; rows keep the last complete analysis until the new one answers.
reserve_namebatches and disk-image import reservations are all-or-nothing.- The deploy check asserts every security header configured in
staticwebapp.config.json; the live site sends all six exactly. - Test helpers escape every occurrence (CodeQL
js/incomplete-sanitization,js/bad-tag-filter).
Models, dependencies and CI
- Claude Haiku 5.5 joins the Anthropic models. Prices describe a long-context rate card, and Haiku requests leave out
fallbacks, which it does not support. - Dependabot #77–#80 are folded in, and every dependency is at its latest release except TypeScript (7.0 has no JS API yet for typescript-eslint, vue-tsc or dependency-cruiser) and vue-tsc 3.3.11 (3.3.12 types non-reactive template
letbindings asnever, vuejs/language-tools#6237; Dependabot skips it).actions/setup-node7.1.0, and the composite setup's cache restore now matchesactions/cache6.1.0.@ast-grep/cli0.50.0's postinstall is allowed under npm 12. - Startup JavaScript and worker budgets rise to 1.2.1's measured size with about 2% headroom.
Documentation
README is an overview; the editor tour moves to docs/create.md and the AI co-author to docs/ai.md. AGENTS.md and CLAUDE.md follow current Anthropic and OpenAI guidance for instruction files: one statement per rule with its reason, a definition of done, and pointers to the documents that own procedures. docs/hosting.md describes patch releases without a back-merge and rollback as a forward deploy. Two screenshots shrink from 516 KB and 511 KB to 5 KB and 3 KB with identical pixels.
Validation
npm run check: 3,357 engine, 2,599 app and 104 replay tests pass with zero skips; production build and bundle boundaries pass; timing budgets 11/11.- Linux WebKit in the CI container: desktop 434 passed, phone 788 passed (fixture-gated skips only), after the one regression below was fixed and its spec rerun (12 desktop, 24 phone).
- Chromium: 1,189 passed under a heavily loaded parallel run. Five failures passed alone at two workers; the room-generation spec expected the old raw error text and is fixed (
b33675b2). Twotutorial-continuitytests fail the same way onmainon a machine with local game fixtures, which add extra tutorial cards; CI has no fixtures. - Every new test, eval case and spec was seen failing before its fix. New fixture-gated tests cover editing and MIDI export across every local game fixture.
Playtest
Open King's Quest I in Create and ask the Agent to change a room's description; the notice lists the sounds it carries forward. Export SOUND 0 to MIDI and play it. Attach a reference image in Create and keep editing. With an invalid API key, ask the Agent something.
🤖 Generated with Claude Code