Skip to content

v0.80.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 14:48
59bef94

0.80.0 (2026-10-29)

Features

  • acp: forward per-turn token usage on the session/prompt result (#165) (cc8124a)
  • adapt to ZCode 3.15.1 (guarded mode, dynamicWorkflowMode pass-through) (364bfb4)
  • add /quota slash command for GLM Coding Plan usage display (#10) (afd8f80)
  • add 60%, 95% and 98% quota push tiers (967d8b7)
  • add API-key fallback source for Opencode Go usage (cookie stays preferred) (5f57c34)
  • add auto-compact push and a 30s user-presence quiet window (#275) (5a9c457)
  • add configOptions, runtimeModel overlay, model cache, and set_config_option (b17f898)
  • add elicitation form path, deferred available-commands, and English docs (542d585)
  • add event translators and dispatch with full turn loop (831a25c)
  • add heat-colored progress bars with in-bar overlay to zcode-quota (#40) (a5cb8a1)
  • add input hint to skills with argument-hint frontmatter (#19) (3b15e2f)
  • add interaction channel with requestPermission, ExitPlanMode, and AskUserQuestion multi-select (2652e42)
  • add lastMessageId to replayMeta for client-side reconciliation (#303) (3e7a576)
  • add Ollama Cloud quota card with dual-plan support and unified quota credentials in user config (2c9a076)
  • add platform usage stats endpoint for the mobile app usage page (#288) (75d5208)
  • add private terminal coding plan account setup (#316) (166b9ac)
  • add remote.projectRoots widening and GET /api/fs/list for browse-and-create (#307) (066bb36)
  • add session lifecycle handlers and wire backend into ACP server (9074f88)
  • add standalone zcode-quota CLI with watch mode (#13) (a371f51)
  • add tasks-index sync, session title dedup, and graceful shutdown (e0bd2c1)
  • add the CLIProxyAPI quota card and converge quota reads on the hub cache (8f232e3)
  • add workflow run settings amendment route for app parity (#265) (627c76c)
  • add zcode backend client with subprocess, reader-loop routing, and event listener (af6f54b)
  • add ZCode session extensions and slash command interception (bb506bf)
  • adopt backend session titles and extend the busy window for background notification turns (2cc671e)
  • advertise authMethods for ACP registry compatibility (#8) (453ee8d)
  • align with the open-sourced ZCode backend (compact outcomes, /compact focus, 0.16.9 lock wording) (#220) (2527f53)
  • allow opting out of successful completion status messages (#313) (690172a)
  • auto-compact context when token usage exceeds ENV threshold (#17) (2408a9a)
  • badge background Bash tasks by reusing the launch card (#23) (69b0c54)
  • bilingual user strings with ZCODE_ACP_LANG and app locale inheritance (0.16.0) (#89) (930a6f2)
  • bounded resend for one-shot gateway failures + graceful exhaustion degrade (8a63196)
  • bridge-driven auto loop behind /auto with boundary compaction (ADR-0022) (b4dde43)
  • bridge-side workflow run dismissal with hide-list filtering (11af5f3)
  • bundle zcode-acp-martty 0.3.1-zcode.1 (upstream 0.3.1 sync) (f8651f2)
  • carry turn usage and wall time on the turnState end notification (bfa3a25)
  • choose the initial session mode with ZCODE_ACP_MODE (#189) (a1aa2e0)
  • cli: replace in-house REPL with Martty as the TUI frontend (ADR-0020) (#133) (67553be)
  • collapsed context handoff summaries in replay (0.4.0) (#53) (b7a1b46)
  • config: maintain all user preferences in the config file (6bfb1b2)
  • derive Ollama Cloud quota from the 2026-10 spend analytics API (730a0bc)
  • dl=1 flag serves file downloads as attachment (#74) (056a695)
  • drain-gate fast path, subagent status lines, turn stats, mcp health panel (#221) (6540ab7)
  • drop the TPS dock segment and show Ollama Cloud quota with derived reset times (83e7bcb)
  • edit provider endpoints, probe model connectivity and expose agent advanced fields from the settings API (753c824)
  • expand a leading ~ in remote.webDir to the home dir (139ea9b)
  • expose turn state via replayMeta.turnActive and $zcode/turnState (d5d866f)
  • expose ZCode skill/init/plugin commands and friendly-error TUI-only commands (#18) (0fde59a)
  • full dynamic-workflow support with desktop-host-aligned remote gate (#261) (6412d0d)
  • gate verbose logs behind ZCODE_ACP_DEBUG (quiet by default) (#6) (ace1353)
  • handlers: /resume slash command adopts a past session into an empty editor thread (a24084c)
  • header-based desktop presence, headless resume, messageId on replayed cards, force close stops running turns (cfcbc5d)
  • honor ZCODE_HOME for the config and lazy-session store paths (#187) (0593488)
  • HTTP quota and session-status endpoints for remote clients (#59) (8b113bf)
  • hub close tombstone with auto/user resume intent and orderly serve self-exit (83f9903)
  • hub Desktop Presence — a connected desktop client incubates new sessions headless (ADR-0016 amendment) (5a310bd)
  • hub Desktop Presence — recent-request presence tier and live-bridge reuse (ADR-0033 amendment) (ee659f4)
  • hub self-decided upgrade check via POST /api/upgrade (#73) (6b613a4)
  • implement Bash terminal protocol with 2-notification split and differ sync (5a133a0)
  • interactive Ink REPL as bare zcode-acp default (ADR-0007) (#76) (d60d077)
  • interactive REPL for bare zcode-acp (native-scrollback Ink UI) (fcb755e)
  • name byte-path file downloads via Content-Disposition (#72) (85d8c42)
  • name the terminal tab "project · topic" for martty-hosted TUI windows (300aa9c)
  • notify serve-origin clients on remote session close (387a2c4)
  • one-shot session titles with remote rename endpoint (#75) (cc406de)
  • opt-in macOS Seatbelt sandbox confining agent writes (ADR-0011) (#88) (36cab40)
  • pass dragged images to backend as session/send attachments (#26) (30e9abe)
  • pass ZCODE_DISALLOWED_TOOLS to the app-server as --disallowed-tools (#190) (85ecb4f)
  • pin the provider and model with ZCODE_PROVIDER and ZCODE_MODEL (#188) (6aa8999)
  • prefer bun >=1.4 (--smol) for bridge and hub processes with node fallback (#143) (4f33d34)
  • preserve embedded prompt resources and attachment bytes (#315) (44e0c23)
  • push quota threshold warnings over WeCom (9a68bd9)
  • push workflow stage digests over WeCom (9367454), closes #294
  • quit the REPL on bare exit/quit/q without slash (#100) (a93987c)
  • quota: add Opencode Go monthly window and reset times to the TUI quota dock (d322fca)
  • re-send undecided interaction requests to reconnected remote clients (#64) (7342c68)
  • recover auto-mode turns from backend-lost failures (respawn + reload + retry) (e9ca946)
  • remote access for mobile clients via zcode-acp-hub (#49) (59c5bbb)
  • remote file access, running-scoped discovery, replay collapse, release 0.7.0 (#56) (c0cea08)
  • remote session close, release 0.9.0 (#61) (f1f8b7c)
  • remote session-create via known projects and headless serve bridges (ADR-0014) (#92) (6956442)
  • remote: hub staleness detection via dist content fingerprint with automatic upgrade pokes (#157) (7e592d5)
  • remote: launch Ghostty TUI via AppleScript new tab, bypassing its -e confirm gate (229da20)
  • remote: name the resumed TUI tab after the conversation (#137) (eaa0e5a)
  • remote: ordered terminal preference list with chained fallback (#161) (04fbf42)
  • remote: per-project session history and terminal-REPL session-create (ADR-0015, ADR-0016) (#111) (95bd694)
  • remote: real session close (backend eviction) and instance shutdown route (5e457a0)
  • remote: show phone-created empty sessions in the active list while their CLI bridge lives (9d19d3e)
  • remote: show resumed history immediately in the booting TUI (#135) (52592e9)
  • remote: terminal-REPL session-resume and executing-session listing exclusion (ADR-0017) (#116) (f9440eb)
  • remote: terminate serve-origin CLI on last close and list skill commands per client (#159) (a728a5c)
  • REPL attaches to live sessions through the hub; fix plan-approval and replay visibility in the CLI (#119) (cbd6a7a)
  • REPL prompt history, paste newline folding, and /new session swap (#84) (4a408f0)
  • revamp elicitation forms for free-text input (#30) (4b3b15e)
  • revive soft-deleted projects when reopened from CLI or editor (#285) (8f44790)
  • route WeCom push through an optional static-IP relay (3ca2e77)
  • run-session aliases on journal rows, session workflowActivity and list-change broadcast (ca67c92)
  • scaffold zcode-acp-server with stdio ACP wiring and initialize handler (501a71f)
  • serve machine system stats from the hub (/api/system-stats) (f7e610d)
  • serve machine-level workflow overview from the hub (36c44a4)
  • serve recently finished runs from the workflow overview (3d5e226)
  • serve the web client same-origin from the hub via remote.webDir (9fb2e01)
  • session-scoped always-allow for workflow approvals, run stop route and faster permission push watchdog (f1fe33a)
  • settings API for ZCode configuration management (#238) (3f6ef1b)
  • show CLIProxy quota as pool-wide 5h/week aggregates (e0a06b9)
  • show tool input details in permission popups and route plan approval through elicitation forms (c7cb6c3)
  • support custom model providers and fix model switching for new backend (#27) (1b941c8)
  • sync sub-agent and background task events to ACP client (#21) (b18487e)
  • tui: condense replayed tool records to the most recent turns in the CLI resume replay (0ee1064)
  • tui: resident quota dock + project-bound terminal incubation (#139) (f086c51)
  • wait out quota exhaustion and continue automatically (#297) (6b18ebf)
  • workflow-gate switch, unanswered-ask push, and project/session soft delete (#277) (3f542de)

Bug Fixes

  • abort AskUserQuestion popup loop on turn cancel or timeout (#22) (2d2aee1)
  • acp: per-kind replay dedup so GLM thinking reaches the client (#167) (b145029)
  • advertise new sessions at first turn start, not after it completes (#57) (7e6b0d7)
  • advertise the configured initial mode for pending sessions (84b9687)
  • align permission replies, turn terminals, model lists and backend layout with 0.16.9 (#234) (4f8b41f)
  • allow pty allocation under the Seatbelt sandbox and surface EPERM denials (#130) (aab355b)
  • allowlist the hub relaunch plist env and write it 0600 (#309) (2a7f2b4)
  • always replay the current todo list on session/load (#71) (d998268)
  • answer a refused settings write with 400 instead of the retry-forever 504 (#240) (774bdcc)
  • answer provider runtime headers at arrival so compact turns survive (45a7f01)
  • answer provider runtime headers with the coding-plan API key so GLM turns run (ce3bdec)
  • architecture review quick wins (settle-once, hub, config lookup, turn-idle grace) (#66) (6a3e81f)
  • attach dummy exit listeners before the shutdown kill to close a linux race (5ae87ac)
  • attribute internal turns by turnId, filter unusable providers, shorten terminal fallback (#163) (1ee5163)
  • bound stale running turn recovery (rebased) (#85) (4179870)
  • bound turn-internal history reads and harden the settle watermark (9f5a76c)
  • broadcast extension settings switches to every attached client (e005045)
  • broadcast turn lifecycle state so attach-only clients clear running and flush queued prompts (ceb6d7f)
  • cancel session and binary drag-drop (#39) (a8ab2e3)
  • cancel-then-send hang, turn contamination, abort storm, and thought-level root cause (#48) (561f4f5)
  • carry the backend assistantMessageId onto streamed text and reasoning chunks (#186) (d346fcf)
  • carry the TUI stats dock filter into hub-incubated windows (#227) (d10e521)
  • carry ZCODE_DISALLOWED_TOOLS as toolDenylist on session create/resume (#340) (e4462f1)
  • compact/goal lock-wait unit bug + backend stdin error handling (#4) (44d685e)
  • create tool cards when scheduled events are missing (#82) (a6420bd)
  • decline Start Plan provider runtime headers with a clear reason (#128) (f7d6253)
  • dedupe quota threshold pushes across hub and bridge processes (0a624b2)
  • default-allow well-known system temp trees in the sandbox (#105) (161de73)
  • derive the account-to-config provider id mapping without the bundled table (2b2fc7b)
  • derive the pending-session current model from the enabled provider (#47) (2e364dd)
  • disable Happy Eyeballs for the zcode launch so slow-edge networks connect (#182) (2d1496f)
  • disallow unservable Cron tools by default and record in-flight background tasks on shutdown (#192, #194) (444d13f)
  • disambiguate colliding builtin model ids in configOptions (#175) (c1bb059)
  • dispatch: keep the turn success status line off editor clients by default (#319) (ce1410e)
  • dual-emit turnState under the ACP-reserved _zcode name (#311) (9b86e51)
  • effort picker shows the switched model's levels (zcode-acp-martty 0.2.39-zcode.6) (bff817e)
  • emit turnState running:false on boot-resume trigger and early returns (#249) (a22d206)
  • empty locale preference, BOM settings, zh-machine test pins (0.16.2) (#91) (36570c6)
  • flatten todoGroups list and make interaction requests cancel-aware (0582d87)
  • forward ACP session mcpServers to the backend's session create/resume (#43) (767224c)
  • forward authoritative progress during silent turns (#110) (4ceff1e)
  • gate plan-approval elicitation form to martty so editors keep markdown popups (0542935)
  • gate the guarded create-fallback on the mode actually sent (bf730c3)
  • give remotely-spawned processes the login shell's environment and the project cwd (#242) (2f645c4)
  • goals: route /goal through the bridge-driven loop so clients see goal progress (#181) (357b1e0)
  • guard compaction turns from stops and scope the runtime-headers responder (7ec703b)
  • guard replay reads against mid-hydration prefixes across backend respawns (#301) (a09fd43)
  • handlers: never TTL-prune materialized lazy aliases; distinct evicted-session error (#150) (21b0b29)
  • handlers: session-scoped /resume elicitation and atomic lazy-alias store (#148) (a45d82b)
  • harden compaction stop guard and dead-reader settle from cross review (34e9da1)
  • harden slash-command push and tasks-index sync against transient failures (#25) (7339fad)
  • harden the last two days of changes (review follow-ups) (#253) (05e8028)
  • heartbeat-probe session availability, release 0.5.1 (#55) (a04e360)
  • hide archived-only projects, label interaction pushes, follow plan mode (#281) (9f66a24)
  • hold prompts during auto-compact instead of rejecting them (#244) (c5cbac1)
  • hold replay batch guard across the history fetch so live turns queue behind replay (0bf6790)
  • hold sandbox allow asks through the interaction funnel instead of a 120s timeout (ff4567d)
  • hub: self-relaunch outside the sandbox via launchd when born wrapped (#114) (eac374f)
  • i18n cross-review follow-ups (startup crash, cache bust, coverage gaps) (0.16.1) (#90) (13f37da)
  • implement authenticate and read manual coding-plan keys from provider_config (#344) (4a88f58)
  • inject both provider-config env vars so the 3.12+ CLI uses the bundled table verbatim (b0ecb89), closes #202
  • inject ZCODE_BUILTIN_PROVIDER_CONFIG_FILE for bundled CLI launches (8293b7c)
  • isolate stalled client sends in broadcast so one dead link cannot silence others (b76fd3f)
  • keep active tools alive past stale freeze (#122) (5a5d201)
  • keep an auto session/load from resurrecting a remotely closed session (7e8ab77)
  • keep the hub heartbeat off the discovery refresh and name instances in rejection logs (6e26ace)
  • keep the tail of long paths in permission popup titles (7be5350)
  • key stall termination on read watermark, not prompt lock (0.14.3) (#86) (ca7a739)
  • make Ghostty TUI tabs auto-close on exit and start in the project directory (#283) (821c401)
  • make session file roots backend-authoritative, never trust client cwd (#70) (d42485c)
  • make the cliproxy quota card work against real antigravity accounts (32f3014)
  • make the sandbox allow loop own turn pacing (freeze, hold, unattended timeout) (71c6e6d)
  • mcp: advertise http MCP support so clients mount http servers (c7949ec), closes #180
  • merge desktop provider_config.json models into the dropdown (7a24f36)
  • mode UI update on slash command and prompt-lock leak on stop (32b5a34)
  • name the bridge plan's model in App task rows (#343) (0a0913d)
  • normalize account/builtin provider spellings in the resume model repair (#270) (e6ea04f)
  • normalize permission option kind and recognize all allow optionIds (#5) (5f178a6)
  • ollama monthly percent uses billing-period spend, not rolling 30d (7f8725a)
  • persist remote-close retirement so a respawned serve bridge cannot resurrect a closed session (19530c2)
  • pin the zcode dns lookup to ipv4first so localhost ipv4 providers connect (522cd89)
  • plan todos re-check after async backend write, release 0.11.2 (#68) (449e59d)
  • pollEvent zombie waiter, async close reap, turn cancel reference, differ.diff at completion, Edit/Write diff dispatch, stable signatures (dc2e1b3)
  • preempt in-flight turn when a new prompt arrives without cancel (#2) (ecf30a4)
  • prefer the configured model context window over the backend's placeholder in usage_update (41d719a)
  • preserve provider bootstrap paths without a personal table (#314) (89e54da)
  • preserve structured quota failures over acp (#78) (e053b97)
  • push the account provider snapshot and use the 3.12+ setModel shape so coding-plan models switch (80ad523)
  • push TODO list updates on tool completion instead of waiting (#20) (4c068b7)
  • quota: migrate opencode go to the console status API (5b4966b)
  • raise remote endpoint test timeouts to survive parallel-suite load (0079694)
  • re-assert remembered model choice after resume to stop silent reverts (#223) (87f6189)
  • re-send client mcpServers on every backend session load (#193) (90ccc13)
  • re-settle hydration on capped resumes and mark load_earlier pages (52914c3)
  • read turnId from the event envelope so turn attribution works on 0.16.9 (#232) (d4dcc3f)
  • reannounce sendReply, stdin/backend shutdown triggers, thought metadata, config response, usage fallback (c65560c)
  • reconcile session mode immediately for PlanMode (#32) (7182764)
  • recover model switches from stale reasoning-level sources with a level ladder (c8ec1ec)
  • recover sandbox continuation cold starts and stream REPL tool output (#98) (82b92c5)
  • refuse workflow routes under an explicit disabled gate override (#279) (92cd6f3)
  • registry: skip providers with zero models in provider registry (#102) (25fa4f4)
  • reject prompts during auto-compact instead of queuing behind the lock (81fed9e)
  • remember slash model switches, target /resume replay, arbitrate choices across aliases (#230) (3fc37ab)
  • remote session discovery gating and empty replay on remote open (0.3.1) (#51) (fecc9fc)
  • remote: bind create TUI to the shared session; quota dock fixes (#145) (a613384)
  • remote: keep Ghostty tab incubation alive on a locked screen (28bb8f7)
  • remote: session-create always incubates a visible terminal REPL (ADR-0016 amendment) (#124) (8f8ff61)
  • remote: tear the whole TUI tree down on instance shutdown (f776da0)
  • replay prose-less tool messages id-less so adjacent calls coalesce after resume (c445979)
  • replay targeting + model-choice hardening (#225) (f7628eb)
  • replay tool cards under the store's real callId so live updates can patch them (f213c15)
  • report cache-exclusive inputTokens in turn usage for correct cache hit rate (056574a)
  • report context occupancy only in usage_update, never cumulative tokens (#257) (11c3688), closes #228
  • report the auto-compact window as busy so held prompts stay visible (#247) (cb496f7)
  • report the manual /compact window as busy so prompts queue instead of erroring (#255) (58fbbe5)
  • require sustained probe failure before pruning a hub instance (ea918c5)
  • restore headless entitlement on fresh desktop-only installs (#320) (3204197)
  • resume deleted sessions honestly and reload store-recovered sessions before first use (ddafa66)
  • resume initial usage, elicit toolCallId/skip, interaction timeout (024ef0c)
  • retire every advertised session before an instance shutdown kill (b831e81)
  • retry session/resume to absorb backend cold-start window (#28) (0dd3bfa)
  • retry session/resume to absorb backend cold-start window (#29) (2533a1b)
  • retry transient turn.failed and degrade gracefully instead of (#33) (930b69f)
  • route /goal through extensions.ts and sync /model UI after switch (#36) (c58f927)
  • route ExitPlanMode through request_permission instead of (#31) (2afe5df)
  • route server→client requests by sessionId to prevent cross-session popup leaks (#12) (174614f)
  • route the spec-spelled session/set_mode request (#46) (15fda81)
  • run auto-compact detached from the turn so cancel/preempt cannot kill it (01d222a)
  • run the login-shell env probe non-interactively and union PATH (#251) (b2e3ba0)
  • sandbox: batch allow-restarts into one window with cooldown asks and chained continuations (#107) (2570a12)
  • sandbox: centralize profile dirs under ~/.zcode-acp/sandbox with pid-aware sweeping (#152) (6830c4d)
  • scope the boot-resume handshake arm per connection and ack unarmed TUI triggers (#259) (83bd091)
  • scope turn-internal history reads with the backend's native pagination (#236) (d475e31)
  • self-heal sessions evicted from the backend (Session is not active -32004) (#69) (a801996)
  • send dynamic-workflow policy push mode under the upstream mode key (18049d4)
  • send only stdout delta in Bash terminal output to prevent replay (#14) (e0b4695)
  • send only stdout delta in Bash terminal output to prevent replay (#15) (2bb43cf)
  • settle big-session hydration without re-paying capped reads on every load (b5f9773)
  • settle hub dial failures once and prune corpse bridge registrations (37a8107)
  • show Ollama Cloud dock percent at one-decimal precision and drop the constant window label (95f01c9)
  • single-flight session resume with hydration settle to stop partial first-entry replay (aeff59e)
  • skip goal-loop turns when cancelling siblings during backend recovery (5acd76d)
  • skip hidden tool-result user messages when computing replay turn starts (8c77ef2)
  • skip keyless builtin providers and keep self-consistent env base URL overrides (#183) (d510d37)
  • skip the hydration settle for metadata-only attaches (#305) (#305) (f745d48)
  • stabilize session/create flow — runtime-prefs handshake, third-party providers, lazy sessions, model state (#38) (17e9fc6)
  • stop dropping dragged-file attachments in session/prompt (#24) (53d85a1)
  • stop injecting the provider model endpoint as the app-server service origin (#215) (f7f97aa)
  • stop pushing output to UI after session/cancel (#37) (d140db6)
  • stop re-advertising remotely closed sessions when their dying turn or a late title lands (5a85c42)
  • stop writing the sandbox discovery template into unarmed workspaces (#332) (888385a)
  • stop/cancel/preempt robustness aligned with Python reference + docs (#3) (3cec5e1)
  • strip tagless reminders and dedupe replay history (0.3.2) (#52) (8242518)
  • supervise hub proxy keepalive pongs so dead phone links are terminated (4c8436c)
  • surface orphaned background asks with forward, auto-allow or push (405ac49)
  • survive unhandled rejections and diary all warnings to disk (#246) (82b5122)
  • sync meta_json.title in updateSessionTitle so ZCode App shows it (#16) (04e7ac5)
  • sync tasks-index format and 3.3.0 protocol for ZCode App session (#11) (7f7fc38)
  • tell attached clients when a raced interaction ask was decided (f5d5e5a)
  • tests: strip the serve-bridge birth env in the hermetic setup (f184e29)
  • tombstone every session-id spelling of a remotely closed conversation (8c09883)
  • treat personal model list as authoritative for custom providers (66168dd)
  • tui: keep quota dock resident during turns and show reset as a clock time (#141) (df79531)
  • tui: pin zcode-acp-martty so the approval popup shows the full request (bd72cd9)
  • upgrade npm in release publish job for trusted publishing (#95) (2e9b343)
  • use the antigravity hub User-Agent so quota reads include the Gemini family (ad6c175)
  • wait indefinitely for user confirmation instead of auto-declining (#35) (5c0f894)