Skip to content

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 21 Aug 10:28
· 293 commits to main since this release

Fixes both things that broke 0.3.3. If you installed 0.3.3, update to this release — 0.3.3 has been unpublished.

Input is alive again

The kitty-keyboard probe added in 0.3.3 paused stdin after reading the terminal's reply. Node does not resume an explicitly paused stream when a new listener attaches, so Ink's own handler received nothing: the UI rendered perfectly and swallowed every keystroke and every mouse report. The probe now restores the stream exactly as it found it, and a regression test pins that contract.

A newer config can no longer brick an older build

0.3.3 migrated config.json to v41. Rolling the release back to 0.3.2 — whose supported-version list stops at 40 — killed every command at boot with unsupported config version 41, because getConfig() runs ahead of all of them, config set included. The check had been an enumeration with no upper bound since the first commit, so any future bump could have done this to anyone running two builds against one state dir.

From this release:

  • a config written by a newer build is read with the running build's schema instead of rejected — every version-gated rule in the parser is a < comparison, so a higher number correctly falls through to reading the file verbatim;
  • that version is preserved rather than stamped down, and writeUserConfigFileSync — the only function in the tree that writes config.json — refuses to lower it, covering the ~30 call sites that spread a config object and write it straight back. It says so on stderr rather than silently ignoring the payload;
  • ensureUserConfigFileSync migrates upward only, so a newer file is never rewritten at startup;
  • unknown top-level blocks survive the round trip. The docstring has promised this since the first commit; the parser never did it;
  • version must be a positive whole number — {"version": 1e308} used to parse, and would have pinned the file above every future schema for good;
  • config set refuses a version newer than the build understands. Reading one off disk is right; typing one is not;
  • when the config really is unusable, the error names the file and how to recover instead of printing a bare field and reason.

USER_CONFIG_VERSION is 42, with no schema change behind the bump — it marks the baseline the rules above hold from.

Known limit: unknown keys inside a known block are still dropped, so an older build re-writing a newer file loses them while keeping the newer version label.

If you are stuck on 0.3.2 or 0.3.3 right now

A build that is already compiled cannot be taught the new rule, so an older install holding a newer config still refuses to start — and atag update is one of the commands that dies, so it cannot pull the fix. Re-run the installer instead:

curl -fsSL https://raw.githubusercontent.com/AtomicBot-ai/atomic-agent/main/scripts/install.sh | sh

Or edit ~/.atomic-agent/config.json and set "version": 40, then update normally.