Changelog

v4.33.1

2026-06-23
Changed
  • Merge pull request #257 from griffinwork40/fix/tui-overflow-pending-exact-count (ee8ebd4)
  • Merge pull request #255 from griffinwork40/fix/tui-band-hold-pending-gap (8965b3b)
Fixed
  • use exact painted-row count for the band-hold pending signal (196f818)
  • commit flushed blocks atomically so band-hold doesn't gap scrollback (10e25ed)

v4.33.0

2026-06-23
Added
  • wire passive SIGNAL-block parsing into buildResultFromMessage (18be452)
Changed
  • Merge pull request #254 from griffinwork40/feat/wire-signal-block (3610ea4)

v4.32.0

2026-06-23
Added
  • add Ctrl+L, Ctrl+D, and line-relative Home/End (c2d4f36)
Changed
  • Merge pull request #231 from griffinwork40/feat/tui-repl-keybindings (b528fc0)
  • add dispatch-level coverage for Ctrl+L/Ctrl+D/Home/End keys (7463f7d)

v4.31.2

2026-06-23
Changed
  • Merge pull request #241 from sorcerai/fix/daemon-pull-queue-poison-deadlock (6d6e360)
  • Delete .claude/scheduled_tasks.lock (52fba48)
  • Delete .afk/plans/shift-tab-permission-mode-cycle.md (50f68da)
  • Delete .afk/plans/normalize-session-identity-telemetry.md (7550c43)
  • Delete .afk/plans/default-permission-mode-bypass.md (387afb3)
  • Update .gitignore to exclude local plans dir (01ccea6)
Fixed
  • redact poison-quarantine logs and harden listPending (bd272f8)
  • quarantine malformed pull-queue entries instead of silent deadlock (c1d543f)

v4.31.1

2026-06-22
Changed
  • Merge pull request #246 from griffinwork40/fix/daemon-brief-gate-ignore-subdirs (ac17a87)
Fixed
  • brief-queue gate counts only top-level .md files (eeb9cef)

v4.31.0

2026-06-22
Added
  • wire MCP servers into chat, daemon, and telegram surfaces (96b9fae)
Changed
  • Merge pull request #244 from sorcerai/fix/mcp-surface-parity (f16aa4b)
Fixed
  • daemon imported-config parity + close MemoryStore on connect failure (#244) (77e92fe)

v4.30.0

2026-06-22
Added
  • tag dispatched gate skills with is_gate (port afk-workshop#823) (57c38d3)
Changed
  • Merge pull request #243 from griffinwork40/afk-port/pr-823 (ba9acda)
  • Merge pull request #245 from griffinwork40/afk-port/pr-824 (e388965)
  • deprecate redundant skill-invocations.jsonl writer (port afk-workshop#824) (e3c563f)
Fixed
  • scope is_gate to skill.dispatched on the load path (port afk-workshop#823) (8b08141)

v4.29.1

2026-06-22
Changed
  • Merge pull request #242 from griffinwork40/fix/interrupt-mid-turn-resume (095e318)
Fixed
  • keep session alive after mid-turn interrupt (ESC) (073004c)

v4.29.0

2026-06-21
Added
  • opt-in "Done" verification for AFK Telegram pushes (#237) (9efb1c1)
Changed
  • Merge pull request #238 from griffinwork40/feat/telegram-verify-done (ef8d204)
  • resolve PR #238 review feedback (5fd2d60)

v4.28.0

2026-06-21
Added
  • warn on supersede of uncited/stale-cited codebase facts (065c3ea)
  • evidence-gate durable memory writes behind AFK_MEMORY_EVIDENCE_GATE (a942ef4)
Changed
  • Merge pull request #240 from griffinwork40/feat/memory-evidence-gate (250d38e)
  • bump parallel tests/ schema assertion to v4 (4c9403b)

v4.27.3

2026-06-21
Changed
  • Merge pull request #229 from griffinwork40/fix/tui-markdown-rendering (502b8d4)
  • Merge branch 'main' into fix/tui-markdown-rendering (5c64928)
  • Merge pull request #236 from griffinwork40/fix/mailmap-lightjunction (1fd37c0)
  • re-attribute @LIghtJUNction's PR #96 commit via .mailmap (43f93cf)
Fixed
  • resolve PR #229 review — ordered task glyphs + honest render tests (0aaa671)
  • render task-list checkboxes, width-aware rules, wide-char dropdown height (7c81a2a)

v4.27.2

2026-06-21
Changed
  • Merge pull request #235 from griffinwork40/afk/fix-usage-limit-hang (77b7b3b)
Fixed
  • terminate query generator on interrupt during usage-limit wait (c462ebd)

v4.27.1

2026-06-21
Changed
  • Merge pull request #228 from griffinwork40/fix/compose-cwd-reanchor (c46e4f3)
Fixed
  • re-anchor compose DAG nodes on cwd change (e3d57f3)

v4.27.0

2026-06-21
Added
  • surface hidden REPL features in help, hints & banner (0688398)
  • add read-only SessionEnd run receipt (611ad70)
Changed
  • Merge pull request #230 from griffinwork40/feat/tui-discoverability (f630689)
  • Merge pull request #234 from griffinwork40/feat/session-end-run-receipt (6b21e8e)

v4.26.1

2026-06-21
Changed
  • Merge pull request #232 from griffinwork40/fix/tui-context-visibility (46038c4)
  • Merge pull request #227 from griffinwork40/afk/claude-login-update (d478ae6)
  • Merge pull request #233 from griffinwork40/chore/tui-remove-dead-repl (19fbe66)
  • remove dead legacy readline REPL & unused jest devDeps (5e8edea)
  • use claude login for the OAuth flow in quickstart (6661928)
Fixed
  • timelier context-usage signal & overlay-safe overflow warning (6e759de)

v4.26.0

2026-06-21
Added
  • add cards list --regressed observability view (de0b2d4)
Changed
  • Merge pull request #226 from griffinwork40/improve/cards-regressed-view (f0c3765)

v4.25.0

2026-06-21
Added
  • Shift+Tab cycles permission modes (default → plan → bypass) (0b3e019)
Changed
  • Shift+Tab now cycles permission modes (default → plan → bypass) instead of toggling plan mode on/off; AFK (autonomous) stays on /afk and, if active, Shift+Tab exits it cleanly to default
  • Merge pull request #225 from griffinwork40/afk/20260620-194641-1e7273 (b98d443)
  • strengthen Shift+Tab permission-cycle coverage (PR #225 review) (ef8fefc)

v4.24.0

2026-06-20
Added
  • restyle bypass indicator as a "full-power" badge, not a caution (bef7ea1)
Changed
  • Merge pull request #224 from griffinwork40/afk/20260620-174826-3dd82c (3335c7d)

v4.23.2

2026-06-20
Changed
  • Merge pull request #223 from griffinwork40/fix/worktree-cwd-presence-propagation (87b3147)
Fixed
  • re-anchor executors in dispatcher.setResolveBase (openai-compatible parity) (d53b198)
  • skip worktree-prune gracefully when daemon cwd is not a git repo (9e96e80)
  • propagate setCwd to sub-agent/skill executors (re-anchor forks) (fec6a73)
  • re-write presence cwd on setCwd so live worktrees aren't reaped (95c31d7)

v4.23.1

2026-06-20
Changed
  • Merge pull request #222 from griffinwork40/afk/20260620-075608-f550fc (7aa3528)
Fixed
  • render non-empty fenced code blocks not preceded by a blank line (6de3a6e)

v4.23.0

2026-06-20
Added
  • default to bypass mode for new installs (024d808)
Changed
  • Merge pull request #220 from griffinwork40/afk/20260619-170734-66ec93 (fb41455)
  • Merge pull request #221 from griffinwork40/afk/20260619-171015-92ea08 (eba6bfe)
  • note the interpreter denylist is default-on and tunable (792d3af)
  • sync docs website with v4.9-v4.22; add permissions page (0f76702)

v4.22.0

2026-06-19
Added
  • edit queued type-ahead with ↑; stop dequeuing on Backspace (4268d7c)
  • config key + --dangerously-skip-permissions flag for bypass (445c4b9)
  • add /bypass REPL toggle + status-line BYPASS badge (dd3a893)
  • make bypassPermissions disable path containment (core) (39f7a83)
  • queue multiple type-ahead messages mid-turn (8daba12)
Changed
  • Merge pull request #215 from griffinwork40/afk/20260618-180522-9c6c46 (2cb373b)
  • Merge pull request #219 from griffinwork40/feat/bypass-grant-all (61e9add)
  • Merge main into afk/20260618-180522-9c6c46 (resolve type-ahead queue conflict) (5d4d70a)
  • correct stale bypass-by-default claims; document /bypass (bed6aa3)
Fixed
  • make the live /bypass toggle actually change enforcement (a6de8c7)
  • keep queued mirror in sync on paste + idle-submit paths (fcbf295)

v4.21.1

2026-06-19
Changed
  • Merge pull request #218 from griffinwork40/fix/subagents-non-interactive (3e4f8e8)
Fixed
  • make forked sub-agents non-interactive (96d7b3a)

v4.21.0

2026-06-19
Added
  • interactive usage-limit picker (C) (de2d3be)
  • make usage-limit pause actionable at the keyboard (A+B) (4ecc2d2)
Changed
  • Merge pull request #217 from griffinwork40/afk/20260618-163800-fba9fe (80f4e95)
Fixed
  • guard runPicker promise with .catch() to avoid unhandled REPL rejection (3d92e53)

v4.20.0

2026-06-19
Added
  • persist session origin/actor into state artifacts (Stage D) (d71a734)
  • record origin + actor on routing + skill-invocation rows (Stage B+C) (696953f)
  • record session origin + actor on witness trace (Stage A) (f5fa3a1)
Changed
  • Merge pull request #214 from griffinwork40/afk-20260618-123344-8c609e (7ff9ba5)
  • Merge remote-tracking branch 'origin/main' into afk-20260618-123344-8c609e (de10091)
  • mark Stage D done (session identity in state artifacts) (4c042c1)
  • mark Stage B+C done (origin/actor on JSONL telemetry) (5e34188)
  • session-identity normalization plan (Stage A done; B-D scoped) (abf3797)
Fixed
  • make v2→v3 actor-column migration concurrency-safe (8f1fed9)

v4.19.1

2026-06-19
Changed
  • Merge pull request #216 from griffinwork40/fix/telegram-presence-surface (03629b6)
  • Merge pull request #213 from griffinwork40/chore/mailmap-attribution (629ae9c)
  • add .mailmap to re-attribute afk-port port commit (772cf55)
Fixed
  • tag provider surface as 'telegram' for presence/watch (2162ab5)

v4.19.0

2026-06-18
Added
  • render MCP form enum/boolean fields as arrow-key selector (47546b9)
Changed
  • Merge pull request #212 from griffinwork40/afk/20260618-153242-30da7d (2cff1df)

v4.18.3

2026-06-18
Changed
  • Merge pull request #208 from griffinwork40/refactor/extract-resolve-params (2acc9a0)
  • extract pure param resolvers into resolve-params.ts (c5462c0)

v4.18.2

2026-06-18
Changed
  • Merge pull request #211 from griffinwork40/simplify/terminal-compositor-dedup (6da7b60)
  • centralize committed-band CUP+EL escape into eraseAndPaintRow (57f417e)

v4.18.1

2026-06-18
Changed
  • Merge pull request #207 from griffinwork40/refactor/split-diagnose-into-phases (421e4b5)
  • Merge pull request #210 from griffinwork40/refactor/split-tool-lane-overlay-test (0d9e6d0)
  • extract overlay-rendering cluster into its own test file (58b90e2)
  • split diagnose/index.ts into modules (e95ef57)

v4.18.0

2026-06-18
Added
  • scope /resume session list to current working directory (3ba3674)
Changed
  • Merge pull request #209 from griffinwork40/afk/20260618-123959-6040de (e5c19af)

v4.17.0

2026-06-18
Added
  • Path-access approval: typed file tools (read_file, write_file, edit_file, list_directory, glob, grep) targeting a path outside the session's granted roots now prompt for approval — once / session / persist / deny — via the REPL or Telegram elicitation surface. Persisted grants are stored in ~/.afk/config/permissions.json and replayed on future sessions
  • Bash restriction hook: hard-blocks interpreter one-liners (python -c, node -e, ruby -e, perl -e, sh -c, bash -c, lua -e, ...) and restricted-root substrings (~/.ssh, ~/.aws, ...), routing the model back to the prompt-able typed file tools
  • AFK_DISABLE_BASH_INTERPRETER_GUARD env var — lifts only the bash interpreter-eval denylist while keeping the rest of path-approval enabled
  • AFK_DISABLE_PATH_APPROVAL env var — disables the path-approval + bash-restriction hooks entirely (for headless flows that need wide-open file access)
  • AFK_FORCE_BASH_INTERPRETER_GUARD env var — opts headless surfaces back into the interpreter denylist
  • elicit user approval for restricted-path tool calls (port afk-workshop#477) (42c013f)
Changed
  • Merge pull request #202 from griffinwork40/afk-port/pr-477 (e443d01)
  • Merge remote-tracking branch 'origin/main' into afk-port/pr-477 (d3439cb)
  • Merge pull request #204 from griffinwork40/afk-port/pr-477-review (086ca4e)
Fixed
  • resolve PR #202 review findings (H1/M1/M2/L1-L4/N1-N2) (cc07c7f)

v4.16.1

2026-06-18
Changed
  • Merge pull request #205 from griffinwork40/fix/afk-surface-headless-default (0cce23f)
Fixed
  • default the 'afk' CLI surface to headless (7ef070d)

v4.16.0

2026-06-18
Added
  • remote /abort + REPL abort-watcher + presence auto-subscribe (iteration 4) (d60342b)
  • daemon renders ledger elicitations + signed write-back (iteration 3) (0cb884c)
  • wire /afk toggle to the ledger elicitation channel (iteration 2) (d408f6c)
  • REPL ledger-channel elicitation handler (iteration 1) (4ab9ca2)
  • ledger channel foundation — record kinds + per-session HMAC (552cd01)
Changed
  • Merge pull request #203 from griffinwork40/afk/20260617-201405-0b2298 (c035e93)
  • drop dead newAbortReason field, harden digestsEqual hex guard (881f7ec)
  • remote-control docs + no-second-poller invariant test (iteration 5) (004ed33)

v4.15.0

2026-06-17
Added
  • forward reasoning_effort for o-series models (#128) (#193) (467af9b)

v4.14.0

2026-06-17
Added
  • autonomous permission mode + scrubbed Telegram reporting (#197) (b3384fe)

v4.13.0

2026-06-17
Added
  • add retry/backoff for transient errors (429, 5xx) (#192) (e58b48d)

v4.12.1

2026-06-17
Fixed
  • thread max_tokens into streaming request body (issue #125) (#195) (8f6b0e3)

v4.12.0

2026-06-17
Added
  • diagnostic-goal handling + commit-gate terminal-state invariant (port afk-workshop#808) (c505a5f)
Changed
  • Merge pull request #196 from griffinwork40/afk-port/pr-808 (89c02ad)

v4.11.2

2026-06-17
Changed
  • Merge pull request #194 from griffinwork40/afk-port/pr-719-lows (fbb3b90)
  • Merge pull request #190 from griffinwork40/ci/add-docs-typecheck-build (8468e21)
  • cache npm deps in docs job (dfee8dc)
  • Merge pull request #191 from griffinwork40/fix/remove-shadow-verify-backport-gap-comment (f91ccd2)
  • remove resolved BACK-PORT GAP comment for shadow-verify (ac3f15a)
  • add docs site typecheck + build job (a9fd370)
Fixed
  • StatusLine stop() clears the pre-SIGWINCH row during the resize debounce window (port afk-workshop#719) (5888d0b)

v4.11.1

2026-06-17
Changed
  • Merge pull request #189 from griffinwork40/afk/20260617-062257-f74a5a (f59b5eb)
Fixed
  • clamp shrink-pad to anchorFloor so the slash-command dropdown can't erase the welcome banner (2367ab8)

v4.11.0

2026-06-17
Added
  • composition-boundary guard for shadow-verify and devils-advocate (f549407)
Changed
  • Merge pull request #187 from griffinwork40/feat/composition-boundary-guard (d6a80e7)
Fixed
  • resolve PR #187 review nits — Wave 3.5 routing + UNVERIFIED-* merge states (09a0dea)

v4.10.0

2026-06-17
Added
  • gate bash by mutation, not a substring denylist (2eb6d5f)
Changed
  • Merge pull request #188 from griffinwork40/afk/20260617-053220-bbd8c1 (ccbc5ac)

v4.9.1

2026-06-17
Changed
  • Merge pull request #185 from griffinwork40/fix/bundle-review-spec-compliance (16d0098)
  • Merge pull request #182 from griffinwork40/afk-port/pr-802 (194d5f6)
  • Merge pull request #183 from griffinwork40/afk/20260616-180623-db5293 (5376562)
  • fix verified accuracy gaps across website and repo docs (0e1b05a)
Fixed
  • add spec-compliance axis + thread stated intent to dimension agents (26f1a22)
  • add spec-compliance axis to design-review verify gate (port afk-workshop#802) (188396f)

v4.9.0

2026-06-17
Added
  • native AFK skill-invocation JSONL writer (port afk-workshop#804) (7699403)
Changed
  • Merge pull request #186 from griffinwork40/afk-port/pr-804 (f3f4422)

v4.8.3

2026-06-16
Changed
  • Merge pull request #184 from griffinwork40/feat/improve-exclude-elicitation-declines (6ff4553)
Fixed
  • exclude ask_question elicitation declines from tool-failure-density (bad0c6c)

v4.8.2

2026-06-16
Changed
  • Merge pull request #174 from griffinwork40/afk-port/pr-719 (4bd1dbb)
Fixed
  • address PR #174 review — bg-bar self-clears old rows on resize (bc67d4e)
  • reset StatusLine + BackgroundStatusBar geometry on SIGWINCH to stop ghost rows (port afk-workshop#719) (44351ef)

v4.8.1

2026-06-16
Changed
  • Merge pull request #177 from griffinwork40/afk-port/pr-801 (d249963)
Fixed
  • correct prerelease version compare + debounce auto-update re-trigger (port afk-workshop#801) (7ec504b)

v4.8.0

2026-06-16
Added
  • require durable, citation-backed evidence in terminal states (fdd2cea)
Changed
  • Merge pull request #176 from griffinwork40/salvage/audit-prompts-evidence (8ea3c80)

v4.7.6

2026-06-16
Changed
  • Merge pull request #172 from griffinwork40/afk-port/pr-649 (ab58aa0)
  • Merge pull request #175 from griffinwork40/afk-port/pr-454 (3350480)
  • formalize TUI invariants discipline with regression tests (port afk-workshop#454) (4d55e2d)
Fixed
  • preserve fully-pending band-hold rows on disarm before collapse (5eb9db6)
  • keep multi-line blocks visible (band-hold) when committed under a tall overlay (port afk-workshop#649) (9e6089c)

v4.7.5

2026-06-16
Changed
  • Merge pull request #173 from griffinwork40/fix/hookregistry-provider-contract (319aeff)
  • enforce SDK dependency lock via audit:sdk:check (3eb1278)
  • promote hookRegistry into the dispatcher contract (12b6907)

v4.7.4

2026-06-16
Changed
  • Merge pull request #170 from griffinwork40/afk-port/pr-706 (04dd653)
Fixed
  • enforce write-tool gate (config.hookRegistry was dropped by the dispatcher) (port afk-workshop#706) (c6892c6)

v4.7.3

2026-06-16
Changed
  • Merge pull request #168 from griffinwork40/fix/seal-unsealed-traces-on-exit (b92676e)
Fixed
  • seal orphaned witness traces on abnormal process exit (de83b72)

v4.7.2

2026-06-16
Changed
  • Merge pull request #169 from griffinwork40/fix/openai-compat-null-content-crash (572b403)
Fixed
  • stop crashing on null-content tool-call turns (non-vision) (ac0233e)

v4.7.1

2026-06-16
Changed
  • Merge pull request #167 from griffinwork40/fix/seal-provider-error-as-failed (6e371f5)
Fixed
  • seal provider-error turns as failed, not silent success (204dff1)

v4.7.0

2026-06-16
Added
  • add local capability tier (9bc1dc9)
Changed
  • Merge pull request #164 from griffinwork40/fix/strip-ask-question-noninteractive (1d8e53b)
  • Merge pull request #163 from griffinwork40/afk-port/pr-572 (10800ae)
  • Merge pull request #162 from griffinwork40/feat/local-model-slot (2c4f8cb)
Fixed
  • guard unconfigured tier selection + route per-slot baseUrl (afad68a)
  • strip ask_question on non-interactive surfaces (7dd7b91)
  • route all overlay repaints through setComposedOverlay (port afk-workshop#572) (25f340d)

v4.6.2

2026-06-15
Changed
  • Merge pull request #160 from griffinwork40/refactor/tui-compositor-host-trim (2af6bfb)
  • Merge pull request #157 from griffinwork40/afk/update-readme-memory-docs (51dee67)
  • add cross-session memory guide page (df53b12)
  • extract getBuffer/resetState/applyEdit from compositor host (92e0b7b)
  • Merge branch 'main' into afk/update-readme-memory-docs (c8680ba)
  • add a dedicated Memory section (7c82000)

v4.6.1

2026-06-15
Changed
  • Merge pull request #159 from griffinwork40/fix/compact-model-alias-resolution (6c607eb)
  • Merge pull request #158 from griffinwork40/fix/tui-markdown-block-separator (48ff55c)
Fixed
  • resolve model alias in compact summarizer (45474da)
  • restore inter-block blank separator in armed renderer (8a38d48)

v4.6.0

2026-06-15
Added
  • extend contour-shift rhythm through the mid-page sections (8d6c7f5)
Changed
  • Merge pull request #156 from griffinwork40/website/visual-signature-3 (0f8dc2f)
  • add reusable signal->depth->rise visual signature (db5cb67)
Fixed
  • remove agentafk.com link from docs sidebar nav (2126d4e)

v4.5.0

2026-06-15
Added
  • Ctrl+B backgrounds the running subagent; remove whole-turn detach (a43dad6)
Changed
  • Merge pull request #152 from griffinwork40/feat/ctrl-b-background-subagent (9217aa3)

v4.4.1

2026-06-15
Changed
  • Merge pull request #151 from griffinwork40/docs/website-favicon-and-nav-links (ccc69b0)
  • keep the matched wordmark legible in the docs light theme (d8c4b62)
  • match the docs nav brand lockup to agentafk.com (5db9a5a)
  • use main-site favicon and link out to landing page + GitHub (2e523aa)
Fixed
  • render the docs nav arc glyph via a standalone SVG file (af8c741)

v4.4.0

2026-06-15
Added
  • accept image input on vision models (#127) (0578a95)
Changed
  • Merge pull request #134 from griffinwork40/afk/accept-images-gracefully (03852e2)
  • Merge branch 'main' into afk/accept-images-gracefully (d0ef994)
  • regenerate env registry docs (3123709)

v4.3.1

2026-06-15
Changed
  • Merge pull request #150 from griffinwork40/fix/agent-config-protected-env-tier (d69c177)
Fixed
  • add protected env tier so the agent cannot self-grant via afk.env (84e7b91)

v4.3.0

2026-06-15
Added
  • surface pending briefs nudge on AFK interactive sessions (port afk-workshop#789) (487d7ff)
Changed
  • Merge pull request #149 from griffinwork40/afk-port/pr-789 (add2dc7)

v4.2.0

2026-06-15
Added
  • self-service config/env editing for the agent (06483d7)
Changed
  • Merge pull request #146 from griffinwork40/afk/agent-config-editor (f2cd787)
  • document self-service config/env editing (be051d4)
  • Merge branch 'main' into afk/agent-config-editor (e0369a8)
  • Merge branch 'main' into afk/agent-config-editor (5add8e5)
Fixed
  • route dynamic env presence-check through env.ts (78efe1a)
  • gate enableShellHooks behind human tier + harden .bak perms (02dcea1)

v4.1.1

2026-06-15
Changed
  • Merge pull request #143 from griffinwork40/afk/state-folder-transcripts (b92f8f9)
  • Merge pull request #148 from griffinwork40/docs/website-accuracy-fixes (a058f26)
  • propagate #143 (transcripts → state/, AFK_STATE_DIR governs whole tier) (5d22797)
  • fix Brave→Exa search key, document daemon --host, add /get-started (a39ef15)
  • Merge branch 'main' into afk/state-folder-transcripts (372032f)
Fixed
  • move transcripts into the state/ tier and honor AFK_STATE_DIR (8f50059)

v4.1.0

2026-06-15
Added
  • add Vercel Web Analytics (ab1ec1e)
Changed
  • Merge pull request #147 from griffinwork40/feat/website-vercel-analytics (efc66da)

v4.0.1

2026-06-15
Changed
  • Merge pull request #140 from griffinwork40/afk-port/pr-784 (ee74eb9)
  • Merge pull request #142 from griffinwork40/afk-port/pr-784-search-fix (cd076e8)
  • correct doc/runtime accuracy issues from PR 140 review (407e0b8)
  • serve docs at site root for the docs.agentafk.com subdomain (275cb3f)
  • fix Card top-spacing — remove dead gap above card titles (614d438)
  • polish — fix double headers, compact code blocks, plainer copy (2a9d1d4)
  • Merge branch 'main' into afk-port/pr-784 (d42ab54)
  • add proper light theme so the toggle switches a full light palette (port afk-workshop#784) (a3081df)
  • redirect / -> /docs so the bare domain resolves (port afk-workshop#784) (b2d58f9)
  • redesign intro — single H1, top Get-started CTA, surfaces+capabilities card grids, install code block, merged safety section (port afk-workshop#784) (f46336a)
  • Merge branch 'main' into afk-port/pr-784 (1054c7d)
  • add standalone Fumadocs documentation site (port afk-workshop#784) (909b919)
Fixed
  • gitignore next-env.d.ts (auto-generated by Next.js) (18c2942)
  • wire docs search — add /api/search route + export structuredData (39673dc)

v4.0.0

2026-06-15
Added
  • switch web_scrape search backend from Brave to Exa (882e707)
Changed
  • Merge pull request #141 from griffinwork40/switch-search-backend-brave-to-exa (9283e87)
  • point .env.example at EXA_API_KEY (5b0bcd9)

v3.112.3

2026-06-14
Changed
  • Merge pull request #139 from griffinwork40/afk/fix-subagent-model-hardcoding (52db82c)
Fixed
  • inherit default subagent model (630d6ff)

v3.112.2

2026-06-14
Changed
  • Merge pull request #138 from griffinwork40/fix/tui-markdown-block-spacing (c8c05ec)
Fixed
  • empty code-block placeholder emits one trailing newline (7435930)
  • stop double-spacing markdown blocks in REPL/chat output (61f960e)

v3.112.1

2026-06-14
Changed
  • Merge pull request #137 from griffinwork40/fix/mcp-oauth-state-param (954e570)
  • Merge pull request #136 from griffinwork40/afk-port/pr-781 (ce9cd49)
  • lead positioning with authorship; drop control-plane framing (port afk-workshop#781) (89af10c)
Fixed
  • allow late-discovered (OAuth) MCP tools past the permission gate (066b836)
  • emit OAuth state param so Mintlify-style servers connect (ee38171)

v3.112.0

2026-06-14
Added
  • add /get-started skill + harden /init detection (3ca03ae)
Changed
  • Merge pull request #133 from griffinwork40/afk/implement-get-started-skill (c3ba3c7)

v3.111.0

2026-06-14
Added
  • AFK-native SessionFacet substrate (port afk-workshop#779) (7ae9c1a)
Changed
  • Merge pull request #135 from griffinwork40/afk-port/pr-779 (a8772af)
  • Update model names in README examples (0959fd0)
  • Update description of 'haiku' agent (0d795e7)
  • Clarify description of 'afk chat' command (c0227a8)
  • Update permissions description for afk command (7fafa72)
  • Fix command alias for interactive mode in README (ff00dfc)
  • Revise README for clarity on Agent AFK features (02ffa5e)

v3.110.1

2026-06-13
Changed
  • Merge pull request #129 from griffinwork40/afk/fix-issue-104-verify (cbb7aad)
  • Merge pull request #132 from griffinwork40/afk/tackle-issue-23 (6a87c44)
  • tail-slice thinking buffer before normalize + wrap (closes #23) (ac2f57e)
  • decompose runReplLoop into phase modules (closes #104) (4c5727d)

v3.110.0

2026-06-13
Added
  • honor tools: frontmatter as enforced allowlist (port afk-workshop#571) (b1aaf8a)
Changed
  • Merge pull request #124 from griffinwork40/afk-port/pr-571 (288bd7a)
  • Merge pull request #122 from griffinwork40/afk/20260613-082858-f888c0 (30e6ddd)
  • cover extraDepth>=2 spine rendering (closes #20) (110966a)
  • Merge pull request #121 from griffinwork40/afk-port/pr-643 (2552478)
  • strengthen per-node credential resolution coverage (port afk-workshop#643) (d2f37c4)

v3.109.1

2026-06-13
Changed
  • Merge pull request #120 from griffinwork40/afk/tackle-issue-110-private (f0c7659)
  • Merge pull request #119 from griffinwork40/afk/20260612-194653-ac9eb6 (e75d067)
  • lock that subagent transitions can't drop the thinking paragraph (#110) (9de83c0)
Fixed
  • emit a single ellipsis when truncating spinner tips (d1da5c8)
  • truncate spinner tip row by display width (2b34060)
  • render user echo as a true chat bubble; label spinner tips (b430cef)

v3.109.0

2026-06-13
Added
  • surface-answerability clause + BLOCKED-artifact convention (port afk-workshop#777) (684a304)
Changed
  • Merge pull request #118 from griffinwork40/afk-port/pr-777 (9e2d768)

v3.108.0

2026-06-12
Added
  • add allow_custom for free-form entry in choice/multi_choice (6ae1f65)
Changed
  • Merge pull request #116 from griffinwork40/afk/20260612-152001-f038ae (85a5032)
Fixed
  • route multi_choice custom-entry on sentinel presence, not exclusivity (6afd36b)

v3.107.0

2026-06-12
Added
  • classify tool failures; exclude "system said no" from failure-density (4e8c6aa)
Changed
  • Merge pull request #117 from griffinwork40/feat/tool-failure-classification (71b75e0)

v3.106.0

2026-06-12
Added
  • inject measured reproducer baseline into the read-only verifier (#10) (c6e7206)
Changed
  • Merge pull request #8 from griffinwork40/fix/diagnose-verifier-honest-labeling (214e439)
  • regenerate env-registry docs after main merge (7a65799)
  • Merge remote-tracking branch 'origin/main' into fix/diagnose-verifier-honest-labeling (f33ec8b)
  • Merge branch 'main' into fix/diagnose-verifier-honest-labeling (110a6ce)
  • Merge branch 'main' into fix/diagnose-verifier-honest-labeling (cd2f482)
  • Merge branch 'main' into fix/diagnose-verifier-honest-labeling (f661252)
Fixed
  • register AFK_DIAGNOSE_BASELINE in env registry (a90c0da)
  • align verifier prompt with its read-only tool gate (841a15c)

v3.105.0

2026-06-12
Added
  • persist the user message to the transcript at submission time (da0b955)
Changed
  • Merge pull request #114 from griffinwork40/afk/i-need-more-context (f6911ad)
Fixed
  • merge the committed band across banner-eviction gaps (920b722)
  • measure first-commit geometry in the commit placement regime (c5993d5)

v3.104.6

2026-06-12
Changed
  • Merge pull request #115 from griffinwork40/refactor/parse-post-targets (8c94fb8)
  • parse chat --post value directly via parsePostTargets (f6ac2cd)

v3.104.5

2026-06-12
Changed
  • Merge pull request #112 from griffinwork40/afk/add-forced-upgrade-guard (4492f5b)
  • Merge pull request #113 from griffinwork40/afk/add-system-prompt-docs (0c18471)
  • handle confused follow-ups in Failure handling (dad10d6)
Fixed
  • force version-drift upgrade after N mid-turn deferrals (975fdcc)

v3.104.4

2026-06-12
Changed
  • Merge pull request #111 from griffinwork40/afk/diagnose-table-cutoff (08cf729)
Fixed
  • prevent table cut-off from row-count off-by-one and width overshoot (d86f2a2)

v3.104.3

2026-06-12
Changed
  • Merge pull request #107 from griffinwork40/afk/issue-102-verify-ship (065b5b8)
  • extract reusable terminal selectors (e9efc40)

v3.104.2

2026-06-12
Changed
  • Merge pull request #106 from griffinwork40/afk/telegram-msg-continuation-fix (95358c6)
Fixed
  • defer version-drift exit while a session is mid-turn (c8846cc)

v3.104.1

2026-06-12
Changed
  • Merge pull request #105 from griffinwork40/fix/daemon-loopback-bind (783a1ed)
Fixed
  • bind control HTTP surface to loopback by default (55a93d7)

v3.104.0

2026-06-12
Added
  • add --post/--post-pr headless publishing to afk chat (port afk-workshop#769) (c439b72)
Changed
  • Merge pull request #101 from griffinwork40/afk-port/pr-769 (6869a58)

v3.103.0

2026-06-12
Added
  • promote ground-state Wave 4 + ground-claim runtime-wiring mode (067b65e)
Changed
  • Merge pull request #100 from griffinwork40/feat/promote-ground-skills-to-bundle (7283f38)

v3.102.1

2026-06-12
Changed
  • Merge pull request #99 from griffinwork40/afk/fix-ghost-text-resume (034f5ca)
Fixed
  • correct soft-stop notice — "Send a message to continue" (d1c1427)

v3.102.0

2026-06-12
Added
  • per-binary cross-tool asset import from Claude Code / Codex (e875772)
Changed
  • Merge pull request #92 from griffinwork40/feat/cross-tool-import (6a53b2e)
  • Merge pull request #96 from LIghtJUNction/test-pin-empty-toolinput-breadcrumb (ccfac80)
  • pin empty tool input breadcrumb rendering (4bc3b56)
  • Merge branch 'main' into feat/cross-tool-import (24bed64)
Fixed
  • use node: specifier for readline/promises so esbuild bundles it (a619144)
  • resolve PR #92 review findings (13898a4)
  • resolve importFrom only from user-global config (security) (563cd92)
  • surface imported skill provenance in /skills listing (d3110b1)

v3.101.1

2026-06-11
Fixed
  • stop finalizeOrchestrator nuclear-flushing in-flight subagent blocks (#95) (bab6bb2)

v3.101.0

2026-06-11
Added
  • record root-session model in witness traces (#91) (e8ce193)

v3.100.1

2026-06-11
Changed
  • document subagent context injection contract (#93) (4755b92)
Fixed
  • reserve final column in echo path to fix prompt tripling (#94) (755987b)
  • web_scrape failure logging (#24) + tar create/append gating (#6) (#89) (eec4b92)

v3.100.0

2026-06-11
Added
  • inline ghost-text tab autocomplete for mid-sentence skill names (#90) (81abc62)

v3.99.1

2026-06-11
Fixed
  • ESC soft-stop cancels on first press, no post-cancel lag (#81) (6b0e586)

v3.99.0

2026-06-11
Added
  • distinctive user message display in scrollback (#88) (10eacfd)

v3.98.1

2026-06-11
Fixed
  • stop local-model subagent dispatch from hanging (#87) (2d458dc)

v3.98.0

2026-06-11
Added
  • add closure-anomaly guardrail + eval-run contract (abort subtype) (#86) (03cfc86)

v3.97.0

2026-06-11
Added
  • return browser_screenshot as a model-visible image (#82) (e9a51b0)

v3.96.1

2026-06-11
Fixed
  • stop user-card echo ghosting by reserving the terminal last column (#85) (23200c2)

v3.96.0

2026-06-11
Added
  • add eval-run, the first deterministic eval-case validation stage (#84) (86ae118)

v3.95.0

2026-06-11
Added
  • drive the user's real Chrome via chrome-devtools-mcp (afk browser connect) (#83) (ee76c5f)

v3.94.1

2026-06-11
Fixed
  • align REPL slash verbs with CLI (install / install-plugin) (port afk-workshop#701) (#79) (9899a6f)

v3.94.0

2026-06-11
Added
  • act on telemetry — loop guard, skill-depth hint, enable tool-failure-density (#80) (5255350)

v3.93.1

2026-06-11
Changed
  • split terminal-compositor + bug-hunt pass (#78) (b9d49e5)

v3.93.0

2026-06-10
Added
  • add /config and /doctor slash commands (port afk-workshop#702) (#77) (907dc5f)

v3.92.4

2026-06-10
Fixed
  • schedule live-sync no longer fails silently: create_schedule/cancel_schedule results now include daemonSynced + syncDetail (and a syncNote when the change will only apply on the next daemon start); transient afk daemon --once runs no longer overwrite-then-delete the service daemon's port-discovery file (new writePortFile option + content-guarded unlink); daemon POST /tasks accepts cronExpression as an alias for cron; creating a disabled schedule no longer live-registers it into the running daemon; afk schedule CLI subcommands (add/remove/enable/disable) now surface live-sync status via the shared http-client instead of failing silently; creating a disabled schedule now sends an idempotent DELETE to unregister any stale live daemon registration; afk schedule add --disabled now matches the tool handler (idempotent DELETE instead of an unconditional POST) so a disabled task is never live-registered into — and fired by — a running daemon; the CLI add/enable live-sync now forwards notifyOn so a (re)registered task keeps its notification setting until the daemon reloads from disk
  • stop schedule live-sync from failing silently; guard the shared port file (#76) (3c44511)

v3.92.3

2026-06-10
Fixed
  • commit content to scrollback in banner sessions — eliminates blank-gap, duplication, and lost-commit regressions when the REPL prints a banner before arming (#74) (2411b88)
  • never reap a worktree hosting a live session (#73) (6f82cb8)

v3.92.2

2026-06-10
Changed
  • Port afk-workshop#756: add fix:pins hash-pin regen + check (#69) (c38a12c)
  • shadow-verify: confidence-trigger, three-way verdict, bounded retry (#52) (e6f65b2)
Fixed
  • force-checkout managed cache to survive dirty mirror (#49) (22e8277)

v3.92.1

2026-06-09
Fixed
  • repair skill-dispatch turn rendering and accounting regressions (#68) (61d377c)

v3.92.0

2026-06-09
Added
  • OSC 8 hyperlinks on tool-lane file paths — clickable without layout change (#67) (155d415)
  • durable per-session event ledger + Telegram /watch live-tail (#66) (fb5a593)

v3.91.0

2026-06-09
Added
  • /plan off saves the plan to a file then implements it (#55) (266249d)
Changed
  • /plan off now exits plan mode, saves the plan you developed to a markdown file under <cwd>/.afk/plans/, and implements it — replacing the closure-summary ritual (which only emitted a 3-section recap to the transcript). The mode flips to default before the seeded turn so writes are permitted for the save + implementation. Shift+Tab still exits plan mode without saving or implementing (the manual-takeover escape hatch). The deferred-flip pendingPlanExit machinery is removed.

v3.90.2

2026-06-09
Added
  • telegram: configurable outbound notification routing via telegram.notify in afk.config.json (mode, primaryChatId, targets) plus AFK_TELEGRAM_NOTIFY_MODE / AFK_TELEGRAM_PRIMARY_CHAT_ID env overrides. New pure resolver src/telegram/notify-routing.ts.
  • route outbound notifications to a primary chat, not all allowed chats (#54) (e542bb2)
Changed
  • telegram: outbound notifications (daemon alerts, send_telegram, OAuth prompts, /review, digests) now default to a single primary chat — the first private/DM chat in AFK_TELEGRAM_ALLOWED_CHAT_IDS — instead of broadcasting to every allowed chat. Separates the inbound allowlist (who may command the bot) from outbound delivery. Single-chat setups are unaffected; multi-chat setups can restore fan-out with mode: "broadcast" (or AFK_TELEGRAM_NOTIFY_MODE=broadcast).
Fixed
  • strip orphaned bold markers in verdict cards; dedupe deferred row (#65) (917ac66)

v3.90.1

2026-06-09
Fixed
  • route subagent overlay refreshes through OverlayComposer (#63) (baf325d)

v3.90.0

2026-06-09
Added
  • add Claude Fable 5 (claude-fable-5) (#64) (cdbc3f1)
Changed
  • extract compositor frame composition to frame.ts (#61) (9f5c54e)
  • awa-bundled/shadow-verify: skip adversarial re-derivation on text-terminal sessions (#57) (fad6885)
Fixed
  • recompute git workspace state per read instead of freezing at session start (#62) (05b5174)

v3.89.11

2026-06-09
Fixed
  • surface the skill name in the tool lane (#59) (a8728f1)

v3.89.10

2026-06-09
Fixed
  • emit honest closure reasons (truncated, hook_blocked, max_turns_exceeded) (#60) (19206fe)

v3.89.9

2026-06-09
Fixed
  • clamp max_tokens to model ceiling and guard thinking budget (#58) (7d02d4b)

v3.89.8

2026-06-08
Changed
  • isolate no-auth tests from host credentials via AuthResolverDeps injection (#56) (5be979f)
Fixed
  • ship uses --body-file/-F instead of heredoc-in-$() (#53) (a89b9db)

v3.89.7

2026-06-08
Fixed
  • unblock native browser tools in the bundled ESM binary (#51) (fa29619)

v3.89.6

2026-06-08
Fixed
  • re-pin committed band on overlay collapse to kill the blank-space gap (#50) (5c76889)

v3.89.5

2026-06-08
Changed
  • Port afk-workshop#643: resolve compose node credentials by node model (#46) (f5fde53)
Fixed
  • wire ProviderRouter into the REPL so /model crosses provider families (#47) (eca4ed2)

v3.89.4

2026-06-08
Fixed
  • resolve session credential by session model, not env default (#42) (0959c40)
  • harvest argument-hint flags so /review --post completes (#48) (9d43b98)

v3.89.3

2026-06-08
Changed
  • reorder + dedup framework system prompt (Stage 1) (#45) (0de370b)

v3.89.2

2026-06-08
Fixed
  • enforce read-only tool gating for recon skills (ground-state) (#5) (6aeeaaa)

v3.89.1

2026-06-08
Fixed
  • make TerminalCompositor wrap-aware so soft-wrapped frame lines don't clobber committed text (#39) (a7ace49)

v3.89.0

2026-06-08
Added
  • per-model ProviderRouter — switch models across providers in one session, no AFK_PROVIDER (#38) (ab87afc)
Fixed
  • stop streaming markdown tables leaving ghost rows in the live overlay (#40) (a632844)

v3.88.0

2026-06-08
Added
  • Responses API + ChatGPT-subscription OAuth + user-configurable model slots (#33) (fe0ba5d)

v3.87.1

2026-06-07
Changed
  • control-plane reframe — README hero + package metadata (#37) (caf39da)
  • Port afk-workshop#734: feat(cli): add afk trace show — human-readable witness trace reader (#36) (71b0f35)
  • Port afk-workshop#733: feat(cli): add /review --post {github,telegram} publishers (#35) (7830a0f)
Fixed
  • keep verdict card's closing border visible in tight frames; ASCII-safe affordances (#32) (9e08de4)

v3.87.0

2026-06-07
Added
  • layer operator config over an unconditional framework base (#34) (ff03920)

v3.86.0

2026-06-07
Added
  • push full redacted task response to Telegram (#31) (dd73b2e)

v3.85.0

2026-06-07
Added
  • trim /resume from startup welcome hint (#18) (a64aa7b)
Changed
  • Port afk-workshop#689: feat(cli): process-wide stdin-claim guard (phantom-turn root-cause fix) (#28) (39ce1c7)
  • Port afk-workshop#727: fix(service): launchd daemon crash-loops (exit 127) — bake PATH into plist; + correct --trigger help (#25) (b675e78)
Fixed
  • make auto-release push atomic to prevent orphaned tags (#30) (4bd20e8)
  • sanitize Brave error body before embedding (#26) (d9df988)
  • collapse orchestrator progress map to at-most-one entry (#27) (0e79887)
  • repaint REPL prompt on fresh interactive session (#15) (108a383)

v3.84.1

2026-06-06
Changed
  • Remove codex reference from README (5394b09)
Fixed
  • unblock pre-auth CLI commands; require Node >= 22 (#16) (10ddd77)

v3.84.0

2026-06-06
Added
  • redesign /skills listing + detail UX (phase 1) (#14) (cf5e6f0)

v3.83.1

2026-06-06
Fixed
  • clamp diff body lines to terminal width in nested tool-lane paths (#9) (a3b38b5)

v3.83.0

2026-06-06
Added
  • flip default skill execution from fork to load (#7) (0deb564)
Changed
  • Update SKILL.md (d987a3e)
  • Add context field to review skill documentation (13a5ae6)

v3.82.0

2026-06-05
Added
  • flip gather + parallelize to context: load (#4) (4006c37)

v3.81.1

2026-06-05
Fixed
  • anchor flat-leaf tool roots with col-0 ◉ beside a nesting root (#3) (c1d84e0)

v3.81.0

2026-06-05
Added
  • add auto-release workflow for automated versioning and publishing (4d93403)
Changed
  • hermetically lock AFK_INTERNAL tier in audience-gate tests (#1) (aeeaa41)
  • Update README to simplify API key instructions (02ba5f9)
  • Revise README for clearer description of Agent AFK (a7da9ce)
  • Initial public release — Agent AFK (0a23cff)
Fixed
  • make HOT.md non-fatal — truncation covenant (#2) (0f91a0f)

v3.80.6

2026-06-05
Fixed
  • exclude internal-tier skills from the published npm bundle (#713) (952079a3)

v3.80.5

2026-06-04
Changed
  • Open-core relicense: Apache-2.0 + DCO + community files (#691) (3e4e4200)
Fixed
  • emit literal apostrophe in OG meta to stop Reddit double-encoding (#712) (3c634593)

v3.80.4

2026-06-04
Fixed
  • ship bundled-plugins (the awa-bundled orchestration skills) in the published npm tarball — build:dist (the publish path) never copied src/bundled-plugins/, so npm install got zero bundled skills; both build paths now route through one shared copy helper, guarded by a unit test and a publish-bundle CI assertion (#703) (00211e3)
  • emit twitter:url meta tag (last #514 migration parity gap) (#710) (05e24c3)

v3.80.3

2026-06-04
Fixed
  • restore #502 session-player terminal + 2 copy regressions (#709) (be1e214b)

v3.80.2

2026-06-04
Fixed
  • keep non-last ancestor spine continuous through nested subtrees (#708) (983d06f0)

v3.80.1

2026-06-04
Fixed
  • retry mid-stream 529 / overloaded_error events (#704) (04aca58)

v3.80.0

2026-06-04
Added
  • add /name command to show or set the session name (#700) (d5bca28e)

v3.79.0

2026-06-04
Added
  • config-driven shell-command hooks + TUI clear-band reset (reconciles #644 + #646) (#693) (cde08779)

v3.78.1

2026-06-04
Fixed
  • correct stale settings — models, codex removal, thinking enum (#699) (c5825b3)

v3.78.0

2026-06-04
Added
  • add tool call counting script and corresponding npm command (207eaff)

v3.77.1

2026-06-03
Fixed
  • harden rate-limiter against XFF spoofing + non-POST token burn (#698) (4f3ae30)

v3.77.0

2026-06-03
Added
  • migrate vanilla landing page to Next.js 15 App Router (#514) (02adee41)

v3.76.1

2026-06-03
Fixed
  • topology-spine seam — keep live-ancestor columns open in committed band + overlay (#687) (f1024e5)

v3.76.0

2026-06-03
Added
  • @-file picker — tilde/absolute path completion + content injection (#688) (10aa3a00)

v3.75.0

2026-06-03
Added
  • replace Firecrawl with local Readability/Turndown scraper + Brave search (#671) (8158044)

v3.74.0

2026-06-03
Added
  • provider-level readOnlyMemory enforcement for child sessions (#690) (8853eb0)

v3.73.1

2026-06-03
Fixed
  • scope audit-fit Glob rule, thread ship heal iters (#692) (619e4ad)

v3.73.0

2026-06-03
Added
  • durable named sessions + Telegram→CLI resume bridge (phases 1–2) (#672) (44c60e4)

v3.72.0

2026-06-03
Added
  • add /fork to branch a conversation into a parallel session (#670) (5e24f1a)

v3.71.3

2026-06-03
Fixed
  • silence depth-2 nesting ghost row (recursive no-visible-descendant) (#678) (9ff5060)

v3.71.2

2026-06-03
Changed
  • extract key-dispatch cluster from terminal-compositor (KeyDispatchHost) (#669) (435f2937)
Fixed
  • silence headerEmitted nested-skill overlay label leak + lock spine continuity (#662) (a2ffb17b)

v3.71.1

2026-06-03
Changed
  • decompose TerminalCompositor — extract paste, autocomplete, render, committed-band clusters (#665) (fb501146)
Fixed
  • stop hiding @-file completions past the dropdown cap (#667) (73c4c5a6)

v3.71.0

2026-06-03
Added
  • default afk --worktree to the remote default branch (origin/main) (#666) (8c055dd)

v3.70.8

2026-06-03
Fixed
  • count cached tokens in context-window % and auto-compact (#648) (b2e428c6)

v3.70.7

2026-06-03
Fixed
  • clamp each banner line to terminal width (#664) (f64049e1)

v3.70.6

2026-06-03
Changed
  • relocate per-model credential resolver to agent layer (#658) (a01a259)
Fixed
  • bundle poller entrypoint + resolve bundled dist layout (#663) (cd4faa2)

v3.70.5

2026-06-02
Fixed
  • collectSkillEntries() scans user + project skills fresh from disk (#656) (9553467c)

v3.70.4

2026-06-02
Fixed
  • fork-time credential fallback to parent's cached token (#657) (a5ca163c)

v3.70.3

2026-06-02
Fixed
  • advance branch-tracked installs by commit, not ref-name (#655) (dc627f9)

v3.70.2

2026-06-02
Fixed
  • poll-retry the no-ts 429 path so same-account resets auto-resume (#638) (c5258c8)

v3.70.1

2026-06-02
Fixed
  • drop stale resize ghost-erase snapshot on shrink (#653) (94c48366)

v3.70.0

2026-06-02
Added
  • cross-provider REPL ghost-text suggestions (#606) (babeac5f)

v3.69.3

2026-06-02
Fixed
  • erase old frame + committed band on terminal resize (stop ghost rows) (#650) (bfa9e3bb)

v3.69.2

2026-06-02
Fixed
  • preserve committed lines + close scrollback gap when band caps under tall overlays (#645) (cf18529a)

v3.69.1

2026-06-02
Fixed
  • reset committed band on /clear to prevent transcript resurrection (#647) (459f03e2)

v3.69.0

2026-06-02
Added
  • instrument startup-latency session_phase waterfall (follow-up to #637) (#639) (21a90466)

v3.68.0

2026-06-02
Added
  • pin the verdict-ledger rail to its own reserved footer row (#629) (98eb8e73)
Fixed
  • resolve subagent/skill child credentials by child model (#640) (e305d0fa)

v3.67.2

2026-06-01
Fixed
  • anchor childless NESTING overlay heads with ◉ (fix floating-spine bug) (#642) (3c708ae)

v3.67.1

2026-06-01
Fixed
  • heal footer bars + re-pin full committed band after full-screen scroll (#641) (8120a5ad)

v3.67.0

2026-06-01
Added
  • add session_phase waterfall events + session_sealed subagent token rollup (#637) (fec76ed)

v3.66.0

2026-06-01
Added
  • public/internal tier gate via audience field + AFK_INTERNAL (#569) (e4a3490e)

v3.65.0

2026-06-01
Added
  • add context: 'load' in-context skill execution mode (#630) (e87293f5)
Changed
  • sync review skill with upstream example-plugin (close #441) (#635) (62207782)

v3.64.0

2026-06-01
Added
  • enrich /reload-plugins output with plugin versions, source breakdown, and reload delta (#636) (f572365)

v3.63.0

2026-06-01
Added
  • pin loop-stage rail as reserved footer row via LoopStageBar (#634) (ea469d40)

v3.62.0

2026-06-01
Added
  • add bundled /refactor structural-change skill (#633) (8f2cff6)

v3.61.0

2026-06-01
Added
  • add bundled /simplify code-simplification skill (#631) (cb16af7)

v3.60.7

2026-06-01
Fixed
  • ESC soft-stop registers on first press and stops dropping the next message (#626) (4d6dc92)

v3.60.6

2026-06-01
Changed
  • unify card/error/usage boxes onto the drawBox primitive (#628) (fb6418bf)
  • move loop-stage rail to bottom of live overlay (#625) (419f91c6)
Fixed
  • re-pin committed band above frame on overlay shrink (#627) (e82c10dc)

v3.60.5

2026-06-01
Fixed
  • strip terminal_font_size from skill-dispatch sub-agents + anchor review arg (#624) (e70a8f9)

v3.60.4

2026-06-01
Fixed
  • born-named worktrees — defer creation to first turn, never move a live worktree (#617) (322d6c3d)

v3.60.3

2026-06-01
Fixed
  • match shadow-verify orchestrators at word boundaries (#623) (0b2105d)

v3.60.2

2026-06-01
Fixed
  • clamp over-wide drawBox titles + extend sanitizer test coverage (#622) (89adbbf)

v3.60.1

2026-06-01
Fixed
  • strip OSC/DCS/C1 escapes from bash/grep/subagent tool output (#621) (4719a771)

v3.60.0

2026-06-01
Added
  • extract canonical terminal sanitizer + add drawBox primitive (#620) (20f457e)

v3.59.1

2026-05-31
Fixed
  • stop skill-dispatch sub-agents from asking "which skill?" (#619) (8da8808)

v3.59.0

2026-05-31
Added
  • ack inbound with 👀 reaction + clean-final streaming mode (#615) (df6eefb0)

v3.58.0

2026-05-31
Added
  • interleave per-phase thinking summaries on TTY (#614) (c38aabf2)

v3.57.1

2026-05-31
Fixed
  • frame ask_question as a last resort, not a first move (#616) (1ca68136)

v3.57.0

2026-05-31
Added
  • !cmd shell-passthrough with foreground + background modes (#565) (c8dbe1e9)

v3.56.5

2026-05-31
Fixed
  • ESC soft-stop no longer auto-fires a phantom turn (#611) (d8ee37a)

v3.56.4

2026-05-31
Fixed
  • preserve URLs in tool-lane arg rendering (#612) (2fe02ee)

v3.56.3

2026-05-31
Fixed
  • align nested subagent thinking-tail with its tool children (#613) (da53956)

v3.56.2

2026-05-31
Changed
  • extract spinner state machine into SpinnerController (#609) (b6659b38)
Fixed
  • report 1M context window for opus_1m/sonnet_1m aliases (#610) (f3a138fa)

v3.56.1

2026-05-31
Changed
  • decompose 590-line dispatchKey into ordered handler methods (#608) (d56e50a)
Fixed
  • /tokens always shows 0 tokens and NaNm total (#607) (b0945e7)

v3.56.0

2026-05-31
Added
  • truncate large pastes into compact placeholders (#574) (4a79762)

v3.55.1

2026-05-31
Fixed
  • single-copy commitAbove + hasCommitted-gated evict-on-growth (#592) (92211df)

v3.55.0

2026-05-31
Added
  • wire default witness trace writer into daemon + Telegram sessions (#604) (0319ebe4)

v3.54.0

2026-05-31
Added
  • refresh context usage in status line mid-turn (#527) (a41d882b)

v3.53.6

2026-05-30
Fixed
  • remove 5-min timeout, abort is sole unblock path (#602) (96dcce4)

v3.53.5

2026-05-30
Fixed
  • substitute $ARGUMENT/$ARGUMENTS in plugin SKILL.md body (#566) (10b821b)

v3.53.4

2026-05-30
Fixed
  • wire skill/agent/compose executors into daemon sessions (#595) (cd033635)

v3.53.3

2026-05-30
Changed
  • change hero eyebrow pill from 'Any model' to 'CLI' (#600) (793a954)
Fixed
  • route /ground-state as a pre-write trigger, not "exploratory" (#598) (4c912c8)

v3.53.2

2026-05-30
Fixed
  • enforce read-only contract via hard-constraint prompt (#596) (15d3e10c)

v3.53.1

2026-05-30
Fixed
  • clear stale compositor overlay on /clear and /info (#594) (1827bd50)

v3.53.0

2026-05-30
Added
  • improve bot UX (items 2–8) (#588) (5b00421d)

v3.52.1

2026-05-30
Changed
  • extract types/helpers from terminal-compositor.ts (#591) (8c08c27d)
Fixed
  • preserve typed buffer as queued on ESC soft-stop (#593) (0f496a48)

v3.52.0

2026-05-30
Added
  • queue messages during compaction (#586) (f7976ab9)

v3.51.2

2026-05-30
Fixed
  • allow get_runtime_state in read-only phase forks (#584) (86b00561)

v3.51.1

2026-05-30
Fixed
  • inject advisory-lock path to de-flake CI tests (#582) (297d51e6)

v3.51.0

2026-05-29
Added
  • inject SKILL_ROOT + validate names per agentskills.io spec (#578) (ff6a09e3)

v3.50.2

2026-05-29
Fixed
  • erase every row in commitAbove Phase 1 to stop multi-line splice (#581) (99ff7ec6)

v3.50.1

2026-05-29
Changed
  • drop duplicate test gate to eliminate self-hosted double-load (#580) (2fccfe73)
  • split rendering god-classes into coherent modules (#573) (21eab719)
  • bump default testTimeout to 15s (#579) (460ab1d8)
Fixed
  • compositor respects bg status bar reserved rows (#575) (78579649)

v3.50.0

2026-05-29
Added
  • migrate opus default to claude-opus-4-8 (#576) (f225660)

v3.49.0

2026-05-29
Added
  • namespace-normalized drift comparison for bundled SKILL.md (closes #440) (#570) (d73b396b)

v3.48.0

2026-05-29
Added
  • highlight /mint in mint green ;) (#577) (a582e7a)

v3.47.1

2026-05-29
Fixed
  • route between-turn slash output through persistent compositor (#564) (2422a227)

v3.47.0

2026-05-29
Added
  • integration branch — #510 + #531 + re-enable (#563) (ec4fbd53)
  • allow memory_search in child allowlist (#567) (a0b46f74)
Changed
  • Update project description in AFK.md (d268d95d)
  • gate toolchain setup on bump!=none in auto-release (#562) (7b194d7e)
  • move playwright from optionalDependencies to dependencies (#561) (ca7cafd6)
  • add dev-only invariant guard (follow-up to #557) (#559) (1db191b2)
  • dedupe LAUNCHCTL_TIMEOUT_MS + fix docstring mode mismatch (#558) (86c686e0)
  • split launchd.ts into per-concern modules (#505) (1a3048ba)
Fixed
  • compute NEXT version from LAST_TAG, not package.json (0d9e65ec)
  • make auto-release race-safe (atomic push + tag-list sort) (f7a9871c)
  • don't inherit routing in sub-agent prompts (#568) (c4d0690a)
  • print last-turn banner so users see context after screen clear (#455) (3ee3c90b)

v3.45.3

2026-05-28
Fixed
  • allow live frame to visually shrink (ratchet fix) (#557) (326ca92)

v3.45.2

2026-05-28
Fixed
  • close two soft-stop races — arm-to-handler window + late-ESC after done (#544) (b0ba748)

v3.45.1

2026-05-28
Fixed
  • echo reasoning_content on assistant turns for thinking-mode providers (#549) (0bf93d8)

v3.45.0

2026-05-28
Added
  • auto-delete worktree on zero-turn session exit (#556) (f72ef7e)

v3.44.0

2026-05-28
Added
  • native browser-control tools (Phase 1) (#553) (aaf8b11)

v3.43.1

2026-05-28
Fixed
  • plugin-skill forward path runs preflights symmetrically (#476) (0720782)

v3.43.0

2026-05-28
Added
  • Phase 2 — workspace baseline, presence files, afk sessions command (#548) (74a39ac)

v3.43.0

2026-05-28
Added
  • Phase 2 — workspace baseline (`workspace` view in `get_runtime_state`): branch, HEAD SHA, dirty count, remote URL (33a8935)
  • Phase 2 — session presence files at `~/.afk/state/presence/`; top-level sessions write on start, remove on exit (33a8935)
  • `afk sessions` command: list active presence-file sessions in a table (33a8935)
Fixed
  • Provider-aware API key routing: `getApiKey()` no longer leaks Claude OAuth token into openai-compatible Bearer header (33a8935)

v3.42.6

2026-05-28
Fixed
  • bound user-card height + repair frame-shrink orphan rows (110d8dc)

v3.42.5

2026-05-28
Fixed
  • honor ESC soft-stop in runSkillDispatchTurn's stream loop (5ee73b8)

v3.42.4

2026-05-28
Changed
  • update waitlist welcome email copy (e3f9a0d)
Fixed
  • add get_runtime_state to permission allowlists (16e5446)

v3.42.3

2026-05-28
Fixed
  • regenerate env-registry docs with AFK_DEBUG_COMPOSITOR entry (acd251c)
  • emit \x1b[2K before Phase 1 CUP-positioned text write (4ffd15c)

v3.42.2

2026-05-28
Fixed
  • honor late-ESC after done event — suppress turn-complete (e5ace8c)

v3.42.1

2026-05-28
Fixed
  • plug Claude-OAuth-token leak into openai-compatible Bearer (d17fb89)

v3.42.0

2026-05-28
Added
  • Phase 1 — get_runtime_state tool + session identity fragment (5590e9d)
Fixed
  • patch PR #542 review — externalTools reach, cwd sanitisation, permissionMode bucket, depth contract (566f7ed)

v3.41.3

2026-05-28
Fixed
  • preflight collision check + preamble bleed recovery (340aed1)

v3.41.2

2026-05-28
Changed
  • unify vertical spacing under single-owner trailing rhythm (451717e)
  • add code-vs-runtime dual-referent signal class (#541) (0e596ca)
Fixed
  • safety-net tool flush owns its trailing blank (44a1c2c)
  • harden rhythm-contract assertions against silent regressions (12f5fe0)

v3.41.1

2026-05-27
Changed
  • lock spine topology at Bug #5 regression site (d01aac8)
Fixed
  • restore declared anchorRow on rearm; assert eviction-before-render ordering (4b959d2)
  • floor commitAbove CUP target at anchorRow so first echo skips banner (deda6e2)
  • protect pre-arm scrollback rows from CUP-positioned frame overwrite (d6a6df0)

v3.41.0

2026-05-27
Added
  • ESC soft-stop — halt stream, preserve completed work (e4f9cd0)
Changed
  • banner hint says Esc instead of Ctrl+C (670ea00)

v3.40.1

2026-05-27
Fixed
  • align subagent thinking-tail with tool-child content column (9b71491)

v3.40.0

2026-05-27
Added
  • readline-parity word/line navigation in TerminalCompositor (39d0cdc)
Changed
  • update .gitignore and add TypeScript environment file for Next.js (3c2435e)
  • temporarily disable ask_question built-in tool (ccb51d2)
Fixed
  • scrub ANSI/control bytes from subagent label extraction (6dbe791)
  • summarize agent/Task/skill JSON args to stop spine JSON leak (9a1626b)
  • route PAGER through env registry to satisfy audit:env:check (4807fda)

v3.39.3

2026-05-27
Changed
  • add Vercel analytics to landing page (ff7bbaa)
Fixed
  • close arm-window race + add shrink-path coverage (57cf89e)
  • reset CupFrameRenderer geometry on SIGWINCH to stop ghost rows (0a56d8d)

v3.39.2

2026-05-27
Changed
  • document log-update fallback invariant on StreamingMarkdownRenderer (48a6927)
  • replace trivially-passing newline-count with render-spy frame inspection (05b65bf)
Fixed
  • restore cursor visibility when CupFrameRenderer frame write fails (8b56a9c)

v3.39.1

2026-05-27
Fixed
  • enhance scrollback functionality for visible text accumulation (9cc4c55)
  • make scrollback actually reach the terminal scrollback buffer (1c00a0a)

v3.39.0

2026-05-27
Added
  • add /transcript command to view full session in $PAGER (d2f72db)

v3.38.0

2026-05-27
Added
  • add optional cwd param for per-call worktree isolation (717b0a6)

v3.37.0

2026-05-27
Added
  • provider-agnostic routing — AFK_PROVIDER + env-hint + third-party prefixes (84e1dfc)

v3.36.5

2026-05-27
Fixed
  • enforce read-only permission boundary on spec/research/plan phases (1fa7a54)

v3.36.4

2026-05-27
Fixed
  • throttle overlay repaints + park cursor at DECSTBM bottom anchor (f3ef030)

v3.36.3

2026-05-27
Fixed
  • park clear() cursor at rows-1 so commitAbove pushes scrollback (9690b9f)

v3.36.2

2026-05-27
Fixed
  • strip resume-context from config in reset() so /clear starts fresh (8eabebe)

v3.36.1

2026-05-27
Fixed
  • route ask_question elicitation through compositor onSubmit (f4beb24)

v3.36.0

2026-05-27
Added
  • close anthropic-direct parity gaps (U1+U2+I1-I3) (b8d99e5)
Changed
  • split render.ts into per-component modules (25dd6f3)

v3.35.0

2026-05-27
Added
  • append agentafk.com footer to changelog Threads posts (5574130)

v3.34.0

2026-05-27
Added
  • auto-send welcome email via Resend on signup (ebda376)

v3.33.0

2026-05-26
Added
  • add tool-failure-density detector (b9c2ef3)

v3.32.2

2026-05-26
Fixed
  • verdict-card off-by-2 overflow causing broken bordered completion box (0a2a885)

v3.32.1

2026-05-26
Fixed
  • forward cwd through skill and depth-2 subagent dispatch (d25315e)

v3.32.0

2026-05-26
Added
  • rebuild hero terminal as session-player with goblin mascot (#502) (9b67f40)
Changed
  • update AFK.md for provider rename and DAG executor status (83ca176)

v3.31.0

2026-05-26
Added
  • declare AgentSession.abort() on IAgentSession (d5f9a00)
Changed
  • cover signal-handler -> session.abort wiring (37d43bf)
Fixed
  • runtime-guard AgentSession.abort against reserved reasons (e79609e)
  • classify SIGINT/SIGTERM/SIGHUP as abort, not model_end_turn (d4a2dea)

v3.30.2

2026-05-26
Fixed
  • forward backgroundRegistry to forked child SubagentExecutors (6a13aff)

v3.30.1

2026-05-26
Fixed
  • colorize slash-command submit echo on compositor path (362e785)

v3.30.0

2026-05-26
Added
  • add AFK Dark VS Code / Cursor editor theme (a9af988)

v3.29.3

2026-05-26
Fixed
  • forward image attachments through plugin-skill dispatch (b0f014c)

v3.29.2

2026-05-26
Changed
  • remove duplicate end-of-turn block + update stale mock (0be1835)
Fixed
  • align Blocked directive bullets with parser needles (e689a82)
  • inject end-of-turn directive in code, not prompt file (beba476)

v3.29.1

2026-05-26
Changed
  • enlarge waitlist count pill for stronger social proof (2017d98)
Fixed
  • add absence-claim grounding, lower shadow-verify threshold (9edc34a)

v3.29.0

2026-05-26
Added
  • elicitation REPL prompt + Telegram inline-keyboard surfaces (36e4cb6)
  • ask_question built-in tool + elicitation router serial queue (6823914)
Fixed
  • close PR #451 review blockers — router hang + skip-contract docs (1954a47)
  • resolve all PR #451 hard blockers and medium issues (c7469d7)
  • resolve remaining blockers + mediums from ask_question PR #451 review (73ad745)
  • close shadow-verify gaps from PR #451 resolve pass (3be7523)
  • resolve 3 blockers + 5 mediums from ask_question PR review (8e0e475)

v3.28.1

2026-05-26
Fixed
  • paint stage rail once per event — drop pre-switch repaint (e821db1)

v3.28.0

2026-05-26
Added
  • add topic tag to Threads release posts (391f799)

v3.27.6

2026-05-26
Fixed
  • update waitlist call-to-action and placeholder text (71edd9c)

v3.27.5

2026-05-26
Fixed
  • route Threads changelog post to release-dedicated account (#493) (7c6a0a6)

v3.27.4

2026-05-26
Fixed
  • insert blank row between chrome and input prompt (#490) (b89b092)
  • unbreak Threads changelog post — timeout race + shell quoting (#489) (5b6179f)

v3.27.3

2026-05-26
Fixed
  • add structured truncated flag on ToolResult for overflow detection (#481) (8b6c49a)

v3.27.2

2026-05-26
Changed
  • move tool-result rendering upstream of truncation + bash JSON summary (#484) (6ba4e63)
  • Update waitlist button label to remove arrow for improved clarity (940a1e9)
  • Update waitlist count label for improved clarity and engagement (4f986d6)
  • Update hero section text and button label for improved clarity and branding consistency (2ab1fb0)
  • Revise hero section description for clarity (0495578)
Fixed
  • keep cwd live across worktree-autoname rename (#488) (8134f98)

v3.27.1

2026-05-26
Fixed
  • guard teardown errors in skill-executor finally blocks (703d57e)
  • seal child skill sessions and handle SIGHUP (22ed629)

v3.27.0

2026-05-26
Added
  • auto-post changelog to Threads on tag push (f09ef31)

v3.26.2

2026-05-26
Fixed
  • repair tool-lane topology spine across three severing sites (#470) (935cfdd)

v3.26.1

2026-05-26
Fixed
  • skip CUP anchor on first arm() to eliminate banner→prompt gap (72b6c41)

v3.26.0

2026-05-26
Added
  • surface skip reasons with dim diagnostic line (b55a7bb)
Fixed
  • resolve short model aliases before SDK send (0a2af18)

v3.25.2

2026-05-25
Fixed
  • update toolInput format in stream-renderer and turn-handler tests (5ca0379)

v3.25.1

2026-05-25
Fixed
  • address 7 review findings from PR #449 (#467) (d82b43a)

v3.25.0

2026-05-25
Added
  • emit tool.overflow_kill on bash/grep SIGKILL (#475) (75accba)

v3.24.1

2026-05-25
Fixed
  • re-issue CUP anchor on terminal resize so REPL frame survives SIGWINCH (#453) (88e3180)

v3.24.0

2026-05-25
Added
  • capture-mode for clean demo recordings + multi-file diff separators (#426) (0174a6d)

v3.23.1

2026-05-25
Fixed
  • drop breadcrumb labels — anonymous anchors in live overlay (3f54014)

v3.23.0

2026-05-25
Added
  • cap diff flush output at 30 lines with AFK_DIFF_LINES escape hatch (3b2de51)
  • add stdin input + session resume for headless parity (634710b)
  • add stream-json output format for headless consumers (ca4dc0c)
  • left-anchored subagent topology spine with ◉ turn-root (d025508)
Changed
  • Merge pull request #447 from griffinwork40/feat/diff-flush-cap (6972db4)
  • Merge branch 'main' into feat/diff-flush-cap (b667502)
  • resolve origin/main into feat/diff-flush-cap for PR #447 (4a8e86f)
  • Merge branch 'main' into afk/20260520-085208-212510 (76fc918)
  • swap tree connectors to ├─ / ╰─ for spine renderer (039891c)
Fixed
  • address PR #447 review — 4 highs + 5 mediums (335b2b0)
  • address 3 blockers and 5 medium issues from PR #419 review (4c5632c)
  • clamp orchestrator-root overlay lines to terminal width (5bb0458)

v3.22.0

2026-05-25
Added
  • replace Jina with Firecrawl as markdown/search upstream (0f1581a)

v3.21.1

2026-05-25
Fixed
  • restore [queued] suffix so Enter mid-stream gives feedback (23d5dae)

v3.21.0

2026-05-25
Added
  • Sprint 3 — replay-mode eval-gen + eval-cases CLI (83288c6)
  • Sprint 2 — template-mode propose + closure/subagent detectors + triage (f26b298)

v3.20.4

2026-05-25
Fixed
  • unstick REPL after usage-limit auto-resume (#448) (cd45c94)

v3.20.3

2026-05-25
Fixed
  • preserve multi-line clipboard paste in compositor (7b1d33a)

v3.20.2

2026-05-25
Fixed
  • loud-fail empty fenced code blocks with placeholder text (2b7b68f)

v3.20.1

2026-05-25
Fixed
  • reset scan cache on update so new SKILL.md is visible without restart (F2) (7f2f8bc)
  • require name+description keys explicitly in generate.md (56d665c)

v3.20.0

2026-05-25
Added
  • auto-cd parent shell into preserved worktree on exit (b2b0d71)
Fixed
  • address shell-init review — H1/H2 portability, M1/M4 correctness (fb2af1d)
  • harden cd-on-exit marker and shell-init wrapper after PR review (71970e8)

v3.19.0

2026-05-25
Added
  • emit skill.dispatched/completed for inline registry skills (57994eb)
Changed
  • repair corrupted lock file from aborted schema migration (7ec2f27)
  • remove obsolete .afk-worktree-meta.json file (1d4b153)
Fixed
  • stream photo download with size cap instead of buffering (7407e12)

v3.18.2

2026-05-25
Fixed
  • apply dropdown selection on Enter — Stage 3e port gap (54c5a37)

v3.18.1

2026-05-25
Fixed
  • clamp duration at 0 on clock skew (review C2) (9f98c44)
  • cap duration at thinking→acting boundary + render above response (f3ee1a3)

v3.18.0

2026-05-25
Added
  • add /font-size REPL command sharing terminal_font_size handler (52aa482)
  • add terminal_font_size built-in tool (97c3849)
Fixed
  • emit trailing blank after subagent done-block (42d8be5)
  • prefer last verdict within tier (qualify self-correction) (546b1ea)
  • generator sub-agent is tool-less; wire generate.md prompt (11d3b8d)

v3.17.3

2026-05-25
Changed
  • long-comment prefix convention + targeted comment shrinks (1fffa7c)
Fixed
  • anchor overlay breadcrumb spine with dim ◉ marker (c13a1fe)
  • add headerEmitted guard to renderFlushChildren (a021a7d)

v3.17.2

2026-05-24
Fixed
  • mirror formatAgentSummary spine topology in formatAgentHeader/Children (#450) (34b76fe)

v3.17.1

2026-05-24
Fixed
  • route AFK_SKILL_STREAM_VERBOSE through env.ts (post-merge audit gap) (4a02a16)
  • unblock CI on PR-416 — install.test fake + AGENT_AFK_ASCII env registry (952060b)
  • close PR-416 review findings — hook bypass, HTTPS gap, Git ≥2.31 dependency (c9e2660)
  • plugin install hardening — HTTPS-only, git hook suppression, install warning, skill prompt-loader path guard (S7-step1/P3) (1e845ac)

v3.17.0

2026-05-24
Added
  • left-anchored subagent topology spine with ◉ turn-root (#350) (1bab3bf)

v3.16.0

2026-05-24
Added
  • wire persistent compositor into REPL — Stage 3e (4e28e5d)
  • InputSurface armCompositor lifecycle + idle-mode compositor semantics (f0c129f)
  • port bracketed-paste + clipboard image attachments to TerminalCompositor (9e7dc88)
  • StreamRenderer can borrow a TerminalCompositor; promptText accepts () => string (1be7b9a)
  • add idle input mode + onSubmit hook to TerminalCompositor (9dab928)
  • thread promptText through StreamRenderer → compositor (c5bebc7)
Changed
  • Merge pull request #424 from griffinwork40/afk/20260523-120253-4b3e3e (920ad3c)
  • Merge branch 'main' into afk/20260523-120253-4b3e3e (4f02680)
  • extract createSkillRenderer factory + fix latent /init borrow bug (53950e0)
  • Merge branch 'main' into afk/20260523-120253-4b3e3e (c4b374d)
  • add InputSurface ↔ TerminalCompositor integration coverage (f3c441e)
  • make slash Writer route-aware via optional WriterSink (03518e8)
  • introduce InputSurface as the long-lived REPL input abstraction (8cf9393)
Fixed
  • wire skill onCancel through borrowed compositor with capture+restore (a855dc0)
  • route in-stream notifications through completionWriter (extends ed4318b) (38bf6b1)
  • clear autocompleteState before persistent-compositor repaints (50632aa)
  • anchor first log-update frame at terminal bottom in compositor.arm() (ce1dcfe)
  • render dim breadcrumb for headerEmitted ancestors so live children don't appear orphaned (H4) (efbdaf8)
  • preserve in-flight subagent rows when orchestrator emits content chunks (H3) (1a0dece)
  • isolate borrow-dispose cleanup steps so setSpinner throw cannot strand stale overlay (7729dab)
  • address PR #424 review findings (H1–H8, M1, M4, M6, M7, L2) (03d1f89)
  • close Stage-3e compositor duplication — borrow path + post-arm raw writes (ed4318b)
  • widen setInputMode flush invariant to any → idle (3241dba)
  • agent-turn input parity — slash colorization, always-on caret, Tab applies dropdown (8f95d0c)

v3.15.0

2026-05-24
Added
  • handle photo messages with optional caption (b71c12a)
Changed
  • regression tests for busy-spin cascade gate (PR #396) (a07882a)
Fixed
  • apply PR #396 review blockers — capability guard, SSRF URL assert, gate reorder (6979270)
  • resolve PR #396 review blockers — token leak, busy-spin, MIME sniff, tautological test (9f2a703)
  • resolve PR #396 security and reliability blockers (152e162)
  • apply PR #396 review fixes (85ad3dd)

v3.14.0

2026-05-24
Added
  • add stream-json output format (#419) (69a0bf8)

v3.13.3

2026-05-24
Fixed
  • aggregate timeout, production-visible warn, dispatch defaults (9543b6b)
  • hook dispatch timeout + subagent fork AbortGraph cleanup (R3/R4) (a7ab48d)

v3.13.2

2026-05-24
Fixed
  • isolate pnpm/action-setup dest per-job to runner.temp (e3874d0)

v3.13.1

2026-05-24
Fixed
  • populate ProviderUsage.durationMs on every turn.completed yield (07bbe2a)
  • bound cwd-fallback tests to tempDir, not process.cwd() (0714f67)

v3.13.0

2026-05-24
Added
  • add drift test + port cwd anchor to ship (71f65a3)
  • centralized env-var registry + audit gate (#429) (8edd275)
  • route child sessions via providerForModel (263e25e)
  • handle oauth-limit-no-ts 429, /reauth slash command, account info in pause card (4c02593)
Changed
  • route auto-release + publish to self-hosted runner (411c483)
  • drop #4ade80 from changelog favicon, swap to accent-soft (5603702)
  • persistence reframe + contour-layer + 2nd signal-field (168edbe)
  • lock #4ade80 to success-state, trim .access::before to 1 radial (bcaaf49)
  • surface memory feature in hero typewriter + runtime section (5adbebb)
  • Remove comment on brand wordmark font size (962e598)
  • bump topbar logo mark from 28px to 34px (1e09d03)
  • route lint-build + test to self-hosted runner (mac-afk-1) (4d9d3ba)
Fixed
  • remove duplicate proc.on close handler that broke logic (991dedb)
  • bump .brand__wordmark font-size to 19px (59f7e3f)
  • tool-lane truncation, bash exit-code labeling, skill partial-output preservation (#423) (ac537a4)
  • 6 bugs from 463k-token MLX overrun — allow-list, context clamp, mlx-community limits (f2b200f)
  • address PR #412 review feedback — process-group kill, descendant test, token formula, non-blocking polish (f1e9bc5)
  • bash SIGKILL on timeout/abort + auto-compact formula drops cache fields (S10/P5) (bb7eade)
  • resolve /review 425 F1+F2+F3 blockers (2004fc7)
  • resolve all HIGH/MEDIUM PR review blockers on V8 overflow guard (31c848b)
  • guard grep and bash handlers against V8 max-string-length crash (799e7a7)
  • route OpenAI-parent subagents to OpenAICompatibleProvider (ab0a7fa)
  • plugin skill slash commands dispatch via skill-invocation payload, not raw text (fe21349)
  • actually rebuild SDK client on hot-swap + wire /reauth to swap running session (a68cbaa)
  • suppress overlay re-render of already-committed ancestor headers (4725717)

v3.12.1

2026-05-23
Fixed
  • address PR #415 follow-ups (exit code, unref, prod logging) (81f1628)
  • reliability micro — runInBackground catch, close await, waitForReset unref, farm finally (R1/R2/R5/R6) (56dadef)

v3.12.0

2026-05-23
Added
  • add /cd command to set per-chat working directory (e563d12)

v3.11.1

2026-05-23
Changed
  • remove vestigial bootstrap scripts (#421) (545dce4)
Fixed
  • prose-question guard (H1) + codebase lane override (H2) (#418) (78c9ec3)

v3.11.0

2026-05-23
Added
  • dead-owner verdict, /worktree slash, boot-time auto-prune (#364) (2bf6d41)

v3.10.5

2026-05-23
Fixed
  • plugin install/remove invalidate scan cache + removePlugin name guard (F2/S8) (b57a066)

v3.10.4

2026-05-23
Fixed
  • AFK_HOME validation + migrateDirOnce EXDEV fallback (F1/F5) (f617705)

v3.10.3

2026-05-23
Fixed
  • extend write denylist with AFK config + tool tokens (S4) (01b2ba8)

v3.10.2

2026-05-23
Changed
  • git rm test-bot files + correct CLAUDE.md runDAG description (S16) (#409) (7f7b7d9)
Fixed
  • auth wizard no-echo + creds/transcript 0o600 (S1/S2/S3) (#413) (4dddba7)

v3.10.1

2026-05-23
Fixed
  • propagate worktree cwd into subagents and preflights (#408) (c61a5a1)

v3.10.0

2026-05-23
Added
  • auto-compaction (opt-in) + SDK dependency lock (#405) (f9e052a)

v3.9.1

2026-05-23
Fixed
  • preserve cursor across DECSTBM toggles in withFullScrollRegion (#407) (f962403)

v3.9.0

2026-05-23
Added
  • background-subagent TUI parity (Ctrl+B hints, per-job status rows, auto-deny elicitations) (#362) (d2e5f8f)

v3.8.10

2026-05-23
Fixed
  • forbid direct push to default branch + invented convention (63f3ed3)

v3.8.9

2026-05-23
Fixed
  • bump pinned qualify hash to match merged rule-5 paragraph (#399 follow-up) (1f5c587)

v3.8.8

2026-05-23
Fixed
  • re-wrap streaming TUI overlay on terminal resize (220060b)

v3.8.7

2026-05-23
Changed
  • explain why rule 5 systematically fires on gate/guard skills (e6cbf29)
Fixed
  • inline Copy button on install command, drop forced overflow (35ac697)

v3.8.6

2026-05-23
Fixed
  • narrow skill anti-recursion guard to same-skill only (436620e)

v3.8.5

2026-05-23
Fixed
  • emit subagent.completed/.failed for background dispatches + fork-throws path (1a8172a)

v3.8.4

2026-05-23
Fixed
  • accept null in hypothesis schema, tighten prompt (810bf18)
  • clamp thinkingTail rows to terminal width (ab7f8b9)

v3.8.3

2026-05-23
Fixed
  • preserve attachment indicator after message submit (1ab1d57)

v3.8.2

2026-05-23
Fixed
  • guard user-echo writes against DECSTBM sub-region scroll loss (9d516e7)

v3.8.1

2026-05-23
Fixed
  • label-aware overflow — count honesty, sibilant plural, sanitize (ef51ee4)

v3.8.0

2026-05-23
Added
  • P04 trace instrumentation around runPreflight (f9fb92f)
  • wrap plugin-forward manifest in (999d856)
  • wire plugin-forward path + review-pr preflight (8982c79)
  • wire native skill handler + optional manifest block (586cffe)
  • add SkillInvocation types + registry (67b1dad)
Changed
  • Merge pull request #317 from griffinwork40/afk/20260518-preflight-deferred (62971f0)
  • Merge branch 'main' into afk/20260518-preflight-deferred (7ff04bb)
  • Merge branch 'main' into afk/20260518-preflight-deferred (2b806fb)
  • Merge remote-tracking branch 'origin/main' into HEAD (0e12b97)
  • T03/T04/T05 additional coverage (b40df4b)
  • A01/A02/A05/T06 registry test-isolation + explicit init (6d36849)
  • remove unnecessary as-unknown-as sessionId cast (ef20153)
  • Merge remote-tracking branch 'origin/main' into afk/20260518-055423-b599b7 (a37a979)
Fixed
  • H2/H3/H4/M2 — PR #317 review blockers (22fb669)
  • C03/C04/A03/F12 small correctness and documentation (1988d7d)
  • P02/P03/F08/F10/F11/C05 review-pr hardening (8f3ed6a)
  • P01/P05/F07 artifact-dir — rate-limited prune, warn logging, random fallback id (8276e8f)
  • F04/F05/F06 filesystem safety hardening + T02 tests (5211786)
  • C01 — preflight only runs on plugin-forward path, not native slash commands (9e980e2)
  • F01/F02/F03 security chain + C02 registry key correction (5cbe1a6)
  • prune artifact dirs older than 7 days on each call (ae26ca7)

v3.7.3

2026-05-23
Fixed
  • guard label-aware overflow against pre-merge placeholders (8c8cae2)
  • preserve dispatch labels in tool-lane overflow (f396d73)

v3.7.2

2026-05-23
Fixed
  • preserve isolated newline deltas in streaming TTY renderer (8357dda)

v3.7.1

2026-05-22
Fixed
  • normalize case + scope tier-3 regex locally (b919d23)
  • tighten verdict parser — tier-2 modifier gap + tier-3 nearby-anchor fallback (ff1a78a)

v3.7.0

2026-05-22
Added
  • Phase 1A — read-only witness-trace scanner + failure cards (eee58d4)
Changed
  • skip setOverlay repaint when overlay text is unchanged (28cfe3b)

v3.6.0

2026-05-22
Added
  • render live thinking overlay as a wrapped paragraph (ba42900)

v3.5.0

2026-05-22
Added
  • add npm install command with copy button to #access section (#384) (b8a292b)

v3.4.0

2026-05-22
Added
  • add MCP client support — stdio + remote (HTTP/SSE) + OAuth + live refresh (#374) (a3e8c4c)

v3.3.4

2026-05-22
Fixed
  • propagate traceWriter through SkillExecutor + surface wall-clock in Done summary (#378) (6721351)

v3.3.3

2026-05-22
Fixed
  • close 4 schema gaps surfaced by telemetry audit (#383) (c42481c)

v3.3.2

2026-05-22
Fixed
  • defensive verdict parsing + write-step name-collision guard (#382) (a66d8fd)

v3.3.1

2026-05-22
Changed
  • PR #376 follow-ups (f430388)
Fixed
  • summarize bash JSON output + move tool-result rendering upstream of truncation (#380) (1f33c1a)

v3.3.0

2026-05-22
Added
  • surface visible extended thinking on Opus 4.7 + default to max effort (824015a)
  • route HF-style org/model ids to openai-compatible (a95111c)
Fixed
  • widen effort=max default to opus-4-6/sonnet-4-6 + fix effort beta header value (1632b33)
  • stop flag dropdown from auto-popping on every space (fc100ee)
  • suppress 💡 suggestion echo when it duplicates the response (39fecb0)

v3.2.1

2026-05-22
Fixed
  • eager-emit ancestor frame headers in ToolLane.flushSource (2c2e103)

v3.2.0

2026-05-21
Added
  • route Messages traffic through a local Anthropic-compatible server (#239) (2578100)

v3.1.0

2026-05-21
Added
  • hydrate stats + welcome banner on session resume (#316) (2142890)
Changed
  • add founder anecdote + finalize 'Built by' credit (#308) (139bc02)

v3.0.1

2026-05-21
Fixed
  • launchctl-throws test uses telegram, not daemon (b2341b0)

v3.0.0

2026-05-21
Added
  • afk service install/uninstall/status — macOS LaunchAgent install for always-on afk telegram / afk daemon (auto-start on login, relaunch on crash). Paired with /service-setup skill that walks the user through install end-to-end. (dc69966, dfcedff, #346)
  • Pixel-art goblin mascot in the interactive loading screen via half-block renderer (10×10 sprite, pupils + cheek highlights). (#354)
  • Loading-screen tips + dropdown tooltip hints in the CLI for first-run discoverability. (#294)
  • Daemon pull-trigger mode with a queue store — daemon can now drain a persisted queue instead of cron-only execution. (issue #337, slice 1)
  • OpenAI-compatible provider REPL surface parity with anthropic-direct (streaming, tool dispatch, auth diagnose). Closes the GPT/o-series migration off the legacy openai-codex provider. (3e932be)
  • PLUGIN_ROOT env injected into plugin-skill subagent processes so vendored plugin assets can resolve their own root.
Changed
  • query.ts decomposed into single-responsibility units: repairOrphanToolUses (5e2de54), SessionState bag (e456201), AbortCoordinator (739d600), RetryLayer for OAuth 401 + 429 (5d2fa8d), and compactHistory handler (95bf4b9). Zero behavior change; the monolith is gone.
  • Schema-as-source-of-truth for tool classification. SAFE_TOOLS, WRITE_TOOLS, and the read-tool predicate are now derived from AnthropicToolDef.{category, concurrencySafe, riskClass} rather than 6+ drifting hand-maintained lists. (#361)
  • sumProviderUsage promoted out of a provider-specific location to src/agent/usage.ts so both providers share the same accumulator. (c481852)
  • Operator-legibility phase 1 polish across the interactive surface. (7fa2773)
Fixed
  • tools.0.custom.<field>: Extra inputs are not permitted 400 from the Anthropic Messages API — internal tool classification metadata no longer leaks across the wire. (#367)
  • /review api-compat false positives on dead code — added a reachability pre-check so removed-but-unused exports stop firing the api-compat dimension. (#349)
  • /ground-state charter drift — read-only contract is now enforced inside SKILL.md so the skill cannot mutate state. (c7321cb)
  • Plugin sandbox escape via symlinkassertWithinPluginsDir now realpaths both parentDir and dest's dirname before the containment check. (#339)
  • Skill-frame teardown on child flushSource drain — child-stream completion no longer orphans the parent skill frame. (a6758c0)
  • Subagent stream-renderer leak on error — throttle entry is now cleaned up on the error path. (bbe85be)
  • redact credential-shaped strings in resume-swap error reasons (PR #355 H-1/H-2 follow-up) — SDK 401/403 errors during buildSession or waitForInitialization no longer echo Bearer / sk-ant-… to the terminal.
  • guard stored.startedAt with ?? Date.now() fallback so legacy stored sessions saved before the field existed do not produce NaN status-line durations after /resume.
  • reset the verdict ledger (terminal-state trajectory rail) on /resume — outgoing session trajectory no longer contaminates the resumed session.
Breaking
  • SlashContext.session type changed from AgentSession to SessionRef (breaking for external slash-command authors). Update any direct reads of ctx.session.<method> to ctx.session.current.<method>. All built-in handlers have been migrated. Required to make the mid-session swap mechanism transparent to slash commands through a stable pointer. (#355)
  • Tool schema wire-boundary projection. Internal AnthropicToolDef fields (category, concurrencySafe, riskClass) are now stripped at the wire boundary via a WireToolDef projection; the Messages API call signature is narrower. External code synthesizing tool definitions should target AnthropicToolDef (rich, internal) — the projection happens inside the provider. (#367)
  • Layering rehome. keychain, tool-category classification, telegram error predicates, and upsertEnvVar moved out of src/cli/ / src/telegram/ to their canonical homes (src/agent/auth/, src/agent/tool-category.ts, src/utils/). Re-export shims preserve backward-compat for known internal callers; deep imports into old paths from external code may need updating. (#361)
Known
  • /allow-dir filesystem grants persist across /resume — the underlying AnthropicDirectProvider is process-scoped (constructed once at bootstrap, reused by the swap), so its _sharedReadRoots cache survives session boundaries. This is intentional given the current API surface (no resetGrants exists). To revoke grants, exit and restart afk.

v2.33.0

2026-05-20
Added
  • unify REPL input surface across user and agent turns (38c1bde)
  • footer mark + complete Twitter card tags (d4cadb8)
  • Handoff Arc brand identity — bigger, brand-able mark + favicon family + OG card (cff7409)
  • phase reducer + test-runner detector + risk classifier (pure-function trio) (f9fb3f4)
Changed
  • v2.32.0 (efaf032)
  • split tool/chrome roles and retheme code-block syntax (7518a73)
  • split blue-family palette across semantic roles (c238b78)
Fixed
  • address PR #332 review — 2 bugs + 2 test gaps (98266ca)
  • repair orphan tool_use blocks to prevent 400 on next turn (d14f347)
  • anchor inline-handler subagents under their skill's lane entry (a265bbd)
  • correct-by-construction HTML conversion via placeholder pass (0ed4a79)

v2.32.0

2026-05-20
Added
  • phase reducer + test-runner detector + risk classifier (pure-function trio) (f9fb3f4)

v2.31.1

2026-05-20
Fixed
  • unblock npm publish by deflaking /tasks recency-sort test — BackgroundAgentRegistry.register() returns a snapshot copy, so post-register startedAt mutation was a no-op; on fast CI the sort fell back to insertion order. Test now stubs Date.now() before each register() so the live InternalJob.startedAt carries the intended timestamp.

v2.31.0

2026-05-20
Added
  • route GPT/o-series to openai-compatible + retire openai-codex (slice 5/5) (8ae2ab9)
  • wire openai-compatible provider + auth diagnose command (slice 4/5) (6e94ec5)
  • tool dispatch via SessionToolDispatcher (slice 3/5) (4e8e935)
  • text-only streaming end-to-end (slice 2/5) (ddfd623)
  • auth resolver + diagnostic (slice 1/5) (9ee440a)
Changed
  • Merge pull request #304 from griffinwork40/feat/openai-compatible-provider (858d9fb)
  • Merge branch 'main' into feat/openai-compatible-provider (65995e6)

v2.30.0

2026-05-20
Added
  • Phase 3 — tool schemas, handlers, CLI command, handler tests (05ff23d)
  • Phase 2 — daemon integration (notifyOn, REST routes, port file, load-persisted) (e3a7aa4)
  • Phase 1 — data layer (schedule-store + paths + tests) (523736b)
Changed
  • throttle-gate markdown render + fire-and-forget PostToolUse (9b03eb0)
Fixed
  • materialize notifyOn='failure' default at write time (f272608)

v2.29.4

2026-05-20
Fixed
  • zombie-state hardening for background work + Haiku 4.5 pricing (5e4c376)

v2.29.3

2026-05-20
Fixed
  • chronological interleave for subagent done-blocks (#328) (8ba83ea)

v2.29.2

2026-05-20
Fixed
  • forward image attachments through slash commands (C+D hybrid) (961539f)

v2.29.1

2026-05-20
Changed
  • unit tests for assertSafePluginName / assertWithinPluginsDir (#216) (5062a68)
  • document POSIX-dead startsWith('/') as Windows guard (#215) (7db4bc6)
Fixed
  • tighten KEY=value replacer to avoid misleading length=0 (#214) (9c96379)
  • refresh lastActivity on inflight createSession rejection (#213) (881903e)
  • redact secrets in scheduler errorMessage (#212) (74e99b8)

v2.29.0

2026-05-20
Added
  • wave 4 — executor wiring + create-session-factory (daf6e5f)
  • wave 3 — reply sink posts replies via threads CLI (752aef6)
  • wave 2 — classify, route, dispatch per-user agent sessions (5657b45)
  • add polling-based mention ingress (wave 1: read path) (6476164)
Fixed
  • close shared MemoryStore on daemon shutdown (36b2cd0)

v2.28.0

2026-05-20
Added
  • inline colored diffs for edit_file/write_file (#313) (6fbb370)
Changed
  • edit_file tool result formattool_result content for edit_file is now a single-line message (e.g. Replaced 1 occurrence in path/to/file). The diff context previously appended after a double-newline (${resultMsg}\n\n${diffContext}) is no longer included in tool_result content; it is emitted out-of-band as a tool_diff event (CLI-only render channel). Consumers that parsed the multi-line format must update accordingly. (#313)
  • Shorten hero eyebrow pill so it doesn't wrap on mobile (1b2175c)
  • async-first hero copy + SEO meta updates (#312) (2dda5f4)

v2.27.1

2026-05-19
Changed
  • afk daemon is now invokable without --task or --cron; trigger defaults to sessionstart and task defaults to /forge-friction --auto when neither flag, env var (AFK_DAEMON_TASK), nor afk.config.json daemon.task provides a value (closes Daemon Gap B)
  • afk daemon --cron <expr> (without an explicit --trigger) now auto-selects cron trigger mode, matching the intent of providing a cron expression
  • afk.config.json.example updated to show the daemon.task / daemon.taskId fields
Fixed
  • default trigger to sessionstart; pass --cron flag through (Gap B) (#311) (bdf3ef9)

v2.27.0

2026-05-19
Added
  • unify /tasks across turn-detach and subagent-job facilities (20b8d2b)
  • wire BackgroundAgentRegistry into BackgroundStatusBar (8295f2d)
  • add EventEmitter surface to BackgroundAgentRegistry + BackgroundItem union (8b12d8b)
  • cap concurrent jobs + TTL eviction + cancel-source attribution (03ae081)
Changed
  • add BackgroundJobCapError teardown coverage (H-2) (a5c2a8b)
  • clarify Phase 3 commit message drafting process (a895e5f)
Fixed
  • improve join() eviction error message (M-1) + TTL eviction tests (M-3) (d2977aa)
  • store cancelSource per-job to fix cascade attribution dead code (H-1) (7f6ba33)
  • add CANCEL_DRAIN_TIMEOUT_MS to cancelAll() to prevent teardown hang (C-2) (05da7f6)
  • wire setTasksRegistry in repl-loop bootstrap (C-1) (9afd4c9)

v2.26.7

2026-05-19
Changed
  • narrow /mint routing trigger and demote from lead bullet (e36a9db)
Fixed
  • add Dispatch protocol section to enforce parallel sibling dispatch (68e88d5)

v2.26.6

2026-05-19
Fixed
  • add Write-step invariants to prevent skill_name="unknown" silent-failure (c303850)

v2.26.5

2026-05-19
Changed
  • emit in-flight badge inline via completionWriter (d612533)
Fixed
  • resolve PR #321 review blockers and majors (95c04dc)

v2.26.4

2026-05-19
Fixed
  • distinguish 'nothing-to-summarize' from 'history-too-short' (72e31c2)
  • resolve session-stuck and malformed-HTML regressions (P0) (352f46d)

v2.26.3

2026-05-19
Fixed
  • correct-by-construction fixes for fenced code, ordered lists, hr, blockquote (bab3b09)

v2.26.2

2026-05-19
Changed
  • regression tests for ordered-list renumbering + trailing newline (6e0a7ec)
  • rewrite README for the npm audience; move dev docs under docs/ (de2b70a)
  • align package metadata with proprietary status (0842463)
  • memoize disk-tier reads on the cold-start path (fd4e0cc)
Fixed
  • trailing newline after lists + ordered-list start-number honoring (108a5b6)

v2.26.1

2026-05-19
Changed
  • tool-output render registry; memory tools summarized via chunk.display upstream of truncation
Fixed
  • bash tool-lane no longer leaks truncated raw JSON for commands like gh pr view --json; structured JSON output renders as {key1, key2, …} / [N items] via the render registry
  • move tool-result rendering upstream of truncation + bash JSON summary (#302) (5c1b220)

v2.26.0

2026-05-19
Added
  • skill-invocation plumbing — types, registry, native handler, plugin-forward, review-pr (#287) (0cb3e72)

v2.25.3

2026-05-19
Changed
  • Delete .github/workflows/claude.yml (0fce048)
  • Delete .github/workflows/claude-code-review.yml (c87d4b5)
Fixed
  • improve handling of pre-aborted signals (abaf41a)

v2.25.2

2026-05-19
Fixed
  • retry transient 529/503 errors with exponential backoff (b846a8e)

v2.25.1

2026-05-19
Fixed
  • auto-start bot after allowlist save (95378a7)
  • resolve bot entrypoint in bundled dist layout (816c8d2)

v2.25.0

2026-05-19
Added
  • background mode for fire-and-forget subagent dispatch (#288) (e970152)
Changed
  • soften hero terminal prompts (d6d9765)
  • rename web_fetch tool to web_scrape (ed7115b)
Fixed
  • close JSDoc above backgroundRegistry field (db2b97a)

v2.24.0

2026-05-18
Added
  • preserve @ in file dropdown + highlight @path tokens in buffer (c4e448e)
Changed
  • BREAKING (REPL elicitation): form-mode request with no usable schema properties now
  • form-mode optional-field skip now surfaces fieldDef.default in the accept payload
  • redesign hero into 2-column grid with anchored social proof (c8ec384)
  • simplify header to Changelog + Join waitlist CTA (9b1a8cd)
  • cap section padding so trimmed content isn't dwarfed (93f77b1)
  • salvage non-overlapping wins from #298 (48b873e)
  • Feat/form mode elicitation (#284) (1819add)
Fixed
  • afk telegram start now resolves the bot entrypoint in the published flattened
  • /telegram-setup skill now auto-starts the bot after saving the allowlist
  • trim input before checking :cancel / :decline escape hatches; previously
  • required field absent from schema.properties now declines with a diagnostic before
  • between-field abort detection: form-mode now checks signal.aborted at the top of
  • cap form-mode required[] array iteration at MAX_FIELDS * 2 to bound allocation
  • emit a one-shot warning when MAX_FIELDS=64 or MAX_ENUM_VALUES=256 caps trigger,
  • synthesizeAgentEntry now computes maxWidth and passes it through to both
Security
  • sanitise all MCP-server-controlled strings (server name, message, URL, elicitation id,
  • filter __proto__ / constructor / prototype keys from MCP schema; build accept
Tests
  • add direct unit tests for sanitizeSchemaString (src/cli/_lib/sanitize.test.ts)
  • add TTY-path coverage for handleSubagentEvent asserting compositor setOverlay

v2.23.0

2026-05-18
Added
  • three-layer upgrade safety — postinstall kill, error sanitization, version drift check (3232f90)
Changed
  • accept "sure" as approval signal alongside approve/yes/lgtm (5d2fc5a)

v2.22.2

2026-05-18
Fixed
  • reduce text density and increase breathing room (#297) (04f74a9)

v2.22.1

2026-05-18
Fixed
  • Escape dismisses dropdown; uniform muted color for all trigger kinds (#282) (789f108)

v2.22.0

2026-05-18
Added
  • cap live overlay at 6 root rows with elision summary (#276) (862cf1b)
  • implement access waitlist form and update access section messaging (e265bbb)
Changed
  • remove aliases from /changelog command and update related tests (a3ee0e6)
Fixed
  • restore seedBuffer auto-submit fast-path (regression from e51ec5d) (#292) (1ba7976)

v2.21.0

2026-05-18
Added
  • Day 4b + 4c + 4d — inline-button digest + Discard/Diff/Respawn/OpenPR callbacks + schema v3 [speculative branch farm] (#273) (df7bf36)

v2.20.0

2026-05-18
Added
  • show effective cwd in the persistent bottom status line (0a2a46d)

v2.19.1

2026-05-18
Changed
  • added .vercel to .gitignore (dd50366)
Fixed
  • bust waitlist-count cache on insert + lower JS cache TTL (91836ee)

v2.19.0

2026-05-18
Added
  • seedBuffer fast-path with echo + repl-loop test coverage (PR #271 review feedback) (37cfaa6)
  • auto-rename worktrees from first user message via haiku (55600c9)
Changed
  • add coverage for T1/T10/T13/T15/T19/T21+T22 from PR #271 review (ed89c62)
  • fire first-turn hook concurrently with runTurn (P1) (7a8fe23)
Fixed
  • C1 provider.setCwd() proxy + H2 live AgentSession T19 + M4/M8 residuals (6da5d9a)
  • emit console.warn when no text blocks returned (T21b) (7c9bf00)
  • correctness fixes C1/CA2/C3/C4 from PR #271 review (6fca5c5)

v2.18.0

2026-05-18
Added
  • swap waitlist storage from Supabase to Neon (9e7ca44)

v2.17.0

2026-05-18
Added
  • subagent permission system + worktree isolation (#242) (1ffaeb7)

v2.16.0

2026-05-18
Added
  • waitlist signup via Supabase with live count in hero (3e2a003)
Fixed
  • thread session cwd through all tool handlers and surfaces (519991b)

v2.15.1

2026-05-18
Fixed
  • move subagent narration below tool children (0704363)

v2.15.0

2026-05-18
Added
  • route subagent done-blocks above prose when emitted pre-markdown (89d2d47)
Changed
  • assert agentType propagates from SubagentExecutor to renderer (7e94a0a)

v2.14.4

2026-05-18
Fixed
  • resolve /review findings on PR #275 (a187db5)

v2.14.3

2026-05-18
Changed
  • add coverage for update command, fetchLatestVersion, and banner ordering (e33da04)
Fixed
  • address PR #278 review feedback — banner, --pin, robustness (e7f148f)

v2.14.2

2026-05-18
Fixed
  • prevent heredoc newlines from corrupting tree connector rendering (76d719e)

v2.14.1

2026-05-18
Fixed
  • show update banner on startup and add afk update command (c4e48da)

v2.14.0

2026-05-18
Added
  • implement form-mode field-by-field REPL handler (330e043)
Fixed
  • collapse redundant Agent row by merging label into parent entry (4b5ea2e)

v2.13.1

2026-05-17
Changed
  • extract ReplRenderer output seam; route mid-turn writes through compositor (#272) (e51ec5d)
Fixed
  • surface truncation as warning + spill full output to disk (2892755)

v2.13.0

2026-05-17
Added
  • persist tool events in session archives (#268) (3f73a32)

v2.12.1

2026-05-17
Fixed
  • summarize memory tool JSON in tool-lane outcomes (af5cda2)

v2.12.0

2026-05-17
Added
  • centralized user-facing error handling (0943e9f)

v2.11.0

2026-05-17
Added
  • witness layer — durable trace evidence for AFK sessions (#270) (76bf752)
  • readline keybindings — history ring, /keys reference (8ea7f1d)
  • friendly usage-limit UX + auto-resume + account hot-swap (e187421)
  • render slash commands in brand orange in agent output (1936150)
  • add daily sweep automation for stale and empty worktrees (99cfd38)
  • closure ritual on /plan off — defer flip until model emits the plan (a847049)
  • per-turn system-prompt addendum when permissionMode === 'plan' (52ec054)
  • plan mode as honest safety primitive — Shift+Tab / /plan toggle with hook-level refusal (bd15a7c)
  • tool-lane rendering fixes — outcome nouns, bash cd-prefix, dispatch-children cap, fence-detection (#232) (1789348)
  • pop flag dropdown on space after slash command (fa37ba8)
  • add /telegram-setup skill with secret-isolated config helpers (8fe0369)
  • export AGENT_SURFACE=afk at startup (4ebc9a3)
Changed
  • unify raw chalk usages and fix bullet/heading semantics (83c8a4e)
  • Print resume command on interactive exit (8d8e039)
  • correct ambiguous 'SDK' wording in plan-mode comments (0bceaa5)
  • Audit/resolve findings c1 c10 (#233) (c59ed1c)
  • project headings and lists in card-line renderer (5dbf1e8)
  • project headings and lists in card-line renderer (8e93fbb)
  • document pre-split archive directory (647d432)
Fixed
  • resolve 11 of 12 deferred review findings (second pass) (6c1da05)
  • resolve 13 review findings on readline-keybindings PR (a11a217)
  • incremental subagent scrollback commit + per-source flush (0270d10)
  • filter incomplete thinking blocks before API round-trip (79e050d)
  • UX audit — state-first copy, force-exit distinction, Shift+Tab pending fix (33a1318)
  • suppress subagent prose on TTY; route to transient thinking tail (#256) (255fc39)
  • clear abortController on suspended-yield and pendingAbort early-return (9aa31b0)
  • wire subagent sink for Telegram; emit thinking summary on non-TTY (ffb0cf7)
  • tool-lane no longer leaks raw memory-tool JSON when results exceed the 80-char single-line truncation cap

v2.9.1

2026-05-16
Changed
  • bounded stalled lifecycle; replace checkPauseAnnotations (Bug #3) (929a350)
  • unify tool-use counter; isolate progress-event field (Bug #4) (412610e)
  • extract declarative assignConnectors; fix Bug #5 overflow connector (715d81e)
  • introduce CommitCoordinator; serialize scrollback writes; apply committing guard (1832a37)
  • Phase 1 failing tests — rendering bugs #1–#5 + snapshot pins (RED) (cc354bb)
  • Phase 2 rendering refactor — amended spec (post /devils-advocate) (7bfb89c)
  • Phase 0 reconnaissance — handoff brief + architecture docs (ad2c3d9)
Fixed
  • address review feedback on PR #250 (d5e5fe9)
  • postinstall works on fresh worktree; mask bot-token input in setup wizard (898b330)
  • propagate agentType at raw agent dispatch site (Bug #2) (f04b5f5)
  • clamp tree-child lines to terminal width (12e23e3)

v2.9.0

2026-05-16
Added
  • max_tool_calls_per_node budget via chained progressSink (ad07780)
  • per-node max-runtime timeout with honest abort propagation (406c93d)
  • preserve partial assistant content on failure path (36acee4)
Fixed
  • resolve three PR review issues — TDZ guard, type leak, clamp warning (4127d11)

v2.8.1

2026-05-16
Changed
  • Merge pull request #209 from griffinwork40/fix/skill-executor-child-provider (af1126c)
Fixed
  • wire child provider into forked skill children (0749128)

v2.8.0

2026-05-16
Added
  • cascade subagent thinking into parent tool/thinking lanes (f402759)
Changed
  • Merge pull request #221 from griffinwork40/feat/cascade-subagent-thinking-runtime (fcbfba8)
  • keep memory tools in READ/WRITE categories (0bdd75a)
  • add AFK.md for agent-afk CLI and architecture overview (0d840ad)
  • Merge pull request #240 from griffinwork40/claude/subagent-thinking-merge-pr-wvXy6 (c79c33b)
  • Merge branch 'main' into feat/cascade-subagent-thinking-runtime (4edc107)

v2.7.1

2026-05-15
Changed
  • drop unreleased section and per-release link buttons (ab5533f)
  • reposition around the pressure path + add founder pricing (5ded07a)
  • remove stray .afk-work worktree gitlinks (60422fb)
  • rewrite src/agent/README, drop IMPLEMENTATION.md, prune SDK refs (1e34874)
  • fix stale @anthropic-ai/claude-agent-sdk references (824ef5e)
Fixed
  • drop data-reveal from outer changelog section (5f793dc)
  • commit generated changelog.html so /changelog renders (ed45256)

v2.7.0

2026-05-15
Added
  • group same-tool siblings + categorical overflow + bash summarizer (ba43dda)

v2.6.4

2026-05-15
Fixed
  • address review findings on thinking-render-bugs (547cb78)
  • surface thinking content during turns (232697f)

v2.6.3

2026-05-15
Fixed
  • anchor fence detection to line start (fc5654d)

v2.6.2

2026-05-15
Changed
  • add telemetry-split orchestration plan (0be9561)
Fixed
  • attribute nested subagents and silence stdout debug leak (77e224c)

v2.6.1

2026-05-15
Fixed
  • align user-echo card content with inline prompt column (8019e2b)

v2.6.0

2026-05-14
Added
  • expose dispatchSkill callback on SkillExecutionContext (a4515bf)

v2.5.0

2026-05-14
Added
  • badge/ledger/events subsystem with session wiring (1cd0753)
Fixed
  • ledger shallow-copy, stats degraded-ctx message, inconclusive display; add clearRegistryForTesting; /stats tests (6c4bd46)
  • emit complete in finally so status bar clears on handler throw; refactor layer inversion (91591fe)

v2.4.1

2026-05-14
Changed
  • Merge pull request #203 from griffinwork40/worktree-shimmering-spinning-frost (b69dfef)
  • resolve conflicts with origin/main — keep PR #203 no-MessageQueue architecture, port budget enforcement (C6) to sync transformProviderEvent (2c90daf)
  • Merge branch 'main' into worktree-shimmering-spinning-frost (b6c5da5)
Fixed
  • update budget tests to use transformProviderEvent; fix loop translatorErrored to emit turn.completed on abort only (bb420ab)
  • restore timeout enforcement, remove unsafe getOutputStream (cb0cdb0)
  • remove MessageQueue indirection, fix interrupt crash (d30c95c)

v2.4.0

2026-05-14
Added
  • C6 --max-budget-usd is now enforced: AgentSession accumulates totalCostUsd from each turn.completed event and aborts the internal AbortController when the ceiling is crossed. The abort reason surfaces as "Budget ceiling reached: $X.XXXX >= $Y.YYYY".
  • C9 WAL supersede crash window narrowed: supersedeFact() now stores (old_content, old_created_at, new_content, new_created_at) fingerprints in the supersede WAL entry alongside the legacy (old_fact_id, new_fact_id) rowids. replayWAL() resolves fingerprints to current rowids first, falling back to raw rowids for pre-fix WAL entries.
  • render skill tool children + spinner elapsed time (d4e48b6)
  • enforce --max-budget-usd via turn.completed cost accumulation (C6) (8e1a223)
Changed
  • include parentId in fork assertion (9968994)
  • drop stale "atlas" surface variant (305972c)
  • add clarifying comments for colon-separator caveat and Telegram permissionMode (6c0ebcf)
  • fix symlink test — existsSync guard + AFK_WRITE_DENYLIST symlink case (0c6646e)
  • resolve PR #211 review findings — C2/C3/C4/C5/C6/C9 (0945a2d)
  • harden plugin paths, permission default, write_file denylist, bash warning, telemetry redaction (C1-C4, C10) (967a285)
  • refresh to match v2.3.x architecture (34f094d)
  • wire coverage gate into CI + add real loop.ts tests (3166367)
  • prune slop tests, enforce coverage floor (4811e64)
Fixed
  • C5 Telegram SessionManager.getSession() race condition: concurrent calls for the same chatId now share a single in-flight creation Promise via a pendingSessions guard, preventing duplicate session spawns.
  • C7 parseProvider() in shared-helpers.ts now accepts an optional memoryStore parameter and threads it into the constructed AnthropicDirectProvider, ensuring only one SQLite connection is opened when --provider anthropic-direct is passed explicitly. Applied in both chat.ts and interactive/bootstrap.ts.
  • C8 runDAG in dag.ts leaked an AbortSignal listener on the outer signal when the DAG completed normally. Fixed by using a named handler (forwardAbort) removed in a finally block. Per-node listeners are also explicitly removed in finally after each node completes.
  • idempotent supersedeFact on UNIQUE constraint collision (3419306)
  • throw BudgetExceededError instead of bare return on budget abort (917f7a9)
  • add memory tools to interactive REPL allowlist (0a2b2b0)
  • WAL supersede crash window — store content fingerprints instead of raw rowids (C9) (e9f5fde)
  • correctness fixes — session-manager race guard, dual MemoryStore, DAG signal leak (C5, C7, C8) (1567f7d)
  • fix list newline collapse and card border off-by-one (5d8cf8f)
  • show all rawBody lines in asking verdict card fallback (ee9dad8)
  • categorize memory_search/memory_update/procedure_write tools (5b3733f)
  • prevent schema mismatch on hypothesis synthesis (a9944de)
  • wrap blockquote content before prefixing with bar (20b108b)
  • add newline wrapping for H3+ headings (1aa9aae)
Security
  • C1 Plugin/marketplace path traversal: validate manifest name with SAFE_PLUGIN_NAME regex and assertWithinPluginsDir() before any join()-based directory creation in src/agent/plugins/install.ts and src/agent/marketplaces/install.ts.
  • C2 permissionMode default changed from 'bypassPermissions' to 'default' in session-setup.ts. Callers that previously relied on the implicit bypass must now pass permissionMode: 'bypassPermissions' explicitly in their AgentConfig.
  • C3 write_file now refuses to write to a built-in denylist of credential/system paths (~/.ssh, ~/.aws, ~/.gnupg, ~/.config/gcloud, /etc, /System, /private/etc, /usr/local/etc). Additional paths can be appended via the AFK_WRITE_DENYLIST env var (colon-separated absolute paths).
  • C4 bash handler now emits a one-time [security] warning to stderr when AFK_PERMISSION_MODE=bypassPermissions, surfacing the shell-injection risk. Full execFile migration is deferred (tracked C4).
  • C10 Scheduler telemetry (forge-telemetry.jsonl) now runs redactInlineSecrets() over both the command and responseExcerpt fields before writing. INLINE_SECRET_PATTERNS extended to cover OpenAI sk-* keys, Telegram bot tokens, and mixed-case KEY=/TOKEN= patterns.

v2.3.1

2026-05-14
Fixed
  • repair release pipeline + dev start scripts (c83ede0)

v2.3.0

2026-05-14
Added
  • add /init slash command to scan project and generate AFK.md (af56752)

v2.2.0

2026-05-14
Added
  • nest compose-spawned subagents under the compose tool-lane entry (90bea64)
Fixed
  • resolve review findings on compose subagent nesting (#202) (a627cab)

v2.1.0

2026-05-14
Added
  • background tasks — Ctrl+B detach, /bg, persistent status bar (#196)
  • clipboard failure msg, debug logging, dual-probe
  • add Ctrl+X to discard clipboard image attachments
  • auto-discover project-level AFK.md as system prompt source (#186)
  • background tasks — Ctrl+B detach, /bg, persistent status bar (#196) (0209cb4)
  • clipboard failure msg, debug logging, dual-probe (88a3114)
  • add Ctrl+X to discard clipboard image attachments (c68e47c)
  • auto-discover project-level AFK.md as system prompt source (#186) (4061d7c)
Changed
  • add guidelines for ordered-operation sequences
  • add 'Crafted by Griffin Long' footer credit linked to graisol.com
  • bump version to 2.0.0 and update changelog (4395866)
  • add guidelines for ordered-operation sequences (70a65b4)
  • add 'Crafted by Griffin Long' footer credit linked to graisol.com (26b12c2)
Fixed
  • pass full user input to recordTurn for background tasks
  • resolve review findings on background tasks (#200)
  • preserve paragraph breaks in stripCommandTags and extractSkillTag (#201)
  • move console.log before compositor arm to prevent ghost spinner
  • close research-agent contract gap + harden mint invariant
  • pass full user input to recordTurn for background tasks (de62c22)
  • resolve review findings on background tasks (#200) (0c8fb76)
  • preserve paragraph breaks in stripCommandTags and extractSkillTag (#201) (7f7c636)
  • move console.log before compositor arm to prevent ghost spinner (af028fc)
  • close research-agent contract gap + harden mint invariant (e528568)

v1.21.0

2026-05-14
Added
  • add afk-worktrees-status.sh read-only inspector (#198) (eaeaaa7)

v1.20.0

2026-05-13
Added
  • add send_telegram built-in tool for operator notifications (#187) (c7150a1)

v1.19.0

2026-05-13
Added
  • surface execution trace from child sessions to parent (#193) (4af131b)

v1.18.0

2026-05-13
Added
  • push primitive + onTaskComplete callback for daemon (#160) (eea6063)
Changed
  • Feat/orchestration (#188) (1b42c6a)
Fixed
  • SubagentExecutor success path now coerces non-string message.content (e.g. SDK

v1.17.0

2026-05-13
Added
  • add Phase 1 triage, named outcomes, and multi-file routing (#194) (6465414)
Changed
  • Feat/landing changelog page (#190) (7a35bb8)
  • Fix/clipboard image paste (#189) (4a21501)

v1.16.1

2026-05-13
Fixed
  • decouple AFK telemetry from ~/.claude/agent-framework (#191) (01160ba)

v1.16.0

2026-05-13
Added
  • repaint stage rail on transitions + enable extended thinking by default (4750263)

v1.15.2

2026-05-13
Fixed
  • add blank line between paragraphs in markdown rendering (c4949d7)

v1.15.1

2026-05-13
Fixed
  • render inline markdown in card bodies (#165) (0d803a6)

v1.15.0

2026-05-13
Added
  • activate compose tool in production entrypoints (#185) (3d93f00)

v1.14.6

2026-05-13
Fixed
  • resume on JSON-string {userApproved:true} from skill-tool boundary (#166) (f7387d3)

v1.14.5

2026-05-13
Fixed
  • truncate /skills descriptions and add detail view (#181) (905edb9)

v1.14.4

2026-05-13
Fixed
  • per-call signal check in executeBatch parallel branch (#182) (4c87ee7)

v1.14.3

2026-05-13
Fixed
  • repair clipboard image paste on macOS (Cmd+V + binary readback) (#163) (7b6e0d7)

v1.14.2

2026-05-13
Fixed
  • normalize paragraph spacing and fix overlay alignment (#184) (7cc3752)

v1.14.1

2026-05-13
Fixed
  • restore cursor, honest spinner, durable interrupt notice, honest --stream (#183) (e50c1ba)

v1.14.0

2026-05-13
Added
  • add compose tool for DAG-based parallel subagent orchestration (#173) (a78027f)

v1.13.4

2026-05-13
Fixed
  • use dirname on fileURLToPath before joining relative paths (1251a74)

v1.13.3

2026-05-13
Fixed
  • auto-submit queued messages instead of requiring a second Enter (92a1c83)

v1.13.2

2026-05-13
Fixed
  • update description for clarity and improve commit process guidance (e986f1c)

v1.13.1

2026-05-13
Fixed
  • add memory tools to allowlist and prevent dangling tool_use on abort (6162b2c)

v1.13.0

2026-05-13
Added
  • add completion glyphs to tool result display (8d0d756)

v1.12.0

2026-05-13
Added
  • add auto-update checker with notify/auto/off policy (bbc9ae5)

v1.11.0

2026-05-13
Added
  • improve subagent visibility in nested skill runs (eed3ba6)

v1.10.4

2026-05-13
Fixed
  • convert skill-name XML tags to styled badges and fix tool glyph casing (b754e41)

v1.10.3

2026-05-13
Changed
  • broaden skill to accept PR numbers, SHAs, branches, and patch files (246824c)
Fixed
  • eliminate streaming line duplication and table garbling (ca6a204)

v1.10.2

2026-05-13
Fixed
  • correct skill count, add email fallback, ship OG image (640521a)

v1.10.1

2026-05-13
Fixed
  • add blank line between user input and agent response (44107d6)

v1.10.0

2026-05-12
Added
  • highlight slash commands anywhere in the input buffer (d5e570c)

v1.9.0

2026-05-12
Added
  • add system prompt instructions for cross-session memory tools (1421e8e)
Changed
  • bump version to 1.8.1 (7bfa67a)
  • update CLI entry points to use .mjs extension for improved module compatibility (678ce17)
  • consolidate duplicated 1.8.0 Added subhead (88be7f3)

v1.8.0

2026-05-12
Added
  • Telegram bot integration: afk telegram {start|stop|status|restart|logs|setup} CLI subcommands (#154) (f2eb50d)
  • User-scope config at ~/.afk/config/afk.env — Telegram tokens and allowlist stored outside the project tree
  • afk telegram setup interactive wizard with keychain/file/env token storage options
  • File-authoritative override for Telegram config keys: ~/.afk/config/afk.env wins over shell env for TELEGRAM_BOT_TOKEN, AFK_TELEGRAM_ALLOWED_CHAT_IDS, TELEGRAM_VERBOSE, TELEGRAM_DATA_DIR
  • Bot identity validation at startup via getMe before handing token to Telegraf
Fixed
  • Shell-shadowed bot token: file value now overrides stale shell exports for Telegram-specific keys (inverse of dotenv precedence, intentional for operator-managed config)

v1.7.0

2026-05-12
Added
  • cross-session memory system + mint state persistence (#115) (40231c6)

v1.6.0

2026-05-12
Added
  • add --dump-prompt debug flag for SDK prompt verification (#34) (c49fb7d)

v1.5.1

2026-05-12
Fixed
  • show early tool-use indicator during model generation (#123) (0b91592)

v1.5.0

2026-05-12
Added
  • add /changelog page rendered from CHANGELOG.md (#158) (90f413c)
Fixed
  • improve terminal rendering spacing and wrapping (#156) (72adfa7)
  • include bundled plugins in system prompt manifest (#153) (7d64db8)

v1.4.0

2026-05-12
Added
  • surface parallelize-dispatch failures via discriminated union (#152) (47caa39)
Changed
  • Enhance routing telemetry with detailed event structure and telemetry emission
  • phase 1 orchestration pressure — frame main session as coordinator
  • add orchestration pressure audit (d0a03a3)
Fixed
  • handle drainQueue rejection in processOne finally (5bc2690)
  • preserve slash command highlighting after submission (3afa120)

v1.3.1

2026-05-12
Changed
  • address review feedback from #151 review (3395c33)
  • co-locate unit tests with the files they exercise (56a6d36)
  • add colocate-tests migration helper (3dfd2aa)
Fixed
  • reset context bar on /clear (1b5f637)
  • flush tool lane to scrollback on subagent done (ab8dea6)

v1.3.0

2026-05-11
Added
  • runtime positioning + reversibility-aware autonomy section (1a3af3f)
Fixed
  • correct overclaims, restore working CTA (639790d)

v1.2.1

2026-05-11
Added
  • add /changelog command to generate release entries from git log
  • bundle orchestration skills into the binary
  • auto-refresh OAuth token on 401 instead of crashing
  • implement word and line deletion commands
  • make AFK's execution shape legible — verdict cards, stage rail, ledger
  • add failure geometry to SALVAGE rework prompt
Changed
  • unify feedback on spinner, kill thinking indicator
  • add Failure Geometry documentation to outline agent workflow design patterns
  • centralize last hardcoded ~/.claude/ path in audit-fit
  • centralize path resolution on AFK_HOME, fix surface tags
  • opt actions into Node.js 24 (FORCE_JAVASCRIPT_ACTIONS_TO_NODE24)
  • extract shared utils + add auto-release CI (328ae85)
Fixed
  • stream subagent content in real time during skill execution — replaces line-buffered rendering with StreamingMarkdownRenderer so users see live markdown output instead of a spinner
  • harden /changelog flag parsing and improve test mocks
  • resolve review findings in /changelog command
  • add 401 retry integration tests and deduplicate concurrent refreshes
  • persist assistant turns in message history
  • restore plain bullets in /changelog (PR #145 H-1) (3432991)
  • resolve PR #145 review blockers (e1acf82)
  • resolve review blockers — dedup, atomic writes, correct dist path (4cd81b2)
  • strip command breadcrumb XML tags from rendered output (#142) (a0812a6)
  • add spacing around tool-lane flush in stream renderer (1bbd7a9)
  • recognize informal approval patterns in parseMintInput (e9f8a60)
  • correct inflated context-% meter on anthropic-direct (#143) (aff2475)

v0.2.4

2026-05-10
Added
  • ~/.afk/ config home — CLI, Telegram, and daemon resolve user-scope state there, decoupling AFK from ~/.claude/
  • Plugin auto-discovery (~/.afk/plugins/) and afk plugin {install|update|list|remove|enable|disable} CLI (git-based MVP, no marketplace)
  • 1M-context model variants (opus_1m, sonnet_1m)
  • Bracketed-paste input box with atomic multi-line paste handling
  • Terminal resize reflow — width-aware boxes, dividers, status line, todo panel, streaming markdown commit wrap (ResizeBus + wrap-ansi)
  • Plugin-skill SDK bridge — /skills, /reload-plugins, /agents via passthrough handlers; replaces the bespoke skill-bridge.ts stubs
  • Beautiful-TUI: live progress lane, context-pane (todo surface above prompt with structural-fingerprint dedupe), shared InputCore powering compositor + input-box, palette heading/label semantic roles, width-aware debug banner
  • Provider abstraction (src/agent/providers/{anthropic,openai-codex}.ts) — model family selects the runtime backend via providerForModel()
  • AbortGraph — transitive parent→child cancellation across subagent trees
  • withTimeout / TimeoutError helpers
  • Zod outputSchema on SubagentResult<T> and ForkSubagentOptions — extraction + parsing in src/agent/subagent/{handle,result}.ts
  • Hooks infrastructure — SessionStart/End, SubagentStart/Stop, PreToolUse/PostToolUse with decision: 'block' short-circuit
  • --model pass-through for non-Anthropic routes — auto, full SDK IDs, and codex models flow through to the SDK untouched
  • SDK dependency tracking — pnpm audit:sdk snapshot + .sdk-dependency.lock.json allowlist + CI gate via pnpm audit:sdk:check
Changed
  • All AFK state lives under ~/.afk/, never ~/.claude/
  • Project is pnpm-only — npm install will desync the lockfile
Fixed
  • StreamEvent schema — delta.type made optional to tolerate message_delta events (was hard-failing every successful turn)
  • /clear rebuilds the SDK session instead of forwarding a string
  • listSessions skips SDK PID-registry sidecars; /resume formatter guards NaN / undefined timestamps
  • CLI: tool names and file paths now surface in interactive output

v0.1.0

2026-02-09
Added
  • Initial release
  • Project infrastructure
  • Testing framework
  • Basic CLI commands