Added wire Q as read-only consumer of episode facts (#4612) (1aecfc063) automatic episode retrieval at session start (#4614) (393a999f0) Changed commit stale SPINE.md date bump and snapshot update (2f3232594) add Sub-check C for compose-level maxToolRoundsPerNode precedence (#4639) (#4672) (f0f4333ee) protect bundled reference file integrity (#4676) (df2e67b41) Fixed bracket-notation for index-signature payloads and update stale snapshot (581742f0e) suspend stall watchdog during afk pause and inject resume context (#4691) (a96cb6b98) correct category mismatch and wire inject into session (#4684) (ccde4a7f5) add risk facet to empty-string test and document command guard asymmetry (#4671) (06d0eb75e) address advisory findings for dynamic model param description (#4669) (1215899cb) migrate remaining afterEach/afterAll teardown sites to rmSyncRetry (#4673) (3ecee23e3) raise readLastTickTime limit to prevent window exhaustion by skipped records (#4665) (a4f6ab95c) address summary-mode thinking indicator advisory findings (#4678) (fc4d02841) address workspace subscription parity advisory findings (#4677) (d916a35cb) harden Worth doing pipeline — drop fallback needle, add tests, document omission (#4666) (3d359c5a6) address advisory findings from SubagentHandle test coupling review (#4670) (7748bddfb) harden closeAll ordering test and extract required helper (#4668) (c9f39fdb5) Added named delegation profiles via AFK_DELEGATION_PROFILE (#4313) (339f2086a) add read_journal tool for structured journal access (#4658) (80722d184) add model identifier to session receipts (#4657) (77c6ac4df) subagent orientation context injection at fork time (212d2e8df) enrich afk doctor with subsystem health checks (917f40a6a) Changed replace LLM synthesis with deterministic facet bridge (155457e87) guide read_file offset/limit in ground-state eval-pipeline check (3e0dbd951) Fixed address 4 blocking review findings on PR #4659 (5357791c9) remove false read_file tail-return claim in ground-state SKILL.md (8c61607d6) use correct subcommands in CLI orientation block (a841f2467) handle EPERM as alive, add missing hook events, fix bundle path (e77ea8f77) address advisory findings from #4503 review (#4648) (33e0051b0) fix inverted log message, add remoteDetail and size===0 test coverage (#4649) (f5ac931c2) fix stale comment, add @internal tag, and improve session-id test coverage (#4653) (0276d7413) raise maxBuffer to 4096, emit debugLog on signal, add ENOBUFS test, fix docs, rename interface (#4656) (594272a03) fix fail() usage, test description, and add closeAll ordering test (a891a38c0) dynamic model param description with slot and default info (19bba464e) restructure test describe block and add startup quarantine telemetry (#4632) (aac50ec4f) bump episode MAX_TOKENS from 512 to 1024 (1257faf1f) wire "Worth doing" bullet through terminal-state pipeline (#4643) (00a030009) skip daemon sessions and add synthesis canary logging (f8c0c8b1e) Added add afk pause/resume to freeze and unfreeze all sessions (#4566) (bd8a6172f) populate facet decisions from episode synthesis (#4610) (3b152a75e) Fixed auto-restore files on /branches switch using on-disk turn log (#4613) (c18fb7306) finite unattended session defaults (bounded partial) (#4548) (ace41b9e2) use renameWithRetrySync to fix Windows EPERM on rename (c1dfc5b96) increase Windows EBUSY retry budget in LSP exit-cleanup test (bb1b48dce) address advisory findings from CI Windows shard PR (5ebe05de5) add agentType + double-cast to fix lint:tests ratchet (+4 errors) (88b15d4be) use rmSyncRetry in useTmpAfkHome to avoid ENOTEMPTY teardown race (61d8ea1fe) reduce test coupling to SubagentHandle internals (880a35ff2) add empty-string facet test, document dropped path, fix declaration order (22478ccbb) correct precedence comment in compose node builder (af833b2a4) add missing test todo and insertion-order comment (56780355e) Added add layout-jump decision table reference (#4609) (ad468b192) summary-mode thinking indicator and unknown-error hint (a0d82bd1a) Fixed harden wrapping across 9 files (#4617) (9c687a5d8) disambiguate Windows EPERM in daemon instance lock (#4605) (7aeba989e) skip preamble-only user records in goal extraction (#4604) (09d08195a) add episode backfill CLI command (10bdd60bf) address advisory findings from workspace subscription parity (877cd86a7) address advisory findings from command classifier facets (94f8e37d3) cap thinking lane on dispose + fix stall test fixture (5b4b4361e) Added LSP repo map summary for system prompt (#3904, phase 3) (3b5c1d603) console output discipline CI gate (audit:console:check) (af289de75) fit-and-finish quality sweep + POSIX guard CI gate (#4594) (8ef8f1b45) worktree tool accepts explicit repo parameter (#4430) (341862851) stamp session cwd on run receipt (#4582) (d4aea92d7) Changed route console output through palette across cli, telegram, and improve surfaces (d804b67b9, f6ad97936, bb58b7249) Fixed single-instance guard to prevent concurrent daemon execution (#4434) (9e629b249) opt-in OS-level bash sandbox (sandbox-exec / bwrap) (#4554) (9229778aa) per-rule instrumentation, denial-breaker blindspot, and insights panel (#3849) (8e257ec0c) expose bounded read-only artifact registry tools (#1415) (687024cca) forward opt-in idempotency keys and reconcile uncertain effects (#3714) (f344834e6) prepare canonical workspace experiment storage (#1539) (ac3538cd3) ESLint import/no-restricted-paths CI rule for layer contract (#4464) (f27b95dbe) audit-layer non-blocking findings from #4464 review (#4588) (d9df6666e) test runner wrapper for vitest jsdom hang (#4595) (9ecb26831) strip harness preamble from episode goal extraction (#4585) (6868a7e08) Windows test failures in repo-map and bash-sandbox tests (#4593) (ab3704482) bound every bash output viewer row to available width (#4510) (3b623548b) name sanctioned alternatives in restricted-path block reasons (#3850) (4b316bbad) readLedgerHead entry-guard asymmetry and test gaps (#4524) (4014fac71) exercise resume repository filtering and daemon fallback (#4504) (612f7cee2) pin explicit read-root replacement in query setup tests (#4505) (87106cf11) cover newline-only alternate paths (#4511) (8b7a99902) Added compute outcomes once at SessionEnd for receipt v3 and outcome store (99ee9bb2d) pure computeOutcomes and OutcomesV1 schema with git-range adapter (39e2d5124) Fixed receipt schemaVersion v3 + Windows path normalization in outcomes (#4581) (21ea68311) address 4 blocking review findings on PR #4535 (a3f3c98d3) bound git command matching to avoid backtracking (13450fa3c) preserve attributed outcomes and bound teardown input (be3eb5f27) use u flag instead of v flag for FTS5 regex (ES2022 compat) (0ebce56a5) use Unicode-aware boundaries in FTS5 sanitization regex (f59b0e2f5) use Unknown goal sentinel instead of unreachable empty-field guard (a225af857) episode synthesis quality — compaction, promise tracking, tests (69dbf3263) use word boundaries in FTS5 sanitization regex (d490928ca) Added agent episode synthesis — opt-in, journal-based, deferred (#4565) (c32e1ac4f) consumer-surface annotation + unified skill (#4564) (3d7c0ada4) Changed remove /reauth slash command and dead-code chain (#4575) (1bb7a2600) Fixed allowlist gaps causing ground-state errors (#4560) (cb4b700e0) Added keep abandoned conversations as branches and switch with /branches (#4294) (8d4adf1e3) add PTY integration test for type-during-tool-round steering (6e63f85e0) add docs/acp.md — editor integration guide for afk acp (42d68c80f) add /where slash command and enrich AFK.md introspection surface (8fd77f752) Changed shard Windows tests and preserve aggregate check (53a2ccff9) consolidate usage formatter with shared pipeline (2e43da5de) stage 3 — named-agent budget parity in buildComposeDagNode (8ec4ecc49) add introspection reference docs and glossary (f8ee1faca) Fixed canonical paths in credential denials, drop matched from roots variant (72fc000f3) unify daemon allowedTools and wire web backgroundAutoDeliver (#4539) (7d3a5b428) share command analysis facets across security consumers (331530078) share write-floor and actor-root path decisions (637a357fe) share model-intent and credential dispatch preparation (2a25323b4) pill positioning and transcript tab-stop (#4435) (d97a3747d) delete .git-commit-msg.txt and add CLAUDE_CODE_OAUTH_TOKEN test (#4528) (d48726eeb) /where slash command — tests, security, null guard (#4527) (b6a45ad7a) whatif provider cleanup — unused exports, import migration, test (#4531) (564077b6e) add afk receipt regenerate to rebuild v1 receipts as v2 (#4463) (26ea1b44b) prevent ghost branches on failed rewind; add isSafeLedgerSessionId guard and fork tests (#4495) (2e1385a37) add isSameSession guard in handleSwitch; eliminate newId! assertion in forkBeforeRewind (802e509a7) check forkJournal return value; memoize loadSession in collectBranches (c0256be7e) export resolveFromFound; split forkBeforeRewind try/catch with orphan cleanup (e4297d8a9) address 6 review findings — security, correctness, tests (79ca958ee) narrow RegisteredAgent cast to BudgetHint; add maxTurns parity probe (68e3f7edf) correct acp.md — done response shape, AbortController cancel, remove Cursor MCP section (88387da8d) three P0 tool reliability improvements from 30-day audit (#4475) (bfd0affb3) session-meta follow-up cleanups from #4453 sidecar migration (#4460) (5ddb756e1) gate claude login hint on anthropic provider; preserve codex detail (9c45397ae) replace ! non-null assertions with ?? fail() for noUncheckedIndexedAccess (45d7825a6) drop /orient alias collision and guard non-git directories (1ca34fedd) restore claude login hint and stale status tag in formatUsage (d6f4adf31) compose-level max_tool_rounds_per_node wins over named-agent frontmatter budget (4e0fd3d51) surface whatif/ provider imports through stable agent/ public API (33ae3b079) address advisory findings from #4259 auth account switch review (349e51e94) Added implement ToolCallLedger class with bounded turn-window map (427b33a7d) inline terminal image rendering via Kitty graphics protocol (99d58b7f7) Changed suppress advisory bash path-containment console.warn (#4516) (8522f2ac8) correct user-backgrounded steering/cancel semantics (c3a960351) regenerate env-registry docs after #2143 env vars (54671c6bd) document provenance fail-safe default in background-registry (533fd31b5) Fixed cap bash-output-viewer lines to terminal width in buildRows (79ed7ff7e) consolidate picker row truncation and add skipBandTruncation flag (c264b0651) reject non-integer turnIndex; bump test-typecheck baseline (35600553a) add RangeError guard in record() and fix import path (1ed585c8d) add missing defaultSubagentModel to makeReadScopeExecutor in subagent-executor.test.ts (d724493d2) merge duplicate JSDoc blocks on createTranscriber into one (eac20ef78) remaining advisory findings — TOCTOU doc, JSDoc, CHANGELOG preamble, import order, synthetic-completedAt comment, utils tests (11880132f) stat catch returns early; realpathSync.native for tmpdir prefix (e9de65b99) derive worktree slug from agent_type when id_prefix is omitted (#4474) (1e5b9fd30) address 4 blocking review findings in inline-image-render (703bae2ef) address review findings #5 and #6 in bash-checkpoint tests (c5e0c3865) address review feedback on inline-image-render (a0614c853) tighten formatter test anchors and fix stale comment (330dc7c2c) extend operator-notify port to cover remaining agent/ → telegram/ imports (3c1ff62d0) address remaining advisory findings from triage batch (750203c07) apply fail-closed grantsToolStrict to workspace prompt gate (9ec00cc22) move pause→resume test to its own describe block (8e3092dfa) address plugin-api state store advisory findings (2937125d9) read raw journal records for receipt firstUserMessage to survive compaction (8099e684d) fix bg process count accuracy and add display tests (49fa60ddc) add executor-level parentCwd fallback test and document unwired-manager collapse (14f4516de) add riskCategory forwarding integration test (e901a2035) address bash side-effect capture advisory findings (92130fcf3) fix misleading comments and add write_file test in artifact-modified (3fbd5f2e4) add agent↔compose cross-references and budget mapping note (1a902c6a6) wire /usage slash command to multi-provider pipeline (8eefe8b52) Added capture bash side effects so /rewind can undo them (#4271 stage 2) (c08d69130) Changed unify fork read-scope computation (83cc8c4aa) git-snapshot contract for bash capture (#4271 stage 2) (3c8e2e916) Fixed skip band-width truncation for editable text-input overlays (f5c9f9258) replace console.error with debugLog in session-meta to fix flaky teardown (#4459) (9e78cd651) add per-fragment token-count logging at prompt assembly time (05c65bdbd) restore parentCwd fallback for grandchild read roots (cf9b511fb) forward riskCategory through HookBlockedError on BLOCK path (312f5d323) harden git snapshot capture per review (#4271 stage 2) (40075cff5) strip credential env vars from snapshot git subprocesses (ec60aca6b) split diff-tree buffer on NUL bytes before UTF-8 decode (5820ed665) migrate remaining consumers to session-meta.json sidecar (#4453) (26f3128dd) wire release-boundary-detect into shared RiskCategory enum (8caa47f0d) address remaining advisory findings from Oct 14 triage (43e6b1633) shared deadline in finish(), guard standing warning (c948daba2) Older releases 1671 more Fixed add missing mock exports for chat.mcp and chat.trace-identity tests (f1b06cc0b) Added enrich general-purpose agent prompt with quality and parallelism guidance (#4451) (f14a54bb3) three-value provenance for Ctrl+B steering (#4359) (ea29e3abc) journal infrastructure — meta.cwd (#4426), receipt v2 (#4427), session-meta.json (#4429) (#4428) (e300f89a3) per-slot endpoint concurrency cap for local model servers (#4190) (295a31643) Changed trim system-prompt overlay from 307 to 110 lines (6d2cbd61d) Fixed release mascot band reservation between turns (be35eb357) make error classifier provider-aware for auth and overloaded errors (872935aab) retire() session before control, mirroring closeAll() ordering (a266f1990) close WebSessionControl on retire, add test, fix comments (50b0a976c) add colon to single-quote prefix class and regression test (41201fc44) fix normalizer over-collapse, compound duration regex, and stale JSDoc (dad18fc86) fix stop-reason terminal set gaps and stale comments (05fc0f3fb) parallel-session safety fixes + CI audit gate (#4421) (ae2b0ccf6) hydrate usageAwareness on resume + add slash command test (2f82cac49) startup recall + dashboard follow-ups (4463df3d4) widen wind-down markup regex and update stale comment (d92f0e2ad) read rootCauseClass from failureClassBreakdown, hyphenate handler paths, medium confidence, integration test (741acf6e6) wire tool-specific helpers into proposeFromCard; fix CLI flags and handler paths (c28433a00) tool-failure-density template now produces tool-specific proposals (410db37fe) rewrite shadow-verify nudge from advisory to action-gated imperative (#4447) (9dae4df52) Added dynamic startup recall + ambient dashboard (#4397) (3a4908ef2) add /usage-awareness toggle to control model visibility of subscription usage (#4402) (4fe650879) Changed bump @anthropic-ai/sdk from 0.134.0 to 1.1.0 (4c77cbc4f) bump the prod-minor-patch group across 1 directory with 4 updates (efaf9f731) bump the dev-minor-patch group with 3 updates (#4383) (eaec2cd7f) bump vscode-jsonrpc from 9.0.3 to 10.0.0 (#4385) (771decc5a) bump pnpm/action-setup (#4384) (0d634bf4f) bump github/codeql-action/analyze from 3.39.1 to 4.39.1 (#4387) (88feeb9c6) bump github/codeql-action/init from 3.39.1 to 4.39.1 (#4388) (4717c274d) bump actions/checkout from 4.4.0 to 7.0.1 (#4389) (481ac0f76) bump the dashboard-dev-minor-patch group (d3d80ea03) bump lucide-react (71a40f056) bump the fumadocs group in /website with 3 updates (68eb10254) Fixed stale comments, fail-closed gate parity, provider gate tests (#4223) (619e4c371) replace it.fails with pinned assertions in cross-classifier Section 3 (#3846) (ae2534944) extend cross-classifier helpers to all four classifiers + add tier assertions (7df520797) narrow stampLastContent to UserMessageParam | AssistantMessageParam for SDK v1.x (9e52858ed) use git_read-compatible flag forms in state survey (#4390) (a76a99e67) Added LSP server pool : persistent LspClient + LspServerPool with auto-detect, auto-install, and migrated code_symbols + post-edit diagnostics (#4272) (b4c1f012f)Plugin API : add state store and peer messaging to PluginApi (afe6832e8)cluster tool failures by normalized errorHead (#4229) (21ebc8518) show background process counts in the health rail (9d7e043fa) Fixed context-pressure wind-down passes stale text or markup as answer (#3983) (37d910718) only show table row separators after multi-line rows (#4391) (2f9e1d62b) overwrite stale tool-stop reason on abort instead of preserving via ??= (#3965) (74dad4a3e) normalize git_read count shorthand, empty pattern, and echoed subcommand (#4227) (6a49f9768) widen log/rev-list allowlist and fix git-investigator prompt (59cdf065b) worktree-isolated depth-2+ forks inherit correct write root (e91964135) pin childSkillExecutorFactory cwd inheritance in worktree-isolated depth-2+ tests (553d5e192) retire session from owner maps on /exit (8b5a08b5c) bind plugin peer helpers to calling sessions (2cbcd5b24) add sightingCount to track recurrence beyond evidence cap (6174b00be) gate firstSeen/lastSeen update on new evidence, not scan wall clock (56acfe3df) post-turn re-check for bg injections that land while a turn is claimed (fb380c038) stamp STREAM_INCOMPLETE unconditionally in buffered-text branch (26fb5f1a9) Fixed adopt a Claude account switch at turn start, no /reauth needed (#4259) (4f14beed9) improve chip color contrast for WCAG AA compliance (827e18173) populate model field in WebSessionSummary (ec21c7659) error-path teardown test, dedup test, and perf doc (64c03bb03) address advisory findings from 2026-10-23 PR triage (75cf5c839) address advisory findings from 2026-10-23 triage batch (a70bbeb67) add --force to 401 hint and tighten classifier test (47d94075a) short-option = guard and missing bash-lexer tests (fa37cbc02) assert 60_000 fallback timeout, remove stray blank lines (b8c1dd82f) Added Web chat UI overhaul : live token streaming with full-length answers (b57ad799a), ⌘K palette indexing sessions and commands (16e0cd196), responsive single-textarea composer with retry/edit wiring (82a5c54bd), one-tap new chat in the phone header (8884d3b5d), layout & navigation UX (edfced3d8), turn controls & composer (5d8a79d72), legible tool rows with collapsible code and fast long transcripts (469fae359), WorkingIndicator placeholder for slow turns (82b0deaba), D2 code highlighting and a11y fixes (293879196), D4 tool rows & shell polish (003b76546), E2 design-pass-2 non-streaming fixes (8905a006b)Changed model picker redesign + slash palette grouping (66d163f8b) extract schedule/daemon routes from server.ts dispatch() (8b9105c42) Fixed settle() now drops current-turn sealed drafts when turn has ended (399fd1657) promote git-cache hits to MRU via delete+re-insert (b51a08858) move agent-type listing from tool description to system prompt for prefix-cache stability (a3f582b72) prevent orphan roots when parent commits over running children (26cb94878) resolve symlinked dirs + extract shouldFilePickerSubmit predicate (aa90c4c4c) Enter on @file picker submits for files, navigates for directories (ac0cfa6db) no blank frame between "Thinking" and the first answer text (e3def2bce) transcript follows after Retry and send; ⌘K ranks command names first (501497883) a reload keeps the transcript pinned to the bottom (27b3e485f) sealed drafts only end the indicator for the current turn (b0cffc5ed) mobile tables scroll sideways instead of wrapping rows tall (7600a116d) welcome screen of an empty session shows folder and model (58f746f61) /name shows exactly what was typed; no terminal hint on the web (7a6ab3318) tool durations survive Retry and /rewind (e4e89fc4b) no "Thinking 0s" flash under a finished answer (04b285d73) picker Esc/Cancel/Select hands focus to the re-enabled composer (d908484ec) highlighted code keeps its indentation (b5cb45bcc) show an explicit /name verbatim; humanize only derived titles (2ed85556e) layout scroll events no longer unpin the transcript (bab3a4d5c) working indicator waits for visible text and shows Running (ce9fee658) stream every turn live, not only the first after a reset (66c997225) jump-to-latest button always visible when scrolled up (4421af279) fix contrast violations in WorkingIndicator and session-model span (770933193) grep/glob summaries keep the search pattern (8e843fb7c) fix language label contrast in code-block header (2bd5f00ee) boost contrast on Agent label and kbd shortcut chip (e2bfd9b68) approval dismissal returns focus to the composer while a turn runs (b16d3e617) spine grouping hung the tab on a stopped item (cdd937da9) stamp stopReason 'interrupted' on a Stop that ends via the loop's terminal (6dcfece36) idle live sessions stay "Idle", not "Done"; busy badge on mobile drawer (04ffaa2ac) retry/edit are conversation-only rewinds of the newest prompt (3a68c04d1) tighten /model picker radio selector to match sonnet alias not medium slot (3401991bc) address advisory findings from multiple triage batches and reviews (35a87ece4) (d2b74ab3b) (edfc28665) (c9867b0db) make git-common-dir relative-cwd assertion Windows-portable (92d9b2308) Added add subagent routing slot for provider-independent subagent inference (#4324) (872115b62) Changed replace inlined slot constants in hints.ts with lazy getters (7963a558d) Fixed SHA-pin all GitHub Actions, bump vite, cap daemon body size (2e5227d63) add seenToolUseIds to child-activity-select test fixtures (f47fd70b0) pin softprops/action-gh-release to SHA in publish workflow (4268ce8f0) annotate actionName as string to satisfy TS2367 lint:tests ratchet (4ac3863bb) fix LSP test timing and document DEFAULT_LSP_CMD type (fff9e2586) fix bash lexer comments, guards, and test coverage (346b6cd5b) fix blockReason backticks and add stash false-positive boundary test (4d1b22b94) fix 403 hint and update transient-retry invariant comment (63540874c) fix dangling JSDoc on completeWithWireWithStop (eb3d6c15a) stamp renderedSubagentIds on error path to prevent duplicate Channel B lines (2bbf6d6f4) stall annotation never re-creates flushed lane entries; label parents awaiting children (ea15ee44d) suppress hook completion line for subagents the tool lane already rendered (5bd27e2e0) do not stack spine-only separator rows between nested agent commits (6e7c92c9a) count each subagent tool call once in Done summary (aa6f9bf26) address advisory findings from #4292 review (78c03e423) add subagent slot ENV_KEYS and dispatch integration test (46669f5fc) fix vacuous tests and improve idempotency-header test coverage (8c5f3dc92) add vote-sign guard and unit tests for collapseSingleCountVotes (9acf9c227) bump ip-address 10.7.3 → 10.7.4 + dismiss 7 stale Dependabot alerts (#4336) (dc4c83a50) Added warn at load time when AFK.md overlay exceeds 10k tokens (#4292) (aa4181981) Changed remove deprecated completeWithWire wrapper (bc5589349) pin Scenario 2 idempotency-key header forwarding defect (63be9cdbc) Fixed raise macOS CI timeout, fix daemon teardown race, fix tailLedger flake (#4255) (fe358f8f7) risk-classifier dd over-gate test + resize ghost-erase clamp assertions (#4253) (c0ccae422) add cwd field to wait_for command conditions (#4237) (53e2679c9) add handler tests for lost-outcome reconnect exhaustion framing (#3981) (30bd25dec) status-line render nits and shadow-git observe decision filter (lane C) (#4210) (3bbd2c609) fix release() test, stale comment, and inline invariant comment (#4243) (42c1fa9dc) enforce maxBudgetUsd across REPL /clear cycles (cause 4) (#4280) (1f696573b) deflake tailLedger via onCaughtUp synchronization barrier (#4332) (ce9a5a0d8) guard disk roundtrip assertion with toBeDefined check (dbbeaf0c6) handle Anthropic 403 with opportunistic token refresh (#4316) (870bf07f4) add kind/startedAt to ToolEntry literals; use synthetic POSIX path in Windows-portable test (5020f67ea) count fix_of_fix at most once toward the two-minor-negatives rule (#4289) (232bdee09) shorten paths before SGR styling in grouped bash rows (83013a341) run shortenPaths before styleBashCommand in grouped path (698963add) correct false drain guarantee and overly-restrictive JSDoc (7f4915f72) style grouped bash entries before flattening newlines (6f2a33a1f) address remaining advisory findings from 2026-10-15 triage (52f0ba827) pin Scenario 2 reconciliation tests (3575d334c) clarify decideStatus JSDoc and add missing unsupported test (e80a28b6e) stale comment, blockReason backticks, false-positive note, normalizeSeps early return, Windows tests, show-p tests (121feeb65) re-export buildSubagentBlockCorpus from contracts.ts; fix stale JSDoc in contracts.test.ts (6bd809364) Added OpenAI family aliases (sol/luna/astra/terra) (#4310) (ed09d4eab) /resume repo-root filtering, smarter naming, daemon exclusion (#4308) (ad8dc1d99) web/CLI parity Stages 1-5: cross-surface slash commands, choices, lifecycle (/fork, /resume, /exit), structured /diff, session controls (#4295) (6a7043d2a) /rewind conversation|files|both with cross-turn file restore (#4286) (2fd716087) child-to-parent yield for foreground subagents (#4297) (7cb903fa3) Changed stage 3 — use resolveChildModel in dispatchDagNode for model-resolution parity (#4288) (30b8993d7) Fixed await plugin init before "Unknown command" on early slash input (#4320) (e5fea17c0) clear handler timeout, truncate echoed text, pin 504 shape (#4277) (62cb67efe) scope picker row truncation to selection picker only (8503ce382) address remaining advisory findings from Oct 14 triage (#3794) (a01e78715) address PR #4310 review findings (713734ac2) remove write-only pending-question-store (#4299) (728d32c01) address remaining advisory findings from 2026-10-19 evening triage (#4301) (a82a9aaac) bash lexer long wrapper options, pipe-ampersand, truncated verbs (#4303) (9c0037771) Added emphasise and colour bash command words in the REPL tool lane (#4275) (4ff66f8d9) Stage 0 of web/CLI parity: run native slash commands in afk web (#4246) (12e9e6e58) Changed pin Scenario 2 reconciliation – unknown→confirmed lifecycle (#4257) (2efeacc47) Fixed removeEventListener on abort, unconditional parseLocation assertions, AbortSignal tests, DEFAULT_LSP_CMD constant (#4241) (db873a09d) emit mcp_server_status OutputEvent for embedder health UI (#4256) (bb6c99325) reject TS1xxx syntax errors before baseline comparison (#3773) (#4260) (52e75bea0) remove pnpm version: 9 from live-provider-tests.yml (#4236) (808fbfb7c) Added continue a capped subagent with its full prior conversation (#4263) (cd4599bc7) Changed POST /api/sessions/:id/prompt now returns 422 for native slash commands (use POST /api/sessions/:id/commands instead), REPL-only commands, and unknown commands (#4246)cover the round_cap_notice_dropped path (#4264) (075cd68be) Fixed continuation hardening from #4263 final review (#4265) (1c6a2fb7f) replace mismapped subagent-block contract with real hook-block detector probe (#4245) (f15e5f81d) never silently drop the subagent round-cap notice (#4258) (d1a66c704) decideStatus returns unsupported (not pass) when no replay handler exists (#4244) (6c14878e8) block mutating git stash inside linked worktrees (#4249) (2fa896cfe) handle.ts cancel comment, mint finally leak, disarmCols reset, manager truncation, redactSecrets test, composeTool pin (#4224) (c65852a6d) telegram /insights help, logging, NaN guard, tests (#4211) (2daf01cd2) checkEgress try/catch, atomic release push, unconditional breaker assertion, SlotProvider import type, stale AFK.md (#4221) (67ca3156c) OTLP push hardening and test gaps (#4212) (dbebae914) LSP symbol lookup hardening (abort, realpath, timeout, response checks) (#4213) (1c846bee0) dashboard handoffs view polling, in-flight guard, types (#4216) (556d88844) misc follow-ups: cli-reference tests, joinContinuation case, to-definition git_read (#4215) (c187df0b9) agent host remote-path invariants and test accuracy (#4214) (aa0bce8f1) move background-job tools to optional tail; fix schemas.order.ts JSDoc (#4222) (751979da9) move agent-type listing from tool description to system prompt (#4219) (dd7410af9) Changed remove the auto-release workflow; releases are manual (#4146) (e056015e) Fixed SSRF host guard, timeout tests, botInfo fail-closed (#4145) (1688dc5d) pin agent-tool error strings, fix DAG isolation test name, add Invariant comment, fix stale docstring (#4148) (5dca1d07) move duplicated normalizeSlotProvider/parseStringField into model-slots.utils.ts (#4143) (d130f41b) advisory findings from 2026-10-14 PR triage batch (#4002) (40d9bb2f) make durationMs test deterministic — drop wall-clock margin (#4144) (0d244dbf) Fixed fix word-doubling in joinContinuation, add missing tests, deprecate completeWithWire (#4174) (81b38187) Added grant git_read to research-agent under AFK_READONLY_GIT_TOOL (#4196) (a4c82f2f) Fixed address handoffs-view review findings (#4197 follow-up) (#4207) (56420f74) plan-mode gate for agent{host}, host control-char rejection (#4206) (c0a8bdd3) Changed stable tool-list partition for prefix-cache reuse (#4205) (06c5cb04) Added wire host field on agent tool to RemoteSubagentHandle (#4202) (5262a205) pending handoffs view in dashboard (poll + answer form) (#4197) (6ff53f95) LSP symbol lookup tool (phase 2, opt-in, off by default) (#4201) (bcaf1538) Fixed route DaemonHandle.registerTask through quarantine, fix JSDoc, strengthen quarantine tests (#4175) (4d4604fe) fix dead code in checkMirror, improve order-mismatch logging, export registrations/checkMirror, add tests (#4193) (14e5a0f7) Added measure shadow-git-detect observe-window firing rate (#4200) (53c4e74f) live OTLP/HTTP push for afk trace export-otlp (#4195) (0f09b9fe) add /insights Telegram command for text summary of usage analytics (#4194) (95f3ecc3) surface riskCategory in trace show and status-line chip (#4199) (9263d0c9) Fixed @internal tags on OTLP wire types; ROOT_PARENT_SENTINEL for background agents (#4192) (becd7fa1) use "safe idempotent" in web_request retry wording (#4191) (096a2c75) Fixed add disarmCols to ResetStateHost and zero it in resetState (#4177) (2ce59472) clean up fallbackBySession on mint completion and document void close() (#4178) (0f2a4f47) Fixed correct billing_settled comment to say cumulative totals, not delta (#4184) (a918fbec) pin readRoots/writeRoots confinement descriptions in CI (#3772) (#4186) (65265cbb) Fixed record failed/cancelled child costUsd in subagentRunningCostUsd (#4185) (c8aff4ed) narrow catch to race error, add pending-status pre-check, add tests (#4179) (30696807) JSDoc ALL_TOOL_SCHEMAS flag note; tighten Scenario 4 vote assertion (#4187) (1ed6a132) Fixed oauth_pending servers and mid-session disconnects now surface model-visible notices (#4183) (b6542f25) fix four low-risk advisory correctness gaps in /handoffs:answer (#4180) (a7b97e60) add missing test assertions from 2026-10-19 advisory findings (#4176) (8e7eb6bc) Changed fix lint:tests ratchet regression from #4153 (#4188) (2198554c) Fixed pass explicit scanCmd to writeReference; add mirror check to scan:cli:check (#4152) (551e74c8) Changed mark Task Scheduler service backend as shipped in windows-setup.md (#4150) (f5ed0866) update evidence-gate header and test description to "on by default" (#4149) (6e170733) Fixed correct web_request schema and header to match retry implementation (#4151) (dba2b24e) correct root span status, best-effort completed-only spans, omit errorHead by default, index background_agent (#4153) (7a589b4a) Fixed sanitise toolName in mcpUnknownToolMessage + make dedup test reach collision branch (#4157 follow-up) (#4173) (61baa1b3) include offending value in startup quarantine warning (#4161 follow-up) (#4171) (5695f9b7) Fixed harden MCP failure-notice sanitiser and wire-prefix glob (#4157) (64df554b) Fixed cross-reference mirror guard comment + document per-call allocation nit (#4163) (aa0596dd) apply reflowedPhysicalRows inflation to disarmed EXPAND path (#4162) (4fc3100c) quarantine malformed runAt/expiresAt tasks at daemon startup (#4161) (7791f0f4) advisory findings from #3986 — mixed provider on BillingUsage (#4160) (a6dac97b) advisory closure-provenance test improvements from #4021 review (#4159) (5676dfcb) add explicit test for pause→resume→same-text not superseded (#4158) (4b54ee4f) add Known residual test for FS_MUTATING over-gate in risk-classifier (#4156) (c0b2dd37) doc, test, comment, and regex-safety fixes for wind-down-final (#4155) (fec0d50e) add single-quoted -c test case and document -C/--git-dir omission (#4154) (0b00bc7f) Added /export md|html — self-contained session export (#4026) (23c7c271) afk acp — Agent Client Protocol JSON-RPC 2.0 stdio server (#4040) (b1f8b8c8) Fixed Linux CHROME_CONFIG_HOME/XDG_CONFIG_HOME ignored by real-Chrome probe; surface silent catch in error-hints (#4023) (c46be820) bash write-shaped verification command also advances lastMutationIndex (#4028) (ca6edc96) stop hardcoding bash/workspace_query as forbidden in compose prompt suffix (#4016) (f116f20d) regenerate slash-command reference after /handoffs landed (#4164) (875c97e5) Added add /handoffs and /handoffs:answer REPL slash commands (#4027) (e9dba5f2) POST /api/handoffs/:taskId/answer with CSRF + responder identity (#4033) (2c328d93) fall back to parent model when the default subagent model is rejected (#4117) (bc465c2f) Fixed stop LLM ghost-text suggestions from truncating mid-word (#4142) (c663ec63) Added journal AI ghost-text suggestions and their outcomes (#4128) (f15358df) Changed stage 2 — shared root validation + reuse setupIsolationWorktree in DAG dispatch (#4138) (c6fffd6a) Fixed address advisory findings from voice/audio transcription review (#4132) (a27acb0f) harden regen:generated marker scan and conflicted-stage parsing (#4131) (c5a8db4b) forward toolCount through provider boundary; add mcpServers e2e variant (#4137) (acc498b6) Fixed add centered reflow-shift eviction test and document fallback contracts (#4133) (96a9b94d) mark full-width frame rows as hard for tmux reflow-shift (#4129) (d66bc7b0) typecheck baseline reason edge cases in regen:generated merges (#4130) (4c9c9b59) complete prediction fixture in baseline-budget test (#4134) (c6c48cf7) address advisory findings from bash_timeout_clamped review (#4136) (bdff2e4b) delegate grantsTool in XaiProvider, note tool-grant.ts gap, fix nit comment (#4135) (4a30545a) Added resolve generated-file conflicts with pnpm regen:generated (#4116) (a50df293) Added transcribe inbound Telegram voice and audio messages (#4047) (9a5169e8) Fixed erase tmux-reflowed echo duplicate on pane split (#4114) (97eaa72f) Fixed strip quoted content before dispatch-intent classification (#4101) (9c9f6bdf) tidy two-phase MCP provider rebuild from #4069 (#4093) (7cadc910) add missing read-only subcommands to git_read (#4099) (4b595a2f) keep tools on anthropic-direct wind-down rounds for prefix-cache preservation (#4094) (b2ee0b22) Added drain REPL queue at tool-round boundary (AFK_STEER_MODE=boundary) (#4041) (2b84cf58) Fixed add e2e MCP fixture test, assert public exports, fix stale sdk.mdx MCP text (#4092) (b26f111a) Fixed clone gate falls back to two-dot diff when shallow checkout has no merge base (#4115) (0bd621db) Changed regenerate env-registry after #4037 + #4044 (unbreak main scan:env:check) (#4113) (b4084131) Fixed correct misleading comment in live-frame-margin test (#4091) (5622b70b) stop telling children to call workspace tools they are not granted (#4071) (3374497a) address advisory findings from #4025 per-slot maxOutputTokens (#4100) (f64c0bd0) add regression test for baseline-sample cost deduction from verifyRun budget (#4098) (acfb2e87) move bash_timeout_clamped telemetry after min-1000 guard, add spy assertions and background clamp test (#4096) (7f779581) address advisory findings from #4005 review (#4097) (7efdf98c) Added post-edit LSP diagnostics (phase 1, opt-in, off by default) (#4044) (8573cfa3) per-provider subagent concurrency caps for fan-out waves (#4037) (c6cf83d9) Changed complete docs overhaul: new navigation, every feature documented, generated references with CI drift gates (#4070) (ff5c18b2) Added add jscpd clone gate that blocks only NEW copy-paste clones (#4043) (6666a9d1) add RiskCategory enum to every gate verdict and hook_decision trace event (#4045) (9dce34ea) measure guardrail false-positive rate for hook-block-repeat meta-guard (#4035) (c08d437a) Added RemoteSubagentHandle implementing SubagentHandle over SSH transport (#4038) (b29df7f8) GitHub event polling producer for the pull queue (#4039) (77838847) Changed introduce decidePathAccess — single resolve-then-decide credential floor (#4036) (61bb3f8e) bump react-dom from 19.3.0 to 19.3.1 in /website (#4083) (5a9a225e) bump the dashboard-dev-minor-patch group across 1 directory with 3 updates (#4089) (b61d201e) bump @vitejs/plugin-react in /dashboard (#4087) (09c90e17) bump next from 16.4.0 to 16.4.1 in /website (#4080) (863aae3a) bump pnpm/action-setup from 4 to 6 (#4077) (9bd433d4) bump the dev-minor-patch group across 1 directory with 3 updates (#4088) (23a52b97) Fixed replace Array.prototype.push.apply with concat in maskHookCommandData (#4031) (ad950330) advisory findings from PR triage batch (#3831, #3812, #3810) (#4029) (6d0465c3) gate bash read carve-outs on read-only commands; grant SSH public keys (#4030) (964679ff) Changed bump @types/node from 26.6.4 to 26.6.5 in /website (#4082) (6aeac344) bump the fumadocs group in /website with 3 updates (#4079) (46697ce8) bump actions/setup-node from 4 to 7 (#4078) (4b475ed7) bump the prod-minor-patch group with 7 updates (#4086) (e093c5ec) bump the dashboard-prod-minor-patch group (#4084) (55c38a76) bump react from 19.3.0 to 19.3.1 in /website (#4081) (862168d2) bump actions/checkout from 4 to 7 (#4076) (9d149f55) Fixed MCP-aware unknown-tool messages and session-init failure notice (#4068) (ad38d39a) Added offline OTLP/JSON export of witness traces with GenAI semantic conventions (#4046) (1fbf2426) Changed guard safe-table verdict with classifyBashCommand mutation check (#4032) (305b5f3c) Fixed strip git commit -F - heredoc body from restricted-path scan (#4034) (b5e17a20) keep tools on wind-down rounds so prefix caches survive (#4048) (a139de71) tell read-only git agents about the git_read swap (#4056) (d689813c) Fixed SDK builds and owns McpManager from config.mcpServers (#4069) (7fecda4d) Fixed deduct baseline-sample cost from maxUsdRemaining in verifyRun (#4004) (5a9f1b8f) address remaining advisory findings from 2026-10-14 PR triage batch (#4003) (64c0ba92) accumulate costUsd across all turns in RunBillingContext (#4005) (c3db1d1a) Added add per-slot maxOutputTokens; derive smarter default for unlisted openai-compat ids (#4025) (386a9b36) Changed cross-path dispatch-policy parity matrix (#4049) (5870700b) Fixed restore telemetry for clamped bash timeout_ms and tighten warning test (#4022) (1aaf5cbf) Changed verify closure provenance stamping through real emitClosureEvent path (#4021) (71460dc5) Fixed apply reflow inflation to EXPAND branch; fix tautological center-band test; add widen-guard and EXPAND tests (#4019) (c02c55c2) isSuperseded cleared/paused goal, escapeXml notice, cleared-goal tests (#3987) (d9f31330) warn and skip on malformed stored runAt/expiresAt (#4024) (4bbf1200) document mixed provider on BillingUsage and add rollup test (#3986) (2a320c75) correct billing_settled JSDoc to say cumulative totals, not delta (#4020) (a7b7a68d) Fixed publish remote-dispatch guide and fix broken link in tools-reference (#4018) (938dd63c) Fixed append wait in stdin-isolation test to drain background job before cleanup (#4017) (08bc05c9) Fixed add boundary test, document permissionMode host field, restore blank line (#3982) (ef9d5ec6) Fixed fix stale comments, add JSDoc note, extract named opts objects (#3999) (b5d2c97f) advisory findings from PR triage batch (#3780, #3798, #3800, #3801) (#4000) (5ac5e6f2) Fixed forward operator-explicit permissionMode only; extract ResolvedSessionManagerOptions alias (#3994) (77110792) Fixed per-entry _schemaVersion guard in write path; shape error for primitives (#3993) (4ec15faf) add missing tests for scalar-JSON guard and inflight dedup (#3991) (a2a587a9) JSDoc invariants and compose exemption tests for dispatch-intent gate (#3990) (ce5822c8) address advisory findings from 2026-10-15 PR triage batch (#4001) (9457323a) Fixed clear 2 test-typecheck errors that turned main's ratchet red (#4015) (a78bcb2a) Fixed tighten registry drift-catcher to reject 'inherit' model pins (#3995) (b8e10f09) add hasWorkspacePreamble test and drop true as const nit (#3992) (5a08681b) tighten recovery tests, add reply hint, fix readonly cast, harden rmSync (#3998) (6ae521cc) tighten isStdoutOnlyCat regex and fix threat-model citation (#3996) (330ad864) fix Bearer stopword lookahead \b→\s; add 8-char boundary and hyphenated-token tests (#3997) (be00c1db) Fixed add pinning tests for unconfined-parent writeRoots/readRoots no-op behaviour (#3797) (e88363d6) Fixed safe filename encoding for Telegram topic sessions; deterministic tailLedger test (#3814) (afb59aeb) Added add Telegram /inbox command for held peer messages (#3616) (9146a963) Fixed gate dashboard install on .modules.yaml, clean partial dir on failure, add tests (#3608) (ee1e15b8) hasHandler sessionKey, concurrent-tick latch, setupNotice field (#3661) (0b298a8d) strict ISO 8601 validator, overflow/null rejection, tests (#3591) (36bf64a3) align dispatch guidance with tool allowlists (#3816) (35cb7ea4) Fixed expose skippedByBudget in VerifyResult and replace tautological assertion (#3988) (4fd46664) Added self-diagnosing real-Chrome setup for afk browser connect (#3933) (263b3f20) Fixed add remote_agent to tools reference (#3914) (36d51ca4) shadow-git false negatives (bundled flags, backslash continuation, escaped quotes) + abort-only lost-work test (#3799) (a9ea6acf) inflate pendingResizeErase footprint for centered-content narrowing resize (#3802) (b02bcd74) detect lost root closure by actor provenance, not cost equality (#3935) (64ed2cfe) clamp over-max timeout_ms instead of rejecting (#3820) (d5804441) emit billing_settled phase for post-cancel delta; move runInProgress inside try (#3938) (9d4e021a) Added wake idle Telegram sessions when a background subagent settles (#3953) (7fa10cef) Fixed carry accumulated usage across stop-hook continuations (#3936) (ba01631a) add --permission-mode to afk chat and pin it on remote runs (#3947) (2154b025) Fixed narrow read-only dispatch-intent gate, name the match, enforce in compose (#3944) (733eff5b) await startup recovery in HandoffMaintenanceHandle.stop() (#3948) (e7b0dd40) lost-args failureClass, alignment guard, and missing tests (#3952) (1757ff41) Fixed thread parentBillingStreams registry so depth-2+ abandoned streams reach session_sealed (#3962) (29b36826) Added mark subagent results as superseded when goal changed at delivery (#3951) (b1cdb4f1) Fixed add missing stderr tests for OAuth/refresh paths; use restoreAllMocks (#3946) (8e47c5d4) harden skill-reference telemetry — non-object JSON guard, in-flight promise dedup, Set-based dedup (#3940) (57a037df) address advisory findings from 2026-10-16 PR triage batch (#3955) (10b91b0e) Fixed add maxTurns to cost estimator to model multi-turn episode spend (#3949) (fa420138) gate splitAtWorkspacePreamble on fork provenance, not marker text (#3943) (eeca6650) clarify JournalMeta.model semantics, fix child provider source, add noop forSubagent params (#3950) (12694cb0) guard sumBillingUsage provider mismatch + document outcome tag on SessionExecutorsBindTarget (#3941) (bb3f0ffe) remove skippedByBudget double-count in runTask (#3945) (a4e87629) add schema-version guard to loadSchedules; refuse future/unknown shapes (#3954) (4e0c0a17) wire bot-level permissionMode into every Telegram session's AgentConfig (#3942) (7a9fd9f4) narrow Bearer/AWS false positives from loosened anchors (#3937) (2ea8bc3d) Fixed roll nested and skill fork spend into root session (#3960) (713edaea) Fixed pin receipt cost rows and trace total; fix facet doc (#3911) (9835afd8) reclaim parked lease immediately when periodic sweep expires its handoff (#3913) (72ab0460) Fixed harden remote_agent cwd validation, quoting, and output framing (#3917) (e4b55fd6) Fixed re-send handoff reminder with inline keyboard buttons on recovery (#3915) (9b6e374c) stop builtin agents and fix-pr from pinning models (#3926) (801f2a85) stamp subagentId on child closure events so root-filter guard works (#3912) (060ee7a1) Fixed resolve each probed slot's route once instead of twice (#3910) (0a8139a9) merge prompt-dump secret shapes into canonical redactSecrets; add parity test (#3918) (d4d7fb05) correct lost-root-closure under-report and backstop-seal $0 root (#3909) (b694971f) Added billing-normalized token rollups split by provider (#3889) (ff2316cf) Fixed downgrade plan mode to default on Telegram (seed drain is REPL-only) (#3916) (c5f7f45c) Fixed keep per-fork workspace preamble out of the sibling-shared cached prefix (#3923) (5d12bcde) Fixed retire dead gpt-5.4/grok-4.6 ids, add gpt-6 family (#3825) (2a1ac81c) Fixed stop runAt overlap noise, record blocked reasons, warn on date-pinned crons (#3824) (e6437fc7) Fixed truncatedByBudget false when all episodes ran despite budget exceeded (#3906) (7fa0605d) send MCP status logs to stderr so -f json stdout stays clean (#3905) (1c7a04c6) Fixed preserve existing body >300 chars when reinforcing SPINE entries (#3908) (58c9dd16) resolve slash-routing contradiction and measure mid-message skill references (#3884) (99ac1575) stop /clear waiting on the SPINE classifier (#3843) (5817ea85) route-aware credential check and suppress SPINE.md rewrites in A/B arms (#3907) (d98a6350) stream chatgpt-oauth turn events instead of buffering the whole turn (#3826) (40ee2959) Added probe model slots with a custom endpoint + docs: local Mac model guide (#3887) (283cc1f0) Fixed one shared session-cost definition that includes subagent spend (#3888) (a5bb4943) Fixed guard stale-unlink retry in worktree-sweep lock on Windows (#3881) (ebeaadd9) keep [vitals] notes out of the Esc-Esc rewind picker (#3870) (048b33d9) Changed add explicit threat model (docs/threat-model.md) (#3851) (835fe595) Fixed apply Windows delete-pending contention fix to 3 remaining O_EXCL lock sites (#3875) (01c74ea8) treat mutating bash calls as writes for last-mutation ordering (#3872) (be5fcef5) extract splitFrontmatter to unify three divergent frontmatter parsers (#3874) (f0de21bc) anchor truncated-marker fallback to tail; export shared constant (#3873) (0b4fe90f) accept read-only polling builtins and pipelines (#3853) (2980ab38) add remote_agent to ALWAYS_EXTERNAL_TOOLS (#3871) (8b51407c) ignore proven quoted heredoc data (#3855) (2a65059c) let confined forks write to the OS temp dir (#3864) (95dbc2c2) Fixed run handoff maintenance and resumption in every daemon mode (#3877) (c6f259ea) Fixed pin shared WorkspaceStore lifetime across child session close (#3827) (bd119ab9) Changed retire proxy-redundant egress checks (#3854) (c2a3cb8e) Added accept free-text revision feedback in exit_plan_mode (#3832) (4d1fb31d) Fixed stop confining unconfined openai-compatible forks to read roots [] (#3815) (82aa12e4) Added read-only GET /api/handoffs lists pending daemon handoffs (#3858) (9fcc9ae5) Changed replace fixed sleep with vi.waitFor in background-registry stopReason meta test (#3844) (e2a95438) Fixed expire daemon handoffs on the pull tick under the handoff lock (#3859) (d8e0c3fc) Added remote_agent tool dispatches afk agents to other machines over SSH (#3837) (70fd1d49) Fixed canonical redactSecrets in whatif runner; escape bg-result envelope attributes (#3857) (b5b407b5) Fixed reject whatif --aa --verify, which silently ran no episodes (#3856) (0c7d88a8) Added record running afk version and the child's real model in journal meta (#3808) (#3830) (d5f4731b) opt-in git_read tool replaces bash on read-only children (#3812) (74f4daba) Changed pin Scenario 4, a bash write after a test pass leaves the artifact unverified (#3810) (1d8cfc99) Fixed do not dispatch tool calls whose arguments were lost or unparseable (#3829) (f0c8dd46) bound seal() wait on pending child writes; InMemoryTraceWriter parity (#3831) (d336dafc) Changed pin Scenario 5, future-version schedules.json is cast, not refused (#3809) (7f76a0c5) never cancel in-progress CI runs on main (#3818) (3cfa7a6b) add nightly live provider test workflow (#2217) (eda80a93) Fixed refuse to overwrite an unreadable schedules.json (#3819) (5224e6cc) Fixed stop treating "next" Done bullets as deferred work (#3813) (324d4eb7) Fixed distinguish hook command data from executable input (#3780) (36fa3b4d) center status line under AFK_CENTER_CONTENT (#3801) (7b900f23) Changed BgResultNotifier.dispose() with pending injections (turn-ends-before-drain) (#3804) (957616d5) Fixed preserve GhError detail, tighten test coverage across advisory items (#3798) (1ff57c30) replace fixed sleep(600) with vi.waitFor in send-failures test (#3800) (0cf36811) Changed pin Scenario 3 – goal change while worker runs yields no superseded marker (#3806) (4af5afe4) Fixed await pending child cancellation writes inside TraceWriter.seal() (#3807) (6f391479) Fixed import REDUNDANCY_THRESHOLD and add fixture similarity assertion in run.test.ts (#3803) (476bc5b5) add direct unit tests for checkReadOnlyDispatchIntent gate (#3805) (3bbce2c0) Fixed correct mislabelled catch-branch line numbers in schedule.test.ts (#3733) (4981f257) Added block-evasion monitor — analyzer, tests, and afk trace show --evasion (#3785) (48f2fa56) shadow-mode detector for git --no-verify and identity overrides (#3783) (b4457491) Fixed address advisory findings from 2026-10-14 PR triage batch (#3791) (4949cadf) Added hook-block repeat circuit breaker (#3789) (adcc1ace) Changed Happy Eyeballs fallback + split connect/inactivity timeout (#3792) (1612ec17) Changed skip SessionStart dispatch entirely for forked children (#3784) (7dfcc534) Fixed remove catchHandled dead code, fix exhaustiveness cast, drop unused generic (#3790) (ca243e50) reject implementation dispatches to read-only named agents at dispatch time (#3786) (6319c4ba) Added read-only hooks view; config_get errors on unknown keys (#3735) (db3038da) Fixed drop redundant early-return, warn on partial mid-flight deletion, reorder collectAsyncIter, add direct unit tests (#3782) (9385e52b) Changed restore .test-typecheck-baseline.json (2767) (#3793) (a43552fb) Fixed document compose leaf tool restrictions (#3778) (1fa2e823) Fixed repair test type errors from #3765 breaking lint:tests:check on main (#3788) (69f323a3) Changed Delete .test-typecheck-baseline.json (5982190e) Delete .commit-msg (ccf73716) Delete themes/terax directory (8b4656cd) Fixed fix value/checked precedence, escape testId, wrap map callback, JSDoc, targeted tests (#3729) (c16ea0e0) Changed fix journal writer path in tracing section (#3787) (1e236048) cover gh jq flag alternatives (#3777) (b15eac1e) cover production dispatcher cwd setup (#3775) (adcb0671) clarify root grants for unconfined forks (#3772) (1a76dde6) Fixed distinguish recovered gate blocks from failed runs (#3781) (295e9b22) reject fatal test typecheck input diagnostics (#3773) (000c958e) make AFK_CENTER_CONTENT render as faithfully as non-centered mode (#3765) (e33892ff) redact raw value from budget env warnings; say "finite" for Infinity (#3743) (14d97841) tighten refusal guidance and clarify factory contracts (#3774) (42eda72b) pin bug filing host and bound confirmation previews (#3776) (4275b6d3) Added /bug --file files the report directly with gh after confirmation (#3750) (81098984) Added add /bug to report bugs via a prefilled GitHub issue link (#3746) (e30f0b14) Fixed show status-bar cap when maxBudgetUsd === 0 (hard-stop sentinel) (#3745) (be9a4a94) name sanctioned alternatives in high-risk refusals (#3727 follow-up) (#3760) (ef09815a) Fixed restore lint:tests:check on main (merge race #3748/#3747) (#3768) (6184908e) Changed write mutable JSON snapshots atomically (#3749) (d58ad5cb) assert maxBudgetUsd reaches Telegram/REPL; add Infinity parser cases (#3748) (bd200f8f) MCP tools are top-level only, not shared with subagents (#3753) (923061a4) Fixed stop confining unconfined forks to read roots [] (#3734) (761a2580) match BASH_SAFE only at command position (#3761) (e608a1d6) refresh advertised catalog on setCwd so execution and wire catalog agree (#3744) (c27de050) make lint:tests:check gate visible by fixing TS6059 rootDir blindness (#3747) (3c1ec3ae) Added content-addressed checkpoint blobs with integrity verification (#3628) (1215b324) Added suppress no-info hook_decision rows, add hook_summary and search_witness where filter (#3728) (b5c39cab) Fixed extract streamer.utils.ts, add settled guard, consolidate killGroup, add helpers tests (#3740) (6621d7a0) close egress proxy test coverage gaps (items 1-4) (#3742) (484d37dd) Fixed add PreToolUse order assertion and deduplicate Invariant comment (#3730) (54af8768) route browser login launch through GuardedEgress proxy (#3731) (a415bd0b) batched nits — comment, unreachable fallback, mock cleanup, collectAsyncIter, named guard, debugLog (#3640) (1d93e243) Fixed name the safe alternative in two high-friction denials (#3727) (aa94b8e7) Added durable pending-question store wired into elicitation router (#3678) (3cceb09d) Changed adopt atomic-write at 5 hand-rolled sites (#3668) (3e47d1ec) add SW(29,16) symmetric weighing matrix (#3722) (034e2f89) Fixed split question-only prompts over 4096 chars (item 3) (#3663) (990f8646) Changed split createDefaultHookRegistry under 200-line ceiling (#3684) (c8151569) split transformProviderEvent under 200-line ceiling (#3667) (6b6691a2) split startShell under 200-line ceiling (#3682) (9b1d4554) split parseAgentInput under 200-line ceiling (#3666) (aa03c31a) split observePage under 200-line ceiling (#3681) (2c42787c) split parseComposeInput under 200-line ceiling (#3683) (4e0a74d4) raise coverage on COV-009..013 modules (#3669) (688e0fa1) Changed SW(27,16) result write-up and README section (#3717) (cfcb1f06) Fixed apply SSRF egress guard to browser_open navigation (#2313) (109db833) Changed split registerChatCommand under 200-line ceiling (#3685) (55a74162) Changed split buildChildConfig under 200-line ceiling (#3688) (2c4945d7) Added write-ahead intent, outcome-unknown status, and pre-execution retry gate (#3713) (e7ee6b30) Changed clean-install guide, task pack, and intervention log for outside-user trial (#3711) (fb322dc2) shared execFileAsync export and abortReason helper (#3686) (1b612231) deterministic repro for parent seal over live child subagents (#3712) (86e8ea18) pathExists helper and atomic-write adoption at remaining tmp+rename sites (#3687) (d129bd58) extract rawPostOAuthForm; consolidate xAI device-code POST blocks (#3702) (5523afb6) Fixed replace fixed sleeps with vi.waitFor in elicitation intercept tests (#3701) (7046c5b2) make afk whatif --aa reachable from the CLI and /whatif (#3715) (1b18068f) Fixed resolve nit/low advisory findings from PR triage batch #3670-#3680 (#3703) (10538e16) Added per-model-slot tool deny list (tools.disabledBySlot) (#3704) (2e6ea1aa) Fixed wire AFK_MAX_BUDGET_USD to daemon, Telegram, and REPL sessions (#2314) (ebdf6a4d) Changed split createBashHandler under 200-line ceiling (#3690) (93ff16b5) split SubagentHandleImpl.run under 200-line ceiling (#3700) (cbfbe6b7) Changed split SubagentManager.forkSubagent under 200-line ceiling (#3699) (f0c909da) Changed split anthropic-direct runTurn under 200-line ceiling (#3698) (e43106db) split preserveRowsBeforeFrameRender under 200-line ceiling (#3692) (1a8a234b) Changed split consumeRoundStream under 200-line ceiling (#3697) (84ca3e2b) split ComposeExecutor.execute under 200-line ceiling (#3696) (d4801b60) split streamToFinalMessage under 200-line ceiling (#3695) (755eaf31) split handleEnter under 200-line ceiling (#3691) (300d76ee) split runForegroundWithPromotion under 200-line ceiling (#3689) (e16db44d) Added tag learning facts with [auto-reflected] at recall (#3677) (d5a9697c) Fixed cosmetic comment fixes — resize-burst B5 discriminant, advanceTimersByTime explanation, rm onRetry warn (#3671) (a559dd18) replace raw bash/grep overflow-kill warn with a styled tool-row label (#3680) (0ae2bdfd) Added document and test redundancy preflight warning (#2414) (#3675) (c2b661ac) Changed split applyPatch and createImageGenerateHandler under 200-line ceiling (#3673) (4fbf2222) extract renderRootOrderLines + flush helper; handleCompact method (#3672) (8a766a43) drop NodeJS.ErrnoException casts at 12 production sites (#3676) (0506684c) adopt IncrementalLineReader/readJsonlFile at remaining hand-rolled sites (#3670) (c41bc657) Fixed static deliverClean import, restore Invariant comment, add ALS comment, dedupe JSDoc, remove unused env re-export (#3679) (3332ed78) Changed split interactive runTurn under 200-line ceiling (#3650) (43d3a44b) Fixed advisory findings from PR triage batch #3638-#3647 (#3664) (9e3cf384) remaining cosmetic items — fast-path comment, dedupe compose-agent-resolve tests (#3662) (e1012b60) Changed split telegram streamResponse under 200-line ceiling (#3658) (4b286689) Changed split makeTelegramElicitationHandler under 200-line ceiling (#3656) (2d3cf0b5) split runSweep under 200-line ceiling (#3657) (2fa61bb6) Changed split registerInteractiveCommand under 200-line ceiling (#3651) (7cebc1cf) Changed split setupSurface under 200-line ceiling (#3648) (26ffc64e) Changed split renderToolLaneOverlay under 200-line ceiling (#3649) (52e8909b) add shared execFileAsync (#3653) (20968114) add abortReason helper for AbortSignal.reason sites (#3654) (ccfe7fe5) adopt isErrnoCode/isEnoent at errno cast sites (#3655) (79026f23) Fixed narrow-terminal layout: wrap to real width, force spill below 20 cols, add edge-case tests (#3643) (2cc5fb5f) Changed split stream-rendering functions under 200-line ceiling (#3609) (68740aeb) telegram clear-or-queue delegation + bareSkillName helper (#3645) (9a99c78b) adopt isEnoent at file-checkpoint, peer inbox, and user-skills sites (#3647) (538f6c74) Fixed use native Rolldown dashboard build options (#3592) (ee49d01a) verify OAuth form global fetch fallback (#3590) (9c24cc0a) advisory follow-ups — store comment, selectors guard, drain-rejects test, outcomes barrel doc (#3593) (45ddcb2e) collision-only scrollback, type-guard filter, echo original, derive prefix cols, spill-ordering tests (#3639) (f5bc519c) telegram ask_question edge cases near 4096-char limit (#3646) (fddb4b67) address advisory findings from 2026-10-12 PR triage batch (#3642) (f59ec87c) refactor updateHandoffAnswer to options object, tighten from type, add PII JSDoc, debugLog, and tests (#3641) (ecc51dbe) low/cosmetic fixes — @internal, EPERM note, spawnError, workspaceClose assert, mcp example (#3644) (0bd4138c) remove unused _sandboxes param, reject --aa+--spec, clarify A/A stage name (#3638) (a0045d86) Added content-addressed artifact registry (put/get/list/read) (#3629) (f22ec95a) Added return committed fact access metadata (#3623) (2ebcb5d8) add --aa flag for A/A calibration mode (Step 0) (#3630) (6a50ad73) install daemon elicitation handler for cron/sessionstart tasks (#3619) (8e10e234) Added add responderIdentity to HandoffRecord for response provenance (#3627) (a1e07953) Changed adopt readJsonlFile in ledger/store; audit remaining sites (#3622) (5f38fe77) Fixed address advisory findings from 2026-10-12 PR triage batch (#3626) (dec4d416) thread customBaseURL into resolveWireMode on complete() and one-shot-router paths (#3624) (a93be7fe) Added opt-in repo-declared worktree setup step (#3611) (8715836c) Changed adopt atomic-write for launchd plist install/upgrade (#3615) (8788ae22) Fixed never cut off ask_question text (#3625) (4f04d330) Changed raise bot.ts statement coverage 56.5% → 91.6% (setupHandlers closures) (#3618) (a99e34ef) extract connectMcpTraced helper (MCP trace-phase duplication) (#3617) (937f8fd8) adopt errorMessage at ?? 'aborted' sites in abort.ts and browser/web handlers (#3614) (01c1cb90) convert score/writeScore to writeJsonFileAsync (#3612) (4037a8a2) strengthen B3/B5 resize-burst precision + add cpr diagnostic (#3603) (b61e74d7) Fixed match BASH_HIGH tokens only at shell word starts (#3610) (f4cf9300) thread AFK_THINKING/AFK_EFFORT into Telegram bot constructor (#3613) (1192ede6) Changed wait for schedule writers to close before retrying cleanup (#3600) (43676d18) reuse one validated temp-root snapshot per write classification (#3604) (5dc1b243) Fixed track StateStore handles to fix Windows EBUSY on kv.db teardown (#3605) (5144a3ba) review follow-ups from #3582, #3583, #3584 (#3598) (d5c71a3d) move WorkspaceStore into try and log session-close failures (#3597) (073ac4e8) advisory findings from 2026-10-09 PR triage batch (#3594) (42bfa165) align mkdir options and preserve private state parents (#3599) (c313e2e5) per-root try in afkStateRootsResolved, test hygiene (#3596) (d0fdeebd) unify OAuth resolution and guard one-shot endpoints (#3595) (79966b65) Fixed auto-install dashboard deps in build-web-ui when missing (local only) (#3602) (ffe5fa8f) Fixed support comma-list brace expansion in the glob tool (#3578) (#3582) (29d90d53) Fixed one leaf tool surface for every compose node (#3579, #3580) (#3583) (61164044) credential gate honors --model/--provider (#3581) (#3584) (b6e3e8ba) Added file checkpoint and rewind (write_file, edit_file, patch_apply) (#3355) (5365d21a) Fixed recreate owned stores after provider close (#3567) (5f671185) Fixed pass thinking/effort from env to Telegram bot sessions (#3289) (9ea268b9) Added add afk restart for AFK background services (#3290) (3ccb0096) Fixed close surface-owned session stores (#3568) (13cc408a) finish one-shot schedule surfacing and advisory cleanup (#3573) (86ec6d15) exclude all AFK state roots from temp writes (#3566) (79e3e979) finish scoped advisory fixes and regression coverage (#3571) (f147fd64) strengthen isIndexLine guard to AND all field checks (#3565) (226dc7b0) Changed document verdict reasons and temp-root privacy (#3569) (6eab069d) add Invariant: prefix to long JSDoc block in stream-renderer-dispose.ts (#3564) (c0ead9bd) Fixed correct workflow annotations and formatter edge cases (#3570) (3dec3a1e) Fixed complete advisory cleanup and release test ledger (#3574) (98980630) Changed pin conservative BASH_HIGH classification for heredoc prose (#3549) (0c6adaf9) Fixed preserve width-only erase snapshot during SHRINK within a CPR burst (#3293) (bf2cfba1) cross-prefix npm, post-update service restart, Cellar execPath normalization (#3300) (dfb5699e) Added remove AFK_OPENAI_CHATGPT_OAUTH; ChatGPT OAuth is the last-resort tier (#3388) (23404057) Fixed posix-guard timeout, scheduler gate indentation, double applyAutoDisable, JSDoc corrections (#3526) (e8a88411) Changed extend skip-audit table with 4 additional non-JSONL-parse sites (#3528) (ae5ab60d) retire disposeRenderer from funcsize baseline (#3525) (c2a497c5) extract getScopeAbortMessage to utils/abort (#3529) (b63407ba) Fixed strengthen isIndexLine guard and fix isError assertion (#3527) (a253e5f2) dedupeAndSort simplification, double-bind guard, armTimeout-after-dispose test, JSDoc fix (#3523) (efae12ce) Fixed never close caller-injected stores in provider.close() (#3559) (c08635e2) Changed raise coverage on src/cli/commands/browser.ts (16% → 98%) (#3557) (21c749fa) Fixed advisory findings from 2026-10-11 PR triage batch (#3552) (157854cd) Added support object-valued source entries in marketplace manifests (#3551) (a29885d3) make cron-task elicitations visible via handoff + notifyOn (#3531) (0410547f) Changed bump the fumadocs group across 1 directory with 2 updates (#3535) (5aca60fc) bump typescript from 5.9.3 to 7.0.2 in /dashboard (#3543) (b2181af7) adopt atomic-write helper at 4 hand-rolled tmp+rename sites (#3530) (1328d226) adopt errorMessage helper at 4 telegram sites (#3548) (79bbbe49) Fixed close provider SQLite handle (kv.db) when session closes (#3550) (a7f30981) Added treat system temp dir as safe for AFK writes; specific block reasons (#3533) (170bf9ef) Changed bump vite from 6.4.3 to 8.3.3 in /dashboard (#3541) (38e1ab9c) bump lucide-react from 1.52.0 to 1.53.0 in /dashboard in the dashboard-prod-minor-patch group (#3540) (eb47e9f9) bump next from 16.3.8 to 16.4.0 in /website (#3536) (f94afd18) bump actions/upload-artifact from 6 to 7 (#3539) (91f3c0cd) bump actions/setup-node from 4.4.0 to 7.1.0 (#3538) (976928a8) bump actions/checkout from 4.4.0 to 7.0.1 (#3537) (3bc9e5b7) bump the prod-minor-patch group with 3 updates (#3542) (0228d146) fix plugin install example — use real plugin, show marketplace flow (#3343) (2d579b46) Fixed blockquotes own one trailing newline and keep their bar across gaps (#3547) (a63ffaa8) start nested lists in tight items on their own line (#3544) (c643e0e2) Added service status shows running version and warns on skew (#3313) (72b5dd8c) Fixed model_complete accepts empty prompt when input_path is set (#3344) (60bbe3e2) advisory findings from 2026-10-08 pr-triage batch (#3347) (e17bf566) render ledgerTruncated in insights HTML; remove dispatcher double-gate; export LEDGER_READ_LIMIT (#3374) (cd35a29e) Changed extract downloadTelegramFile into media-download.ts (#3306) (f0e3f9d6) Fixed fix --days 0 parsing, ledger cap warning, hidden-cluster count, path sanitization (#3373) (53aaf569) add unnamed-worker empty-guard test + fix JSDoc arg reference (#3391) (b13a1f86) Changed extract renderPickerRows/handlePickerKey from runPicker; extract renderOverlayNestingChild from renderOverlayChildren (#3515) (39776e19) Changed extract runDaemonAction and runFarmPostRun under 200-line ceiling (#3516) (4f6800ba) Changed retire handleNavKey + readWithAutocompleteTty from funcsize baseline (#3514) (b03e5ae8) Changed raise coverage on entry.ts, manager.ts, setup-wizard.ts, bot.ts (COV-011,014,016,017) (#3521) (c638b1e5) adopt atomicWrite/writeJsonFile in spine/dag/worktree/migrate/oauth (#3520) (86d5df9d) audit remaining parseJsonlLines sites; document skipped loops in telemetry-reader (#3518) (0d6a09e8) DEAD-033 incremental — agent/index.ts + tools/schemas.ts (88 unused exports) (#3517) (b873c472) DEAD-033 incremental — src/agent/outcomes/index.ts (54 unused exports) (#3513) (ae40bfe6) convert remaining hand-rolled error/execFile sites to shared helpers (#3461) (37a4467c) Fixed disposed guard in armTimeout, formatApprovalTimeout helper, crash-notifier comment, test nits (#3512) (4d6ce9ec) dedupeAndSort helper, discriminant cast, ledger comment, audit-fit hoisted default, runtime-source history prefix, test name fixes (#3511) (36e22aef) address advisory findings from #3472 review (#3510) (3fdedcf6) dispose latch, compose-toggle guard, @experimental tag, concurrent-dispose test (#3509) (f41e6d26) guard sessionId undefined + merge preflight imports (#3508) (81f05202) address advisory findings from #3471 review (#3507) (e07192c4) drop async from submitPrompt/submitSkillMessage, move buildChatGptOAuthResult up (#3506) (6e7c86db) migrate createWiredExecutors inline proxy onto makeDeferredParentProxy (#3505) (53a3ede4) address advisory findings from #3473 selector refactor (#3504) (9a9d7f99) migrate external mcp/config-loader importers to barrel (#3503) (2b2e28c3) advisory findings from 2026-10-09 PR triage batch (#3468) (ec6d0785) Changed remove log-update — compositor-less TTY path is unreachable (#3486) (7f9a56f2) Fixed daemon tasks can disable their own schedule without approval (#3488) (dfa60454) Added first-class runAt one-shots and expiresAt hard expiry for schedules (#3491) (95541352) Changed retire the last 6 .filesize-baseline.json entries (#3492) (37160e26) retire 4 TUI funcsize baseline entries via helper extraction (#3487) (fd472209) extract postOAuthForm shared helper for xAI OAuth form POSTs (#3469) (a0162904) correct tui-architecture-map tracks, pain points, and hotspot table (#3484) (c8855c04) Fixed record status:blocked and fire notifyOn:failure when AFK gate hard-blocks tool calls (#3489) (1ecf9ada) classify 403 oauth_not_allowed_for_organization as transient (#3485) (9cb00718) replace clearAllMocks with resetAllMocks and widen far-reset margin (#3490) (d88cbef0) Added opt-in agent/skill/compose executors for SDK sessions (#3442) (#3483) (3a2918c7) Changed advisory cosmetic fixes from 2026-10-09 PR triage batch (#3471) (1696be99) extract buildVerificationResultTail shared helper (#3472) (abcd0b75) DEAD-033 incremental — src/agent/mcp/index.ts (15 unused exports) (#3474) (782f55ec) same-file private helper extractions (#3477) (36cbd123) extract makeDeferredParentProxy shared helper (#3475) (5f72a5d4) extract invokeSkillPreflight shared helper (#3476) (6ed1083b) extract runSelectorLoop skeleton shared by both selectors (#3473) (239b51fa) Fixed crash-notifier reset leak, double busy_timeout, shared deferred abort scope (#3482) (2ed4a8c3) discriminant guards, parseFlagsField dedupe, audit-fit test, runtime-source comments (#3470) (ac88fdc9) Changed upgrade vitest to v5 (#3455) (db92de18) Fixed address advisory findings from #3401 review (#3449) (f794878f) fix advisory findings from pr-triage review #3398 (#3447) (beb2cafb) Changed fix bufferedLength JSDoc and remove duplicate newline comment (#3410) (1e35a8fa) cover afk schedule command (COV-012) (#3453) (60f0f9d9) cover marketplace browse slash command (COV-015) (#3451) (7b286760) cover REPL cleanup (COV-018) (#3456) (9296fe4a) cover afk browser command (COV-010) (#3452) (ffe88ce9) extract installCrashNotifier shared by telegram and daemon (#3459) (156e70fe) share request abort scope between web_request and web_scrape (#3458) (d5612e18) remove Agent Browser backend; Playwright is the only backend (#3450) (f21d81d3) extract configureSqliteConnection for state/workspace/memory stores (#3457) (b397c8d0) upgrade marked to v18 (#3437) (537f3e41) Fixed add safety comment to rest as T cast in clampBreakpoints (#3445) (428e2697) remove stale 'threads' category, guard default backticks, regen MDX (#3448) (9cd8c1c6) warn and document that SDK sessions lack agent/skill/compose tools (#3454) (d5364a23) Changed cover afk service command (COV-007) (#3421) (a29df44b) cover audit-fit skill (COV-013) (#3436) (1ce3dba1) cover afk telegram command (COV-008) (#3432) (fc314fc3) remove internal @deprecated symbols that need no major (#3435) (1c22de65) extract 4 same-site helpers (category, enum, changelog, fixture-parse) (#3418) (d2c29953) prune unused exports surfaced by knip (#3438) (89c24937) adopt parseJsonlLines in 3 parse loops; migrate gates.ts to bounded telemetry reader (#3417) (d43618b2) adopt atomicWrite in utils/journal/tools/peer/score (#3433) (f64c635e) adopt json-file read-or-default helper (#3423) (45b4f139) regenerate env-var page for AFK_VITALS (unbreak main CI) (#3446) (c6f7088e) Fixed assert path extension and tighten output_format body regex in tests (#3441) (ff0e5ded) address advisory findings from #3395 review (#3440) (6589479c) thread afkHome through RuntimeSourceDeps, add TTL cache tests and debug log (#3415) (705c9507) strip [vitals] spoof lines from tool output on openai-compatible path (#3443) (69d3e4b2) validate frontmatter flags, cap body scan, cache harvest, document contract (#3444) (2cbb6aff) hermetic EACCES mocks and narrow parse-phase catch in json-file (#3414) (be1ec37f) test hygiene, flake guard, boundary perf, docs nit (#3412) (1e36f8d1) advisory follow-ups from #3381, #3376, #3375 (#3411) (abfeec38) use isEnoent in queue-store, fix import spacing (#3439) (2f90a13d) retry ChatGPT-OAuth 401 with fresh token from disk (#3413) (b0a06791) Changed upgrade dotenv to v18 (#3422) (ba8bdbd2) adopt atomicWrite in daemon/worktree/session stores (#3420) (37dbd6fd) Fixed distinguish thrown push from unconfigured, add redaction+overflow tests (#3416) (a5c863c5) Added per-round [vitals] note for live clock, context, and usage awareness (#3419) (e56c1072) optional retries for cron daemon tasks (#3403) (f4bc39d3) Fixed harden hydration against malformed nested parts; surface corrupt-journal resume degradation (#3393) (ee4560d7) Changed add hermetic query()-level resume tests and journal-load benchmark (#3395) (2ebdfebb) carry plugin-skill flags + category through discovery (#3400) (d7dd4feb) adopt shared execFileAsync, add isEnoent, replace private helpers (#3399) (f5f8b265) generate website env-var page from ENV_REGISTRY and gate drift (#3402) (039584e8) Fixed send output_format in image_edit multipart body (#3392) (df524091) triage advisory findings from 2026-10-07 /pr-triage (#3398) (93cf94ec) narrow CacheableToolLike, add 5m TTL test, widen dispatcher timing (#3394) (0b3a82b9) resume on account switch without /reauth; safely join paused waits (#3401) (ae932132) Fixed retry bootstrap after bootout with ETIMEDOUT guard and clear recovery message (#3382) (3b93b9a0) Changed run-afk action reproducibility and doc follow-ups (#3362) (e00643d7) race guard, RTT seam, assertion margins, dead helper (#3365) (56511127) Fixed redact taskId fallback in crash notices; early-handler single-call guard (#3375) (a260860d) Changed daemon wave-resume push logging, named constants, explicit promise awaiting (#3377) (08e276ec) Fixed clear resizeGeometryStale on repin early-return; fix stale prose (#3376) (9460ebf2) bufferedLength units doc, explicit first-line discard, drop redundant existsSync (#3380) (e931b4de) deliver mid-turn background-process results at the tool-round boundary (#3384) (a6d323cc) surface timeoutRate/p95Ms in summary, add summary to subagents view, TTL cache, narrow non-null assertions, fake timers in tests (#3379) (6139b570) narrow loose-reader error handling — rethrow EACCES/EISDIR (#3378) (550e4850) correct h1ModelFetch docs and strengthen Responses-wire test (#3381) (712a1dc4) Added auto-load journal on resume so SDK consumers rehydrate conversation context (#3372) (9cd65ba9) Fixed route image-model tool handlers through HTTP/1.1 transport (#3363) (73d36148) Changed full-request cache-breakpoint guard (system + tools + messages) (#3366) (0844df6e) SW(25,16) result write-up and README section (#3383) (91b8c2a6) Changed dedupe TOOL_SYSTEM_PROMPT_BASE for unnamed workers (#3364) (e744caf1) Fixed tighten collapsed-frame predecessor regex and add missing tests (#3312) (0277d318) Changed adopt errorMessage/ensureError/isErrnoCode and add execFileAsync helper (#3354) (ecd33f7e) repro test suite for committed-band hole after pane resize (#3360) (77562805) Fixed post-merge hardening for #3326 #3327 #3329 #3336 (budget-gate stub, short-read loop, json-file tests, dispatcher restore) (#3356) (a928fb93) Fixed adapt afk defects to LedgerReadResult (main tsc break) (#3367) (152a709c) Added add afk defects CLI subcommand for recurring defect ledger (#3350) (3ef3c90d) Changed add solo-timeout test and explicit spy restore in model-complete (#3311) (f1b560f2) note that model_complete max_tokens is ignored on ChatGPT-subscription models (#3292) (79b9be8a) extract appendSystemPromptBlock, formatDuration, detectMediaType, brace scanners, printWarnings, chatLabel helpers (#3349) (d7514c7e) Fixed tighten heartbeat test assertions and waitFor options (#3310) (1dadb52a) redact in-flight command heads in crash notices; register crash handlers before startup (#3358) (5b8751f9) union re-wrapped operator deny lists; surface ledger tail-cap truncation (#3357) (d9284998) suppress legacy deficit eviction while resize burst is in flight (#3361) (45d44cd2) add end-to-end regression test for preset {append} in system message (#3351) (219d0d71) Changed give unnamed subagents a scoped worker prompt instead of the full parent base (~54 KB) (#3324) (09ca83dd) Added push wave-resume offers to Telegram from daemon; include in-flight tasks in crash notices (#3323) (50ed2aa7) Changed add json-file + pathExists helpers, migrate 13 call sites (#3329) (1c7cb9e7) Added ship a reusable GitHub Action for running afk in CI (#3321) (82e44ca7) Fixed force HTTP/1.1 for all model API calls to prevent nghttp2 DATA-frame freeze on Node 26 (#3336) (0ce406ba) Added add OverlapAlertLatch — one Telegram alert per overlap episode (#3326) (7b90c16b) aggregate subagent outcomes by model, type and depth and surface in get_runtime_state (#3328) (43540bc2) Changed split system prompt into stable cached prefix and volatile env tail (#3322) (a7202c80) shared JSONL helpers and bounded schedule-telemetry reader (#3327) (2edd291f) Fixed address CPR late-reply advisory findings from #3240 review (#3314) (6a932100) harvest flags from flat-installed plugin roots (#3333) (849c625a) address advisory findings from 2026-10-08 /pr-triage (#3294–#3309) (#3325) (3b3ab7b5) Fixed block restricted paths in bash on headless surfaces (#2312) (9becef0b) Changed shared type-guards, sleep, truncate, truncateTelegramLabel, stripAnsi in tests (#3318) (eb6a5650) Changed surface /whatif and Jev as differentiators in README (#3315) (e04095c8) shared walker + resolveTraceFile + groupViolationsByFile; fix --reason drift in check-test-typecheck (#3319) (495196f4) extract checkout-lifecycle helpers; plugin update warns before discarding edits (#3317) (d7eb6282) Fixed apply advisory findings from 2026-10-07 pr-triage (#3316) (24c952c5) Fixed share normalizeSystemPromptOverlay; fix OpenAI preset {append} drop (#3305) (29241d8c) Added add preexisting-defect ledger reader and afk insights section (#3307) (1dbc57c5) operator tool deny list (tools.disabled) with /config → Tools toggles (#3297) (abbd92bb) Changed add wiring regression tests for PreToolUse injectContext delivery (#3308) (b78b8c69) add router anthropic/xai branches and model_complete path-approval once/subagent cases (#3294) (ebedf10c) Fixed add mid-session endpoint switch tests for reasoning replay (#3309) (6827c08e) apply advisory findings from 2026-10-08 pr-triage (#3296) (08175418) Changed openai-compatible compaction defaults to gpt-6-luna on real OpenAI endpoints (#3288) (481340df) Fixed address advisory findings from 2026-10-08 /pr-triage (#3295) (b7bda6f0) Fixed tidy three comment nits in mascot.ts and mascot-mini.ts (#3115) (8cd25714) replace fixed sleep with vi.waitFor in heartbeat test (#3285) (eafc8118) accept collapsed-frame marker as Python traceback predecessor (#3287) (8883a81a) guard CPR late-reply leak + adaptive timeout (#3240) (a25d355b) prefer timeoutSignal.aborted over caller signal when both fire (#3286) (2d66cbc2) Fixed enforce named-agent tool and bash restrictions on compose nodes; block peer tools for children at dispatch (#3270) (d9fdf69b) Added support Claude Haiku 5.5 and point haiku alias at it (#3280) (a776f1c2) Changed bump typescript from 5.9.3 to 6.0.3 (#3236) (ff81872e) Fixed report prompt counts in /compact, not inflated raw message counts (#3132) (9bfd8411) apply advisory findings from 2026-09-30 pr-triage (#3137) (e127727b) wire ownerStartTime pid-reuse check and unify parentSessionId spread (#3118) (6f1f2f6f) document TOCTOU window, normalize notifyOn comparison, assert store isolation in shell tests (#3117) (5d12437a) keep enabled thinking on opus-4-6, mute SDK deprecation warning (#3279) (b949763d) Fixed share sweep-policy resolver; /worktree prune now honors config and env age limits (#3272) (e2d8f13f) advisory findings from Cerebras support PRs (#2788, #2789, #2790, #2793) (#3138) (9e09cc86) validate text minLength/maxLength in Telegram elicitation handler (#3275) (3d9cf10e) Fixed move isNewerVersion to update-version.ts; fix prerelease compare in afk update (#3271) (4aaa2ea5) share buildWhatifRunOptions between CLI and slash; forward operatorPredictions (#3274) (46537334) reject chatgpt-oauth in image_edit; extract makeSessionCounter (#3273) (251ff682) treat null-equivalent Deferred values as empty (none/n/a/-) (#3237) (8d7e5064) Fixed erase ghost spinner and CPR-reanchor on width-only tmux resize (#3228) (0e46a05d) tighten strategy-nudge error-line detection (#3223) (55d06547) cap earlySettled and sanitize toolUseId in detached-tool-notifier (#3222) (fac366f4) Added add model_complete, a one-shot completion against any configured model (#3254) (1dcf8f26) Changed bump @types/node from 26.6.3 to 26.6.4 in /website (#3230) (cfdd9539) bump ora from 8.2.0 to 9.4.1 (#3239) (fb500b1d) Fixed regenerate pnpm-lock.yaml broken by sequential dependabot merges (#3253) (bb91c807) Added make fact tracking and soft-delete GC safe per archive (#3211) (5ffb7f4f) Changed bump the fumadocs group in /website with 3 updates (#3229) (ab12fef1) bump @testing-library/jest-dom in /dashboard (#3231) (904d8a6f) bump lucide-react from 0.468.0 to 1.52.0 in /dashboard (#3233) (44fe7df7) bump jsdom from 26.1.0 to 30.1.2 in /dashboard (#3234) (0b916557) bump jsdom (#3232) (f6b82938) bump commander from 12.1.0 to 15.0.0 (#3235) (c5f7c4ff) bump undici from 7.30.0 to 8.11.2 (#3238) (c4dae640) bump softprops/action-gh-release from 2 to 3 (#3225) (e01e6735) bump actions/upload-artifact from 4 to 6 (#3226) (da3c889d) bump actions/setup-node from 4 to 7 (#3227) (a029e391) bump actions/checkout from 4 to 7 (#3224) (94534ea2) Fixed address advisory findings from #2854 (Fable 5.1 support) (#3148) (4ad89fee) Fixed deliver non-blocking PreToolUse additionalContext (#3157) (e80d1327) Fixed reference RAW_VALUE_CAP in inbound-mode boundary tests (#3219) (1ec88e05) tighten EgressBlockedError assertions in egress lookup tests (#3221) (47b48886) address advisory review findings for tool-health monitor and daemon builtin (#3135) (f1057945) remove duplicate ToolFailureClassSchema, tighten isContentBlockArray return type (#3133) (d00f99f6) advisory findings from #2770, #2879, #2824 (#3134) (7274f3ae) document internal-only helpers in effect-ledger barrel (#3209) (15ee4fbe) raise engines.node to jsdom 30's floor (#3150) (825d7761) address advisory findings from #2810 peer boundary delivery (#3136) (19c7e3da) address advisory findings from review of #3063 (#3116) (f76fdba2) address advisory findings from review of #3077 (#3097) (ba46e740) remove dead applyPostRunNotices (#3220) (f6e86014) replay reasoning for destination endpoints (#3156) (387daa69) bound Windows bash kill cleanup without blocking (#3210) (e7e07b30) add _renameFn/_platform injectables to atomicWriteFileAsync for portable EPERM retry testing (#3153) (26021cbc) add maxRetries to rm in temp git repo teardowns to avoid ENOTEMPTY (#3208) (53152e90) Fixed re-anchor live frame after tmux pane resize (no more duplicated frame on kill-pane/split) (#3204) (6f07459d) Added add opt-in Stop hook that blocks closing on unproven external diagnosis (#3190) (22ca5a25) Fixed harden stream termination and retry observability (#3159) (3d9008fa) Fixed read vision/reasoning/context from the Codex catalog so gpt-6 models see pasted images (#3188) (c240ca37) count patch_apply as file write, bash external effects corroboration, move version history (#3191) (edc66634) Fixed complete advisory review follow-ups (#3158) (e4db9d85) Fixed strategy-nudge keys on the real error line, not boilerplate (#3160) (343c2503) add RAW_VALUE_CAP boundary tests and move getPeerInboundModeConfig into list branch (#3186) (00b7acfe) address advisory findings from detached-tool-notifier review (#3189) (688ec803) use makeNonIpError on deps so non-IP records reject with EgressBlockedError (#3187) (14d60a55) Added trace-backed downgrade signals — closure reason + subagent budget exhaustion (#3195) (b3f82314) Changed add unit tests for three worst-coverage CLI/service modules (COV-007..009) (#3203) (a5903f52) remove buildPromptAsync internal deprecated shim (#3196) (80b8167e) Added add UPDATE-failure-resilience test for access tracking (#3192) (358c8669) Changed Web dashboard: session titles, new-session hang, and sidecars for daemon/web/skill sessions (#3197) (91e2d6d5) DEAD-033 incremental — remove 72 unused exports from src/agent/trace/index.ts (#3202) (3a725829) patch picomatch ReDoS, bump openai+@types/node, fix website/ baseline-browser-mapping (#3193) (d7ba5ea7) Fixed migrate task-view describe blocks to task-view-mode.test.ts (#3200) (1308f538) execFileSync for findGitRoot; shell-metachar tests; gitleaksignore cleanup (#3199) (ee2f4181) add { unref? } option to sleepWithAbort; tighten test; cover sleep() unref paths (#3198) (b551e708) Added catalog-backed route limits, configurable in-turn context guard, model awareness (#3177) (5f9e91bf) Fixed re-fork zero-output transport failures once, fail closed on any tool activity (#3172) (2bcae018) Added opt-in elapsed-time connection retry budget + connect-failure diagnostics (#3173) (c605e2b2) explicit incomplete handoff and findings salvage at the tool-round cap (#3176) (5e15142c) Changed add unit tests for three worst-coverage CLI/service modules (#3178) (92e7f89b) Fixed address advisory review findings from 2026-10-06 pr-triage (#3175) (22971afa) Changed delete task-view.ts, remove @types/node-cron, prune 25 unused exports (#3174) (4a9def34) Fixed observe yield probe failures and cover cached PR paths (#3154) (130d8ed4) add maxRetries to rm in peer wake teardown to avoid Windows ENOTEMPTY (#3179) (0daf2a5b) keep the event loop alive during retry backoff sleeps (#3171) (72991e20) replace shell execSync with execFileSync for worktree ops; add .gitleaksignore (#3180) (69c38902) Fixed pass --allow-scripts=agent-afk to npm install so postinstall runs on npm >=11.19 (#3152) (9005022b) Added add --predict flag and spec predictions field for deterministic operator-supplied predictions (#3162) (9cfccc5f) Fixed add portable POSIX-utility regression test for settle-after-kill fallback (#3167) (7833d6f9) dispatch UserPromptSubmit in Telegram per-turn path (#3163) (f3853eb6) Added downgrade self-reported Done using corroborating signals (#3168) (4b1b07a5) Changed note dropped **Done** — text single-line form next to 'unknown' in FacetOutcomeSchema JSDoc (#2797) Fixed note dropped single-line Done form next to 'unknown' in schema JSDoc (#3165) (a4d78b4b) wire DetachableToolRegistry.settled subscriber (#3164) (644bf907) peer hardening — typo visibility, bare-filename guard, corrupt-orphan rescan test (#3161) (649073cb) harden createGuardedLookup — catch callback throw, block non-IP, prove all=true (#3166) (ad9dfea9) Fixed session sidecar exitReason/eof advisory findings (#3145) (7402bddf) Fixed extract shared sleepSync util, strengthen backoff ceiling test, add retry log (#3146) (561f230d) address advisory findings from traced retry layer (#2851) (#3144) (73b10717) address advisory findings from 2026-09-29 /pr-triage (#3142) (ae9d977b) document far-reset probe tradeoff and provider scope for autoResume env var (#3140) (e75ddf2d) advisory findings from #2850 — peer activity presence fixes (#3139) (b09ae05d) Fixed address advisory review findings from #2857 (#3147) (be9c4ba9) advisory findings from #2835, #2860, #2862 (#3143) (50042fd7) address advisory findings from #2852 presence review (#3141) (3314dc73) Fixed guard history.push for silent auto-resume; add held size hint (#3122) (8d7749ce) harden process-jobs — escapeXmlAttr apos, sweep tests, quota-rotation guard, trace observability, docs (#3123) (73d850d6) truthful background-result delivery note so agents stop busy-polling (#3125) (68c7d0b3) add containment and uid checks to EXDEV cleanup fallback (#3131) (a62bf115) Fixed address advisory findings from review of #3075 (#3121) (8578aecb) shorten regression test title, justify realistic variant, inline JSDoc (#3120) (1881a64f) reject {content: null, edits: []} as no_change_specified (#3130) (0355ed77) bash-detach stale listener, unref timer, sentinel + compose JSDoc/guard fixes (#3124) (0d2b846f) address combined advisory findings from 2026-10-06 triage (#3119) (45c1993c) Changed unit-test applyDeferPeers branches and processJobNotifier ordering (#3099) (ac4303e7) Fixed treat standalone content: null as absent, not a parse error (#3100) (2df47ac1) Fixed add test-typecheck error-count ratchet and document tsconfig.test.json include scope (#3114) (5676f002) Fixed report rewound prompts, not raw API message counts (#3109) (29a0d8d7) complete truncated SPINE.md citations and trim SKILL.md descriptions (#3112) (3ff0fa7b) complete schema extraction, add type guards (#3113) (919afeec) document onTaskComplete disk-durability contract and add afterEach flag-leak guard (#3110) (9d52188f) close lingering .rm sibling, add EXDEV fallback, add .rm-linger test assertion (#3101) (5a8c68b0) fix cwd precedence comment, restore tilde JSDoc, add EXDEV lock-degrade test (#3111) (7e8845ef) poll groupAlive assertions to avoid zombie-window flake (#3098) (2f4c5695) Fixed record ownerPid in bg meta.json and reconcile dead-owner jobs on read (#2319) (d2387bcb) Added fold forge SALVAGE candidates into shadow-verify and automate (#3094) (4b652616) Changed unknown corruption path that orphans tool_use blocks past two defenses (#2344) (62c18815) add non-blocking test-file typecheck gate (#3054) (124e2184) Fixed guard schedule read-modify-write with O_EXCL advisory lock (#2318) (ae6b8696) decouple fireOnTaskComplete from telemetry append try-catch (#2317) (2a30f2e2) reject executor:"shell" on POST /tasks HTTP control surface (#2316) (b2ecd991) Changed inject execSync via deps, extract mockPrefix helper, share win32 invariant helper (#3055) (41062f4b) replace wall-clock budget, fix EBUSY teardown, harden watch timing (#3056) (67ef042b) Fixed wire Stop on afk web, forward beforeTurnEnd, honor cap=0 (#3057) (9a918d6c) Fixed persist compose partial flags in the journal and count partial nodes (#3058) (f0dc157a) explicit case + tests for no-usable-auth-forced-chatgpt-oauth and source:config (#3059) (c37ef0d9) harden gate-liveness test assertions — URL check, module reset scope, neutral token, catch comment (#3092) (146b93e9) drop unused flushed var, move comment, add isDirty rationale (#3091) (f736859a) bind resolver inside vi.waitFor to eliminate post-poll non-null assertion (#3090) (b03df02d) add curl -si allowlist comment; pin execSync arg in gh run list test; fix double-space nit (#3089) (fd608e90) de-flake windows tests (rm retries; sync process-jobs cancel test on registry leader-exit) (#3093) (b11580ae) Added perfect the goblin — v17 banner portrait + sharper mini sprite (#3064) (23c6001d) Changed replace fixed sleeps with vi.waitFor polling in afk-two-way-roundtrip (#3073) (f65a3fe3) harden gate-liveness tests — fake token, fail-open coverage, real workspace dir (#3062) (939d49b1) direct _mergeVotes ordering tests + accurate ordering docs (#3074) (a5ee46fa) cover cappedHistory and falling-start/rising-tail burn-rate paths (#3075) (2b1173bf) assert pendingWindowCap via test hook in S2 (#3077) (caaa28ef) Fixed correct curl -si comment; add gh run list wait_for test (#3060) (ef678e0d) advisory findings from #2895 — security, perf, nit cleanup (#3061) (6aa297d8) close lstat-to-rm TOCTOU window in session-tmpdir cleanup (#3076) (c31f825e) address advisory findings from #2883 review (#3063) (bf4383e4) Added run_in_background for managed long-running processes (#3037) (254fb1cc) Changed unit-test queuedSubmission + restore runInputLoop funcsize headroom (#3050) (88c290df) Fixed harden per-session TMPDIR (TOCTOU, registry leak, hook shells, cache, docs) (#3052) (e5faf816) restore pendingWindowCap invariant on all-sentinel displacement, document sync guarantee, add compact+sentinel tests (#3014) (6c06fbb0) treat blank optional args as absent in edit_file and patch_apply (#3051) (359fbcca) suppress burn-rate ETA when latest sample pair is non-increasing (#3048) (d068b217) real candidates count + debugLog in memory GC sweep (#3049) (a0e22e77) delete-then-set in _mergeVotes to preserve Map arrival order (#3047) (c5bc6887) use path.relative-based containment in sandbox-guard (#3033) (a4cb15fd) Fixed widen drift-test job regex to include digits/uppercase; annotate heredoc (#3042) (2a7676d8) Changed strengthen spy assertions in telemetry-write-guard tests (#3036) (988d38a7) Fixed replace as OutputEvent[] casts with satisfies in stream tests (#3041) (2742fbdd) head+tail signature cap, remove dead nudged field, reword invariant comment (#3043) (be05492c) parentRootSessionId JSDoc and microtask test drain (#3035) (fcf63c7a) consolidate safeAnswer into farm-callbacks.helpers.ts (#3044) (7992ff73) update is_current_session description, fix TOCTOU, document 2048-byte bound (#3045) (47eb5f2e) locale-neutral schtasks CSV parsing, CR/LF/NUL guard, restart upgrade, dedup (#3034) (f29b7d75) Fixed override proxy-addr >=2.0.8 and source-map-js >=1.2.2 (GHSA-jqcg-44mw-7w3h, GHSA-68fv-2mgg-jv7q) (#3046) (d627aedd) exhaustive switch in closureFromTrace and inline comment in normalClosure (#3031) (2e6349e7) Added Windows Task Scheduler backend for afk service (install/uninstall/status/restart/upgrade via schtasks, user-level, no elevation) (#1602) advisory same-error strategy nudge + surprise rule in system prompt (#3016) (6bfe6196) add orchestrator-owned pre-push re-check to /ship (#3023) (c1134ebc) Changed no service/auto-start support (daemon, Telegram bot) (#2347) (2e16379c) audit production code for POSIX path assumptions (#2345) (585a17ae) add hook-level dedup test and root-only contract comment (#3011) (8e2c1ce8) Fixed restore handleEnter invariants and narrow CsiHost width (#3025) (6cdbd0d9) don't re-show archived rows on small content-hug shrinks (#3018) (b207b50e) Shift+Tab mode switch toggles one live notice instead of stacking scrollback lines (#3021) (856931eb) harden dead-letter quarantine — unique suffix, orphan dead-letter, benign race doc (#3024) (8d64c73c) address advisory findings from pre-push hook review (#3019) (74661760) tighten isExecError guard, add response-output tests, fix farm.ts arrows (#3022) (e44c2c2c) readSidecarCwdSlice prefix read, is_current_session self-alias only, additive contract doc (#3017) (5def1400) import renderReceiptMarkdown before re-exporting in receipt.ts (#3020) (a5e0edfc) Fixed bare-filename guard, corrupt trace file field, races test coverage (#3009) (1b0177cb) outcomes combiner v2 advisory findings (#3012) (9201818c) Fixed fix misleading JSDoc comments and deflake attribution tests (#3005) (27951e02) address advisory findings from #2974 review (#3010) (cfa71b5e) Fixed tighten replay-renderer test assertions per advisory review (#3013) (5eb61262) harden /history test hygiene — 4 advisory findings from #3000 review (#3015) (96147112) Changed cover /history journal-first path and flush-before-read (#3000) (70c9f939) Fixed resolveBinding promotes a raw slot id to the full slot binding (#3001) (1f211c21) protect worktrees pinned by scheduled task cwd fields (#2996) (737f34b9) close stale pending window after compact→preamble→provider_switch; add soft-truncate tests (#3002) (64da2894) three small journal replay renderer defects (blank paragraph, overcount, TTY echo) (#2999) (1769b0b2) drop stale hardcoded model list from ChatGPT backend 400 error (#2998) (20bbddd6) Added combiner v2 with severity tiers and good-by-default (#2997) (db76e12a) Fixed skip sessionstart agent tasks and alert when telemetry file is not writable (#2974) (22f4fbc5) Fixed remove stale bypass-mode execFile warning (#2716) (a73ac02c) stop SessionEnd hook classifying its own SPINE.md edits and the main checkout's stale diff (#2641) (6fbb9d98) credit nested sub-agent commits to the root session (#2710) (698bdf4f) get_facet cwd-aware 'latest'; add 'current'/'self'; add resolution fields (#2975) (1bd93f34) quarantine unparseable pending/ peer envelopes to held/ (#2976) (8eb6408b) Added self-installing pre-push hook running CI audit gates (#2686) (9686172f) Added re-render resumed and forked sessions from the message journal (#2715) (fefcf386) Fixed dead-letter malformed handoff records instead of silently skipping forever (#2973) (403ef1a9) address remaining advisory findings from 2026-09-29 pr-triage (#2731) (217ef7f5) Changed split memory-store and memory-tools under the 350-line ceiling (#832) (#2959) (e75edd2e) Fixed make dynamic .mjs import tests portable to Windows (#2730) (3ee6bc78) Changed split 4 files under the 350-line ceiling (#832) (#2962) (46a8b1a8) Fixed surface soft-deadline partial compose nodes in the facet (#2977) (d852cbb7) Changed split worktree-sweep, readonly-bash, receipt, path-approval-hook under the 350-line ceiling (#832) (#2965) (10818c08) Changed split chat.ts, farm.ts, interactive/worktree.ts under the 350-line ceiling (#832) (#2963) (5831eb62) Fixed add in-process cooldown fallback when alert state write fails (#2972) (ee31fa7d) Changed split message handler, session manager and farm callbacks under the 350-line ceiling (#832) (#2964) (e0c0087f) Changed split audit-sdk-dependency and audit-fit under the 350-line ceiling (#832) (#2960) (babec7ad) regenerate env-registry var count after concurrent merges (#2969) (d2c7b1b7) Changed split eval-run/contracts, runner, and propose/template-engine under the 350-line ceiling (#832) (#2961) (6f01d6d2) Added export plugin userConfig options and data dir to plugin hooks (#2732) (2ddcab6d) add soft-delete GC sweep for stale fact archive entries (#2733) (78d51225) burn-rate projection for subscription-quota indicator (#2951) (ceaeda9c) Fixed restore context.cwd as deprecated alias of context.resolveBase (#2948) (f9963c36) hoist wslPrefixes, document dirname assumption, add ordering comment (#2949) (caa6088d) peer-messaging docs/schema polish (#2950) (6e807701) Fixed enforce domain policy independently of unrelated browser config fields (#2919) (5a4ee000) Fixed replace wall-clock budget with ordering probe in 'returns immediately' test (#2947) (6dfbe3ae) Fixed deliver queued user messages at end of turn, not between tool rounds (#2956) (66f8e7da) Added record thumbs reactions as /good and /bad feedback (#2646) (90c9bb06) Fixed explicit truncation notice with line count on both Telegram and REPL (#2642) (0fb04855) render the skill identity preview once per dispatch (#2915) (9bc80faa) Changed drop the spinner to 4 Hz after a 2 s warm-up and skip identical frames (#2946) (1e43fa75) Fixed recover claimed-but-uninjected peer envelopes after crash (#2924) (4c199481) Added blocking Stop hook continues the turn with a hard cap (#2740) (082b7609) Changed rebuild parseSelfReport on parseTerminalState (#2922) (23b9194e) Fixed introduce parentCredential to atomically pair key+sourceModel (#2928) (86ebeab6) preserve body text when annotating; strip dangling label fragments (#2921) (cec37cf8) Fixed anchor breaking-change footer grep to line start (#2918) (598406db) unref poller and exit on stdin close in test-server-dynamic fixture (#2917) (68e536a7) pick most-representative verb for mixed parallel tool waves (#2920) (2a87e812) Fixed root session dirs at /tmp on darwin to fix sun_path EINVAL (#2942) (aa759578) patch prod-path SSRF advisories (fast-uri, MCP SDK stack) (#2943) (92e65c4c) Added fire Stop on every top-level surface from the session layer (#2713) (ab6a3bc7) Added hint that a queued message stops a running wait_for (#2926) (58d369d6) Changed make the dynamic MCP fixture exit on stdin EOF (removes 10s vitest teardown stall) (#2930) (9c899d20) Fixed add subagent PR detection (gap 6) and refactor detection to shared module (#2925) (634be66d) surface Responses-API overload shapes as retryable errors (#2923) (aa724051) tell the model its timeout limit and when a value was clamped (#2927) (d8c08dc1) Added detach in-flight compose with Ctrl+B (#2746) (5b6e5510) Changed remove internal @deprecated items (#2748) (9d2cf2f3) Fixed skip WSL bash.exe in findGitBashOnWindows; derive from git.exe (#2763) (4deddfe0) correct stale delivery-timing text and add sender rules (#2907) (616a9a05) Changed regenerate env-registry after per-session TMPDIR change (#2929) (a57839af) regenerate env-registry after #2747 merge (212 vars) (#2916) (8c1ab0ea) Fixed SIGTERM tracked stdio servers at process exit so stubborn servers are never orphaned (#2931) (7f904dff) wire DetachableToolRegistry at REPL bootstrap so Ctrl+B works on bash (#2753) (26064ba9) Added per-session and per-subagent private TMPDIR for spawned shells (#2747) (824f383d) Fixed settle post-detach deliver() on bounded timer when close never arrives (#2743) (7366139d) newest explicit feedback vote wins (#2751) (00ccaa24) Changed bump the prod-minor-patch group across 1 directory with 7 updates (#2890) (46c634f0) Fixed fix npm bin PATH check for Windows (delimiter and /bin suffix) (#2768) (d08d77c6) silence Ajv unknown-format warnings for gRPC integer formats (#2767) (2696e63a) Changed gate-liveness coverage for safety-gate wiring (#2882) (c78dcfb0) Fixed emit PowerShell-compatible env-var syntax in Playwright install hint on win32 (#2765) (5a13c15e) allowlist gh/curl read-only CI polls; fail fast on classifier block (#2769) (a034b5ff) doctor: use resolveOpenAIAuth to cover ChatGPT/Codex OAuth (#2766) (85f9c2e8) Added integrate skill previews with live dispatch activity (#2895) (0d2b4bc8) improve peer-arrival UX — sanitized identity, silent auto-resume echo (#2896) (f68305fd) Changed redirect HOME in every test worker so tests can never hit the real home (#2905) (4f0d82d0) Fixed consistent, provider-labeled usage-limit errors for Claude and Codex (#2883) (5d3c2cb5) Changed bump openai from 6.38.0 to 7.25.0 (#2893) (ff5379c3) bump shiki (#2898) (077d20f3) bump vitest from 3.2.7 to 5.0.3 in /dashboard (#2889) (fcfe9576) bump @vitejs/plugin-react in /dashboard (#2888) (524c13df) bump @types/node from 26.6.2 to 26.6.3 in /website (#2885) (de8d70f5) bump jsdom and @types/jsdom (#2892) (ddd4991e) bump @types/node from 22.19.11 to 26.6.3 (#2897) (fdd13ba7) bump the fumadocs group across 1 directory with 3 updates (#2884) (df8022ff) Fixed read tool arguments from Responses *.done events (#2904) (45a3a0fc) Added cooperative mid-turn boundary delivery for both providers (#2810) (fa17faaa) tool-health builtin alerts on cross-session tool degradation (#2774 3/3) (#2785) (14c7fc9f) per-session ToolHealthMonitor + tool_degraded trace event (#2774 2/3) (#2784) (fd77b367) Claude Fable 5.1 support with drop_block prefix-binding observable (#2854) (b9dddee3) one traced retry layer for compaction and one-shot calls (#2851) (baad7c6a) opt-in usage-limit park for subagents so an account switch rescues in-flight children (#2826) (464fdac3) cross-process usage awareness (per-provider buckets, afk usage, daemon budget gate) (#2853) (b90e9112) Changed document SessionFacet v7 outcome semantics for public consumers (#2797) remove @types/jest, refresh lockfile to clear prod advisories (#2825) (afd64a82) bump the dashboard-minor-patch group (#2886) (6b1d592e) bump chalk from 5.6.2 to 6.0.1 (#2894) (297013ea) bump the dev-minor-patch group with 2 updates (#2891) (a305976e) bump next from 16.3.6 to 16.3.8 in /website (#2887) (260f51f5) point Dependabot at the root package and dashboard (#2824) (77cf1bd7) remove stale autoRouting daemon refs (#2862) (03469197) regression tests for redactSecrets at Telegram push boundary (#2849) (#2866) (e25238dd) Fixed keep facet schema backward-compatible with v7 caches missing pr_url (#2863) unify spinner verbs onto humanVerbForTool and prune flavour pools (#2878) (17b30f66) key unparseable baseURLs distinctly in rate-limit/ledger (#2872) (#2879) (f0d82a2b) add endedAt + exitReason to session sidecar on all exit paths (#2771) (aafff031) prefer remote default branch over mutable local HEAD in resolveAnchorBaseRef (#2770) (e08b023c) polish v7 public schema notes (#2863) (8f447b64) fix gh pr create detection gaps (quoted separators, $(), flattened multi-line) (#2834) (71aceb7f) resolve ghost-text credential per suggest model; route ChatGPT OAuth over Responses (#2864) (884a2da4) accept completed response when transport drops after stop_reason (#2835) (68f14880) advisory follow-ups from #2845 review (#2855) (#2860) (93b90799) address allowlist wiring test and fork-site audit (#2848) (#2859) (a60783f9) treat raised engines.node floor as major in auto-release (#2839) (c4db34e1) Fixed refuse dangling symlinks in image_generate and image_edit output paths (#2836) (a6e67f59) Fixed retry SDK connect timeouts; redact connection_retry trace text (#2856) (f4332787) Fixed refill the screen after a tall overlay collapses (content-hug blank gap) (#2857) (eed966f0) Fixed invariant comment + redactSecrets at Telegram delivery boundary (#2849) (#2858) (e17db879) address advisory findings from #2805 atomic-write review (#2837) (9e1b9b10) Added show peer session activity in list_sessions (#2850) (4e7e64d9) Fixed defeat pid reuse in presence liveness, refresh heartbeat, reap dead presence files (#2852) (e39708f8) Fixed do not retry egress-blocked requests in retryFetch (#2832) (1c7d48ba) Added disabledPluginHooks config key; warn before marketplace update discards local edits (#2841) (f8c0c4fe) Fixed retry and pause on status-less mid-stream overload errors (#2845) (42457e6f) per-file retention for inbox delivered/ receipts (#2840) (7cd2d35b) never forward an Anthropic credential to OpenAI-routed compose nodes (#2846) (f831dffc) Fixed enforce CommonMark fence rules in fencedLines() so unbalanced fence-like lines no longer hide the end-of-turn heading (#2833) (16bb8711) retry connection-phase network errors (regression from #2422) (#2838) (fe5c90aa) make default provider stores lazy so importing a provider opens no SQLite files (#2842) (2096f82e) Fixed exclude subagent tool events from toolDurationsMs; document trace interleaving (#2831) (cd682695) persist result bodies and fix mislabeled delivered witness events (#2830) (5afd055d) Added tell scoped children which agent_type values they may dispatch (#2829) (23633647) Changed remove dead autoRouting.daemon key (#2827) (b8a0b1e1) upgrade vitest + @vitest/coverage-v8 2.1.9 -> 4.1.11 (#2828) (88914f3c) Fixed keep bash output on abort/timeout; make write_file atomic (#2814) (936a6f27) Fixed diagnostic detail on no readable content errors (#2808) (42a5be5e) Added cross-session peer messaging (list_sessions / send_to_session) (#2806) (dff4418f) Fixed retry rename on Windows EPERM/EACCES/EBUSY (#2805) (1d3ef5ca) right-size /review budgets, fix compose guidance, trace the effective budget (#2815) (c90e1303) Changed unskip clipboard and tildifyHome tests on Windows (#2744) (f1c022f4) exercise real undici + egress-guard fetch path (#2774) (#2783) (510a003c) Fixed address advisory findings from 2026-09-30 pr-triage (#2745) (da8899f6) Added warn when agent-afk was upgraded under a running session (#2809) (5e4eeea6) Fixed back off harder on HTTP 429 and guide retries (#2807) (b6e0a6ad) Added context_window kwarg for the Harbor afk adapter (#2802) (9e1a92af) run it, don't relay it; stop handing safe commands to the user (#2803) (2efa268e) Changed harden 30-day boundary coverage for session-sidecar and session-dir sweep (#2800) (54d208c8) Fixed no history hole while a tall overlay covers committed rows (content-hug) (#2804) (f17c7e46) Added per-slot contextWindow override (#2793) (6ced67c5) Added add Cerebras gpt-oss-120b and qwen-3.8-27b context windows (#2789) (11a5e1b8) Fixed reject/recover JSON-string model-slot values instead of treating them as a model id (#2790) (ce285210) Fixed echo reasoning under its origin field (Cerebras 400) (#2788) (ae814b46) Fixed trustworthy outcome, primary_success, produced_pr, tool_errors_total (#2777) (#2781) (bd054244) Fixed re-drive mid-stream network termination (TypeError: terminated) (#2780) (#2786) (677d09a5) Fixed clear disconnect timeout timer when disconnect succeeds (#2764) (e0749da6) Fixed re-drive mid-stream network termination (TypeError: terminated) (#2776) (#2779) (28e4f60b) Changed use --ak for Harbor agent kwargs (#2775) (dd1fbcbf) Fixed read Claude Code OAuth credentials on Windows (#2755) (9a4b20b8) Fixed honor undici lookup all:true contract in egress guard (web_scrape fetch failed) (#2754) (86f77d75) Changed remove retired capture-flag deprecation notice (#2668) (ab2bbd75) Fixed add fake-timer comment and extract rmSyncRetry test helper (#2673) (2d76fda3) Added detach contract with Ctrl+B backgrounding for in-flight bash (#2735) (74c74b10) Added add scrollable in-TUI viewer for captured bash output (#2739) (5da98b86) Added Harbor installed-agent adapter and eval program (#2741) (dbabc71b) Changed classify Windows-skipped tests (#2738) (25c43d0b) Fixed forward MCP image content blocks to the model (#2734) (f785c05a) Fixed address advisory findings from pr-triage pass 2 (#2737) (4b0b84d0) Added add image_edit tool via OpenAI Images Edit API (#2725) (50e4d361) Fixed address advisory findings from 2026-09-30 pr-triage (#2720) (a6549920) Fixed restore funcsize/filesize ratchets on openai-compatible query() after #2711/#2721 collision (#2729) (a3010b28) Added openai-compatible waits out usage/quota limits (#2721) (f66156a3) add access-pattern reporting for the fact archive (#2724) (91739adb) whatif preflight checks whether the experiment can answer the question (#2722) (556a53f8) Changed read outcome tool results from the message journal (#2718) (bad8a911) provider accounting parity audit and fixes (#2723) (523d9761) Fixed address remaining advisory findings from 2026-09-30 pr-triage (#2719) (93a31b65) address advisory findings from #2661 review (#2717) (4f2d08e0) Added hide skills from the model manifest via disable-model-invocation / skills.hidden (#2707) (2d988efe) add setSystemPrompt, setBeforeNextRound, and rewind to openai-compatible (#2711) (ee7af094) Fixed contain AFK_FRAMEWORK_PROMPT_FILE throw at mid-lifecycle sites (#2704) (c3e7395d) set maxRetries: 0 on SDK clients so AFK owns the retry loop (#2702) (ef707371) Added PreToolUse hook updatedInput support (tool input rewrite) (#2706) (2d09ce1a) Changed cross-provider conformance suite for resilience-feature drift (#2709) (27b3351f) record why openai-compatible needs no many-image guard (#2705) (be4f787a) Fixed address advisory findings from 2026-09-30 pr-triage (#2703) (8d7d23d9) Fixed stable session id for non-CLI surfaces + correct id in get_runtime_state (#2708) (4dcfb31d) update resolver cache and use live getter for parentApiKey after /reauth (#2699) (1f0ec2a4) address advisory findings from 2026-09-30 pr-triage (#2693) (ea594f57) Fixed close frozen Playwright context safely in renderHtml (#2698) (c6573703) Added per-plugin hook env allowlist (#2700) (4c3db5ee) Fixed use undici's own fetch+Agent instead of globalThis.fetch+foreign dispatcher (#2697) (77e4fce9) sort-then-slice fingerprint, drop unused barrel exports, clarify docs (#2696) (31d61c0a) exitCode guarantee, module-scope const, beforeEach fake timers (#2690) (2f2dc903) plumb tailWidth into grouped-root suffix; sum fixed-part widths directly (#2692) (be879a9d) address advisory test-hygiene findings from #2671 + #2672 (#2691) (1e921566) Fixed reorder realpathSync before manifestName, validate CODEX_HOME absolute, use realPath for asset path (#2678) (51a97242) address advisory findings from 2026-09-29 pr-triage (#2684) (9c9355af) Fixed address advisory test-quality findings from Windows-compat PR batch (#2677) (0ce311df) lift textContainsQuestion to module scope, tighten regex, improve tests (#2676) (13c357e4) tighten comment precision, add prefix-boundary test cases, fix unresolvable @link (#2680) (826d881d) harden pack check with jq and clarify postinstall docs (#2681) (5009c6e7) extract clusterHits to cluster.ts; tighten detector test; fix doc order (#2682) (72698c27) sanitize FTS5 queries with hyphens/colons before retrying (#2674) (448d3722) count foreground subagents in health rail N/M subs (#2685) (c0b47588) document latch/ask invariant, add selectBaseSchemas tests, annotate dead ternary (#2683) (57c7f6ae) Fixed add avail=1 degenerate-terminal unit test for band reserve clamp (#2671) (e5128b7d) sync message description, add test comment, clarify mock comment (#2675) (97fb0ffa) Changed remove redundant subagent-status overlay slot (#2661) (3732b866) Fixed stop clipping failed-tool error lines to 20 columns (#2667) (6a0681dd) add updated and missing-dir stdout assertions to single-plugin update tests (#2672) (469f98bb) add multi-byte elision test, explicit utf8 arg, fix JSDoc phrase (#2670) (b1447315) epoch guard, over-cap fallback test, and clarifying comments (#2652) (e8a33963) memoize daemonDefaultCwd, improve fallback warning, add EACCES test (#2655) (f9324b9a) redact err.message, guard ambient credential on custom baseUrl, add missing tests (#2659) (2cb16e2e) symlink guard, GlobAbortedError message, foldsOverlap predicate, hardlink test (#2658) (40a2f0ae) Fixed apply contentMargin() padding in appendLinesAtCursor (#2660) (3b9b1c4b) stabilize tests that flake under local load (#2650) (2a0a457c) tighten DATE_TEMPLATE, type label as union, expand boundary tests (#2654) (b5dada27) print single-plugin update outcome to stdout (#2649) (600efab1) fix bytes/chars mismatch, extract TurndownLike, tighten MIME cap (#2651) (83df6550) fix AFK_SUBAGENT_LOG parenthesis, stale shell-escape doc, raw-input trailing blank (#2657) (3fe4fb8a) guard queueMicrotask push against post-dispose settled events (#2656) (f3ebbdad) address advisory findings from RetryLayer swapped detection review (#2653) (971e9908) Fixed populate transcript_path in hook payloads from REPL transcript (#2647) (39e88574) reserve viewport rows for the committed band under content-hug (#2648) (e8afd50b) Fixed fix --yes --force prompt bug and add measured-refusal handling (#2645) (1e695814) Fixed fix JSON credential source label, tier order, and xAI auth branch (#2634) (2aebb10d) track client-built token in RetryLayer to fix swapped detection (#2636) (141ed326) Fixed openai-compatible has no first-byte or stream-stall timeout (also affects xAI and local runners) (#2431) (5fff9fa7) strip truncated annotation fragments before re-appending (#2635) (63cfee41) resolve confirmSpec promise before closing readline (#2633) (128284a1) Fixed discover installed Claude plugins and native Codex plugins (#2524) (1336213e) Fixed render Markdown in send_telegram messages (#2521) (db2dc20e) default daemon session cwd to daemon-state-dir, not process.cwd() (#2613) (f3a7baff) Changed make Windows a required test leg (closes #703) (#2630) (64532d99) order-preserving parallel readdir in glob walker (#2614) (cbf614ec) Fixed give oauthRefresher and port-file-lifecycle startDaemon calls an isolated telemetryPath (#2616) (25067360) Changed add ratcheted POSIX-assumption guard enforced in pnpm test (#2626) (0487ad6e) replace hardcoded /tmp with os.tmpdir() (#2618) (d9784900) Fixed bash credential floor failed open on Windows (#2625) (138b7636) unconfined sessions no longer denied with 'write roots []' (#2624) (abbff067) L7+L8 postinstall import and three misc Windows test failures (#703) (#2623) (493d044e) use resolveShell() in shell-task instead of hardcoded /bin/sh (#2622) (1b57dc2b) close provider SQLite handles before test tmpdir removal (#2621) (30867b8d) fix Windows path separator and 8.3 short-name bugs in sandbox containment (#703) (#2620) (e6c8d532) fix POSIX path literals in util/tool tests and glob pattern separator bug (#2619) (6e2301ad) Changed fix POSIX path literals in daemon tests for Windows compat (#2617) (b0f1515f) Fixed reset denylist cache and use vi.stubEnv in symlink test block (#2615) (44477480) wait (bounded) for killed ripgrep to exit before resolving (#2631) (c9aaf2e1) Fixed askedBeforeActing now detects prose questions after read-only tools (#2606) (adf452be) wire --no-baseline-sample into the afk whatif CLI command (#2608) (607306b6) preserve ask_question in whatif episodes so asking behavior is measurable (#2612) (24a94ce8) keep POSIX semantics for /-rooted scan candidates on win32 (#2605) (887c0aed) Fixed session.init reports session cwd instead of process.cwd() (#2611) (d1d68320) include prediction text in refused.json (#2607) (6b6329dd) Changed Merge pull request #2603 from griffinwork40/afk/whatif-slash-force (cf640033) Merge pull request #2483 from griffinwork40/afk/issue-2402-b545 (6aad35f4) Merge pull request #2532 from griffinwork40/afk/iso-agent-tool-3-fgt9ns (11983933) Merge branch 'main' into afk/issue-2402-b545 (a8543b48) Fixed forward --force from the /whatif REPL slash command (6df2ecf3) extract describeIgnoredRefusal helper; add ignored meta fields to teardown (a5dc7415) drop unfounded ._build/ pattern; pass ignored detail to isolation debug log (5f213188) classify SwiftPM .build/ as rebuildable and name the real path in ignored-local-state lock reasons (218a8e0f) probe grounding buffer cap, async git, warning on unexpected failure, grounding clause hygiene, all-dropped test (9fdf32bc) Added local, prose-free record of deferred "pre-existing" defects (89cd5eb3) Changed Merge pull request #2589 from griffinwork40/afk/preexisting-ledger (b68b6e53) Merge pull request #2588 from griffinwork40/afk/bash-scan-sink-exempt (17797dfc) Merge pull request #2587 from griffinwork40/afk/iso-agent-tool-4-u026vb (e2546a82) Merge pull request #2570 from griffinwork40/afk/iso-agent-tool-5-hdypjv (2f095fd4) Fixed address Codex review (sidecar-less surfaces, ambiguous loci, deferred size category) (c610875e) stop path-escape advisory firing on /dev/null and /tmp (509d7e57) shut down lazily-launched browser after afk chat completes (89539544) address console-bridge advisory findings from #2517 review (34ecda0f) Added add overload pause tier to openai-compatible provider (70a30f0d) Changed Merge pull request #2569 from griffinwork40/afk/iso-agent-tool-4-xon4bj (b24066b6) Merge pull request #2574 from griffinwork40/afk/iso-agent-tool-4-mh9o62 (262fa048) Merge remote-tracking branch 'origin/main' into afk/fix-2574-conflict (f43e7208) Merge origin/main into afk/iso-agent-tool-4-mh9o62 (#2574) (785a9ed3) merge origin/main + apply review findings (#2574) (6039e638) Fixed pin SHARED_CONTEXT_DIRECTIVE in ordering test and tighten separator count (9136739b) Changed Merge pull request #2584 from griffinwork40/afk/iso-agent-tool-3-ez4uwm (55b1611e) Merge pull request #2583 from griffinwork40/afk/drop-dist-postinstall (b6969ee5) Merge pull request #2582 from griffinwork40/afk/glob-rg-2543 (bcb9d260) Merge pull request #2581 from griffinwork40/afk/iso-agent-tool-3-k7xlsp (387dca76) stop copying postinstall into dist/ (0201388b) stop per-entry sync stat probes in the read-denylist check (#2543) (e4183e66) Fixed elide data: URI payloads in web_scrape extracted markdown (ba6e5d07) retire AFK_CAPTURE_SUBAGENT_OUTPUT and AFK_CAPTURE_SUBAGENT_PROMPTS (8a0bbac2) Added add redundancy preflight check to /whatif (c45dfd4e) Changed Merge pull request #2571 from griffinwork40/afk/iso-agent-tool-5-hvsx44 (42ea0bc3) Merge pull request #2523 from 0x7067/fix/pnpm-11-install (5422b42d) Fixed fix over-stemming, heading false-match, progress excerpt, and weak tests (cc91d375) Changed Merge pull request #2572 from griffinwork40/afk/iso-agent-tool-2-86ybes (9441ccc7) Merge pull request #2575 from griffinwork40/afk/iso-agent-tool-3-qdnucb (706c42af) decompose openai-compatible/query.ts under the 350-line ceiling (e1589a52) Fixed bound tool-lane preview formatting so huge tool results cannot starve the REPL (#2578) (247a06f6) make query.ts mutable fields private with live getters (81261a07) fd leak, tie-break parity, typeof guard (9a51b6aa) async non-blocking tool-result lookup for web route (b94fad6e) Changed Merge pull request #2573 from griffinwork40/afk/iso-agent-tool-2-xnqdzl (4fb3854c) Fixed advisory findings from 2026-09-29 pr-triage review (fa3647e1) Changed Merge pull request #2544 from griffinwork40/afk/iso-agent-tool-15-x0ud5c (7d8775f1) Merge pull request #2537 from griffinwork40/afk/iso-agent-tool-6-2xmiio (6542bb2b) Merge pull request #2547 from griffinwork40/afk/whatif-2478-consolidate (35f55f43) merge remote afk/iso-agent-tool-6-2xmiio (already-resolved conflict) (e139b662) resolve conflict with origin/main in src/whatif/run.ts (188bd348) merge origin/main into afk/iso-agent-tool-6-2xmiio (54974335) Merge remote-tracking branch 'origin/main' into afk/fix-2547-conflict (d9346ac9) Merge branch 'main' into afk/iso-agent-tool-15-x0ud5c (1d6b44a8) Merge branch 'main' into afk/iso-agent-tool-6-2xmiio (1fac705f) Merge branch 'main' into afk/whatif-2478-consolidate (eba47b60) Fixed unref deferred exit timers and use fake timers in crash-handler tests (95d325db) record kept sandbox roots in /sandboxes.json (cb19fa3a) defer crash-notification exit and guard against duplicate handler registration (def2b0ad) address advisory findings from #2518 and #2512 (whatif) (adbd876b) Changed Merge pull request #2545 from griffinwork40/afk/iso-agent-tool-13-6nh80t (a4acbbb7) Merge pull request #2538 from griffinwork40/afk/iso-agent-tool-7-aol66x (3ac45ad5) Merge branch 'main' into afk/iso-agent-tool-13-6nh80t (fb3ea471) Merge branch 'main' into afk/iso-agent-tool-7-aol66x (f6f77b22) Fixed log stale-source overwrites in bg-injection; defer push body formatting (efffc209) address advisory findings from overlap guard review (08d50bc1) Added yield-to-user contract; wait_for ends early when the user types (174bedd4) Changed Merge pull request #2540 from griffinwork40/afk/iso-agent-tool-12-oia21r (fb0fc39f) Merge pull request #2541 from griffinwork40/afk/tool-user-yield (a9bc7668) Merge branch 'main' into afk/tool-user-yield (4837051e) Merge branch 'main' into afk/iso-agent-tool-12-oia21r (a98bc831) Fixed image-bearing queued messages also wake a yielding tool (aa516af0) advance turn index only after a turn passes its gate, add ordinal-list and anaphora test coverage, scope corpusExclusions JSDoc (850d9a32) Changed Merge pull request #2546 from griffinwork40/afk/iso-agent-tool-11-sd0rtt (85a9dcd4) Merge branch 'main' into afk/iso-agent-tool-11-sd0rtt (9d92842c) Fixed address advisory findings from PR #2385 review (#2539) (6d476bf2) document regex matcher alias asymmetry in hook config docs (#2533) (80694d78) replace non-null assertions with explicit guards, drop redundant cast, move test hooks inside describe (#2534) (9a73762d) add --probes/--max-predictions to flags, Set-based dedupe, Map-based syntheticPerArm (#2536) (01fd7342) advisory findings from journal provenance adapters review (61008718) Changed Merge pull request #2566 from griffinwork40/afk/pnpm-11-migration (0446aec3) Merge pull request #2548 from griffinwork40/afk/iso-agent-tool-16-sw8jmm (deeea47a) raise Node floor to 22.13 to match pnpm 11 (4066f2f0) migrate to pnpm 11 (531c8031) Fixed address advisory findings from #2494 review (9ba5a742) Changed Merge pull request #2549 from griffinwork40/afk/iso-agent-tool-20-qclu1t (966ca8a7) Fixed improve thinking-chunk exclusion test coverage (fccdf961) Changed Merge pull request #2550 from griffinwork40/afk/iso-agent-tool-17-7rv2wh (8dcf3b67) Merge pull request #2555 from griffinwork40/afk/iso-agent-tool-24-p6atnz (9a7d8d23) Merge pull request #2552 from griffinwork40/afk/iso-agent-tool-18-jtnfy4 (e1babded) Merge pull request #2558 from griffinwork40/afk/iso-agent-tool-25-ya41kq (32e8a39c) Merge pull request #2564 from griffinwork40/afk/iso-agent-tool-27-nx7lh8 (77a0057d) Fixed address advisory findings from /pr-triage 2026-09-27 (693ced57) advisory findings from #2507 — turn budgets across retry-tier replays (7f7360b5) document above/below contract, defensive rail sets, and add missing tests (42bac34e) advisory findings from #2476 (MDE preflight and gate) (7e2372d9) betaSample degenerate guard + ICC clamp comment (9d607d24) Changed Merge pull request #2556 from griffinwork40/afk/iso-agent-tool-21-b7yd2v (165718b3) Merge pull request #2559 from griffinwork40/afk/iso-agent-tool-26-3jc9h1 (08257bc5) Merge pull request #2553 from griffinwork40/afk/iso-agent-tool-22-0mzqmg (94ffb408) Merge pull request #2551 from griffinwork40/afk/iso-agent-tool-19-3gz36h (b78b5625) Merge pull request #2557 from griffinwork40/afk/iso-agent-tool-23-7kkz12 (85a9d461) Fixed address advisory review findings from #2469 reauth fix (19a0346f) advisory findings from #2370 — preview budget, type narrowing, Telegram spoofing guard (5450732e) advisory findings from #2438 — tool_calls cast removal, interleaved repair order, fast path, type tightening (4cb2a525) plan-text-tracker advisory findings — comments, zero-width strip, test (f00e617c) use CROSS_CHECK_MIN_* constants, drop redundant guard, strengthen test (64119b14) Changed Merge pull request #2510 from griffinwork40/afk/outcome-journal-fallback (ea54deff) Merge remote-tracking branch 'origin/main' into afk/pr-2510-rebaseline (f50f078e) Merge remote-tracking branch 'origin/main' into afk/pr2510-push (8c711f8f) Fixed address review feedback on outcome journal fallback (f7703b47) fall back to the session journal when the sidecar is absent (05929cf6) Changed Merge pull request #2554 from griffinwork40/afk/fix-query-filesize-ratchet (84be5439) Fixed extract compact summarize wiring to restore the filesize ratchet (b5aba032) Changed Merge pull request #2529 from griffinwork40/afk/iso-agent-tool-2-fzg8lh (19a7b263) Fixed raise undici floor to ^7.27.1; add Node 26 CI leg (issue #2525) (#2535) (edb8ed42) move JEV_DISREGARD_NOTE to leading grading-instructions preamble (#2531) (9f56ada4) correct postinstall docs — Linux Telegram notice, bot.pid wording, bold emphasis (#2527) (ed8218c8) pin geometryStale+anchorRow invariant; add suspended to makeHost defaults (#2530) (aaa8c90a) Added add shared-context directive for interactive surfaces (f64ea156) Changed Merge pull request #2522 from griffinwork40/afk/shared-context-directive (225534b6) Added AFK_COMPACT_MODEL works across providers (7aaf663a) Changed Merge pull request #2517 from griffinwork40/afk/diagnose-error-wrapping (a1ebe921) Merge pull request #2451 from griffinwork40/afk/issue-2449-plr9 (d881b7b3) Merge pull request #2474 from griffinwork40/afk/compact-model-cross-provider (b5afc0e9) drop stale personal claude-jev path from fixture comment (36a9886a) Merge remote-tracking branch 'origin/main' into afk/pr2474-fix (726e9e2d) Fixed route console.warn/error through the compositor while armed (5575382e) reject still-expired xAI OAuth token in compaction (89531f3e) address review feedback (c8ba85a5) scope privacy warns per-instance, fix DOMException abort, normalize xai-oauth family (617b34f0) stop persisting raw first prompts in the outcome store (d6bc5738) Changed Merge pull request #2512 from griffinwork40/afk/whatif-repl-throttle-pdisplay (b99155d1) Fixed render tiny sign-flip p-value as <0.001 instead of 0.000 (5e985d2d) REPL progress throttle shows every preflight milestone line (b164eb80) Added measure baseline headroom with a small baseline-only sample (#2511) (15516608) Changed Merge pull request #2518 from griffinwork40/afk/whatif-baseline-sample (144d578c) Fixed baseline sample cost estimate includes its cold-cache start (92b9e8ed) a refused baseline sample writes refused.json with its evidence and spend (13cebc97) baseline sample gates on the full run's MDE and is not bypassed by --force (9fdd170e) Fixed show the real Anthropic credential source in afk status (#2458) (38046fab) Fixed record --ref on update when the checkout is already at it (#2457) (663e1f56) Fixed load plugins nested under a marketplace root plugin (#2456) (8b57cb81) Added persist doneUnverified in schedule telemetry (1eabf0ea) Changed Merge pull request #2322 from griffinwork40/afk/iso-agent-tool-4-foq9u1 (fbd08d2f) merge main; drop scheduler.ts filesize grandfather (fits at 350 after #2320) (2348c891) Merge remote-tracking branch 'origin/main' into afk/pr2322-rebase-main (b92756e7) Merge remote-tracking branch 'origin/main' into afk/pr2322-fix (6eaefd5a) Fixed address review feedback — JSDoc, record assertion, baseline (1fb0a6bb) Changed Merge pull request #2320 from griffinwork40/afk/iso-agent-tool-7-p3r1o7 (653858b5) Fixed use real-length sk- token in redaction test (7fdc7913) redact secrets in makeSessionStartSkipRecord; add test; merge main; add JSDoc notes (9383e9f5) add per-task in-flight overlap guard to CronScheduler (391861a2) Added derive session facets from the message journal (27e9d8cf) Changed Merge pull request #2438 from griffinwork40/afk/issue-2417-4d60 (3b625eab) Merge pull request #2496 from griffinwork40/afk/issue-2412-dok6 (16ea924b) Merge pull request #2506 from griffinwork40/afk/issue-2461-q7r3 (0f7d533a) Merge pull request #2505 from griffinwork40/afk/whatif-headroom-2504 (6c106678) fix postinstall docs — platform split, silent-skip wording, hook duties, isGlobalInstall, marker file (#2280) (d4c11229) restore #2412 regression tests dropped by prior fix commit (51eeed80) remove pr-body.md (76677951) remove pr-body.md (leftover) (ba4e181c) Fixed address review feedback on repair-orphan-tool-calls (e49a0d8f) address review feedback (d4bd47fd) extract aggregateToolEvents, clean journal-adapter, unify dedup (de4f8c96) strip leading newlines from append change.text; add content-ops tests (bada0594) keep journal commit detection and home isolation (3a851063) headroom warning also prints under --force; rates render as % (8b554574) probe headroom check (#2504) (a3a8de71) append operator inserts an extra blank line (2b04e7fd) openai-compatible never repairs orphaned tool calls before sending history (643e9be6) Changed Merge pull request #2497 from griffinwork40/afk/fix-hidden-lines-spine (90843dcf) Fixed keep turn budgets across retry-tier replays; report hard-timeout partials (#2507) (32513ed5) add crash notification handlers to standalone telegram bot (#2311) (e3f01b70) hidden-lines gutter follows the active glyph set (8bc30f47) keep tree spine intact on "N earlier lines hidden" row (9c7d3c97) Added support Claude Sonnet 5.5 (claude-sonnet-5-5) (#2495) (774930c6) Added paired per-probe sign-flip analysis (#2477 step 3) (#2498) (2a9d4503) Changed Merge pull request #2494 from griffinwork40/afk/iso-compose-fix-2411-2-ryvk37 (75c9dcb5) Merge pull request #2493 from griffinwork40/afk/iso-compose-judge-grades-1-gez9da (e2340f0b) Merge pull request #2490 from griffinwork40/afk/issue-2479-q3x8 (0cb54a34) Merge pull request #2492 from griffinwork40/afk/iso-compose-fix-2489-3-ewvk4x (717dae9f) report failed episodes per arm and flag arm-imbalance (#2411) (09bf99b8) persist per-output judge grades to grades.jsonl (#2491) (0945fafc) Fixed correct estimateVerifyCost 1.92x overestimate (#2489) (78317b05) simulate calibration harness ICC presets and endpoint base rates correctly (633f3ac8) Added --probes N, probe dedupe, predictions cap, probes before replay (#2477 step 1) (c0326ab1) provenance-carrying adapters keep provider switches lossless (#2464) (693337c8) Changed Merge pull request #2463 from 0x7067/docs/plugin-hook-contract (8e5c7f28) Merge pull request #2482 from griffinwork40/afk/whatif-probes-2477 (59663207) Merge pull request #2468 from griffinwork40/afk/journal-provenance (8e25b580) Merge pull request #2469 from griffinwork40/afk/20260928-131257-4d5c6b (07bad547) record live A→B→A signature result (#2464) (0aec3759) bring the command-hook contract up to date (770d9de9) Fixed subagents ignore /reauth account switch (stale boot-token cache) (019efea1) Added minimum-detectable-effect preflight, gate, and report limit (#2410) (3c9e04e3) per-prediction judge agreement downgrades verdicts when judges disagree (#2413) (64dd1196) Changed Merge pull request #2476 from griffinwork40/afk/iso-compose-mde-2-plh7j1 (c7aeada0) Merge pull request #2475 from griffinwork40/afk/iso-compose-crosscheck-3-2azvpb (7493ff53) remove stray commit-message files (ae01c313) Merge remote-tracking branch 'origin/afk/iso-compose-stats-1-e7z5zf' into afk/iso-compose-mde-2-plh7j1 (134ea19b) Fixed correct power convention and use per-prediction probe count (d5b0c8bd) Changed Merge pull request #2473 from griffinwork40/afk/iso-compose-stats-1-e7z5zf (292422fe) remove stray commit-message files (d2f20703) extend calibration harness — Beta latent, tau dimension, updated thresholds (e500f913) Fixed per-episode analysis and real equivalence test for verdicts (#2404, #2405) (16345281) Changed Merge pull request #2467 from griffinwork40/afk/iso-agent-tool-1-aafzkj (3a3e203e) Merge pull request #2465 from griffinwork40/afk/iso-compose-harness-1-oxi4or (43cbeab3) calibration harness: add ICC dimension, regenerate docs (beb2e90c) model-free calibration harness for verify verdicts (#2404, #2405) (5ca9806e) Fixed isolate arm sandboxes so episodes cannot reach the other arm (#2466) (05b263ac) Added per-session message journal (full tool results, resume/fork source) (#2452) (416a11d1) Changed Merge pull request #2400 from griffinwork40/afk/issue-2382-suspend-commit (2573e900) drop agent report file from repo root (d743a658) add 2400-fixes-report.md with per-finding evidence and gate results (6844dfee) extract processChunk + helpers to suspend-observer.process.ts (funcsize gate) (1c327415) restore strict oracles + add counted-handoff tests (3675208d) Merge remote-tracking branch 'origin/main' into afk/issue-2382-suspend-commit (dff035d7) Fixed F1/F2/F3/F6 re-review findings for disarm-while-suspended owner-wrote path (5f15ef41) B1 CSI tracking, L1 idempotent remove, L2 resetState, L3 live dims, B2 pending archive (346d2d21) remove debugLog from disarm (not in LifecycleHost interface) (72704a52) counted-handoff suspend/resume + prior-band archive fix (69fc5465) settle+queue design for suspend-commit (issue #2382, PR #2390) (a105362d) Changed Merge pull request #2448 from griffinwork40/afk/issue-2445-escape-sanitize (48807429) Fixed address PR #2448 review findings (F1/F2/F3/F5) (0a026366) strip escape sequences from task-view header and error events (#2445) (11137394) Fixed ground synthetic probes in real repo paths (#2407) (#2430) (fb3bea51) Added capture resultTail on verification events; parse pass/fail from tail (e0d90c2a) Changed intercepted actions are scored as 'did not happen', so unobservable predictions show as refuted (#2436) (3f6bd6cb) Merge pull request #2437 from griffinwork40/afk/verified-outcome-capture (c433b43c) Merge remote-tracking branch 'origin/main' into afk/sync-capture (fe274377) Added M2 nightly delayed-relabel job (c1b7350c) Changed Merge pull request #2439 from griffinwork40/afk/verified-outcome-relabel (13a1da72) Merge remote-tracking branch 'origin/main' into afk/sync-relabel (2e27e6f5) Merge remote-tracking branch 'origin/afk/verified-outcome-m2' into afk/relabel-conflict-fix (b9b52919) Fixed relabel job caps provisional records, not the directory scan (726e69b3) Added M2 part 2 — session-end hook, child attribution, closure LF, cross_session_reask (762b7fb6) outcome store, /good and /bad feedback, get_facet join (5d3391a1) Changed episodes are not blind; the agent can detect the experiment and read which change was applied (#2447) (ebc4ac4f) Merge pull request #2441 from griffinwork40/afk/verified-outcome-m2 (dec21498) Merge remote-tracking branch 'origin/main' into afk/sync-m2 (1da2fef8) Merge remote-tracking branch 'origin/main' into afk/sync-m2 (a9cb26ad) Added events.jsonl reader extends backfill to 16k older sessions (4abb48dd) Changed Merge pull request #2440 from griffinwork40/afk/verified-outcome-history (988faf4b) Merge pull request #2393 from griffinwork40/afk/taskview-alt-screen (4e9b388f) Merge remote-tracking branch 'origin/main' into afk/sync-history (84be5da0) Merge remote-tracking branch 'origin/main' into afk/taskview-alt-screen (7e53d264) Fixed exclude whatif sessions and context-dependent follow-ups from replay corpus (#2435) (3c3a92a9) F1/F2/F3 review findings (session 5) (de82082f) guarantee alt-screen teardown on SIGINT and all process.exit paths (#2393) (946703cb) mid-turn task view uses the alternate screen (9ef02e46) Added M0 backfill — verified_outcome labeling functions and distribution report (1aec6259) Changed Merge pull request #2429 from griffinwork40/afk/verified-outcome-m0 (cd192e9c) Fixed M0 precision fixes; exit check now honestly FAILS (887b194d) Changed hook-injected context differs between arms (path- and recency-sensitive hooks confound deltas) (#2434) (9fbe8314) Fixed score predictions on their relevant episodes (#2403) (#2427) (b9a5cc96) Fixed gate report headline on significance, scale adverb, name total predictions (#2433) (4ff87436) Changed Merge pull request #2432 from griffinwork40/afk/issue-2428-q8w3 (e068f969) Fixed address advisory findings from #2213 — plugin hook registration (#2337) (56081762) Changed Merge pull request #2380 from griffinwork40/afk/issue-2364-opk9 (f6ec52e4) Merge pull request #2362 from griffinwork40/afk/debug-advocate-output (210910d7) Merge pull request #2354 from griffinwork40/afk/oai-dispatcher-sessionid (836507df) Merge branch 'main' into afk/oai-dispatcher-sessionid (c019a80d) Fixed prefer context.sessionId over registration-time id in command hooks (#2392) (12eaee43) dispose() marks buffered jobs delivered; clarify truncateBytes JSDoc (f355f975) trim query() invariant comment to pass funcsize ratchet (65d9999b) clear resetArmed in stream.retry branch of PlanTextTracker (9c20a166) deliver background subagent results to chat and next turn (68c9a1d0) refuse exit_plan_mode when the plan was never written as visible text (e3fb66bc) pass the resolved session id to the tool dispatcher (d4692df5) Changed Merge pull request #2356 from griffinwork40/afk/issue-2349-q8x3 (919975c8) fix stale comments and tighten tests from #2324–#2333 triage batch (d237819c) Fixed regenerate env-registry docs after AFK_WHATIF_ALLOW_MCP description update (9c1aa0b1) Changed Merge pull request #2384 from griffinwork40/afk/issue-2369-correction (4965ae74) Fixed correct overlayTallEnoughToStrand analysis after adversarial review (d64cce8c) Changed Merge pull request #2390 from griffinwork40/afk/issue-2382-suspend-commit (3058fe66) Merge pull request #2391 from griffinwork40/afk/issue-2389-q7t3 (4ae9896f) pin accumulateStreamJson's deliberate exclusion of thinking chunks (a0da2998) Fixed two follow-up defects from #2382 suspend-commit review (e0c69603) treat a suspended frame as top-unknown so suspended commits survive (#2382) (3ade1cba) Added gate major versions behind a manual dispatch; auto-update never crosses a major (2b54bd1c) Changed Merge pull request #2385 from griffinwork40/afk/major-release-gate (bb9e16c3) Merge pull request #2370 from griffinwork40/afk/issue-2363-l7jj (a26af363) show the full high-risk command in approval prompts (head+tail preview, no 256-char form cap) (554513af) Added A/B framework prompt edits and capture inter-tool narration (c7614ff8) Changed Merge pull request #2374 from griffinwork40/afk/whatif-framework-prompt (0bd4e4be) Fixed address review feedback (36ba1f07) Fixed wire AFK risk gate for daemon ticks and afk chat (#2315) (9ee45429) Fixed flag empty-output success and mark truncated response excerpt (#2383) (69b2f986) Added light narration on interactive surfaces (#2375) (a497294f) Changed compositor-level regression for tall-overlay strand gap (#2369) (#2381) (52d00e30) Added Claude Code matcher and timeout compatibility (#2377) (#2379) (7ec0269f) Fixed include tool_input in PostToolUse and PostToolUseFailure command-hook payloads (#2378) (506125c0) Fixed surface active shell in tool description; PowerShell syntax guidance on Windows fallback (#2346) (b13ab6b4) Added content-hug+banner — first reply flows under banner (#2229) (27342ddb) Changed Merge pull request #2368 from griffinwork40/afk/issue-2229-hug-banner (9c1748f0) assert the kept banner is painted exactly once (#2229) (f39e4133) content-hug boot-warning scenario expects warnings in the viewport (#2229) (b86c788f) note preCommitBannerSync's caller precondition (0627abe7) Merge remote-tracking branch 'origin/main' into afk/issue-2229-hug-banner (c738fe16) Fixed scope the content-hug strand exclusion to frames with slack (#2229) (45b775de) Changed advisory findings from #2333 — many-image guard hardening (#2352) (3fdaf63f) Fixed honour pinnedRef pin when repo has semver tags (#2358) (#2360) (922f0e3d) Changed Merge pull request #2359 from griffinwork40/afk/issue-1619-diff-width (639a84ec) Fixed resolve remote-only branch names before git checkout --detach (#2361) (645af141) size the diff preview box from the tool-lane row budget (#1619) (0fd9d2bd) Added dev/test geometry consistency guard at compositor entry points (1361e151) Changed Merge pull request #2336 from griffinwork40/afk/tui-geometry-guard (63cd3db8) remove no-op identity spreads and clarify fork-preamble docs (#2321) (56fc1f62) drop dead SETTLED constant and unused imports in OSC test (#2339) (ba1f7265) bump next from 16.3.5 to 16.3.6 in /website (#2343) (d678c2aa) bump @types/node from 26.6.1 to 26.6.2 in /website (#2342) (98f1124e) seed #2290 content-hug band at a reachable bottom row (e48e0e40) Merge remote-tracking branch 'origin/main' into afk/tui-geometry-guard (82f92b9c) TUI research brief and architecture map (f0611d5c) Fixed geometry guard reports instead of throwing under AFK_DEBUG_COMPOSITOR (8b336c8e) Changed Merge pull request #2335 from griffinwork40/afk/issue-2239-ekdo (61bdc5a6) Fixed show child-failure badge on completed nested agent rows (cfb66840) Changed Merge pull request #2330 from griffinwork40/afk/iso-agent-tool-10-grctv3 (bcede334) Merge pull request #2328 from griffinwork40/afk/iso-agent-tool-6-dns1ai (a40d99ea) Merge pull request #2332 from griffinwork40/afk/issue-2249-m4k9 (8ada5643) consolidate shared makeResult/makeError helpers into tool-lane-render.fixtures.ts (#2323) (3737deb2) bump the fumadocs group in /website with 3 updates (#2341) (814ce249) extract emitDispatchedToolOutputs to fix funcsize gate (06049024) Fixed move builtin-cwd warning to cwd-validator to satisfy filesize gate (175323e4) prevent double SIGKILL timer and extra/unset bypass; document empty-changes behavior (f5514f6a) align update_schedule cwd schema, null-on-create, error messages (2bf7a94a) remove dead firstCompletedAt, widen timing margin (06ad6ec1) per-call durationMs for parallel tool batches (e9cd3280) advisory review findings — daemon per-task cwd (40cfa944) address advisory findings from #2274 whatif prediction engine (fbb710d9) Fixed tighten --allow-growth/--reason arg guards and fix bootstrap JSDoc (#2279) (f3ca1a61) child hot-write guard follow-ups from #2093 review (#2338) (8b92fc85) address #2245 advisory findings for session_id_assigned (#2340) (a2da7450) Changed Merge pull request #2333 from griffinwork40/afk/fix-many-image-2000px (0617e7b9) Merge pull request #2325 from griffinwork40/afk/iso-agent-tool-5-ykvy1a (b4a5609a) Merge pull request #2326 from griffinwork40/afk/iso-agent-tool-7-avd1is (63d84e43) Merge pull request #2327 from griffinwork40/afk/iso-agent-tool-9-brrvpd (af5b05ee) Merge pull request #2329 from griffinwork40/afk/iso-agent-tool-8-c25noy (6e505c75) Merge pull request #2324 from griffinwork40/afk/iso-agent-tool-3-2ouwtw (ad599bf1) cover web-ui-assets exclusion; merge redundant CI scan step (#2334) (afdbf17c) add content-hug guard test and update banner-path trigger comment (6df2a2d4) correct five doc/help strings that contradicted runtime behavior (3bcbc122) Fixed enforce 2000px many-image limit at request-build time (7f142a65) tighten fast-mode service_tier error latch, add catalog deps injection, trailing-slash normalisation, NoticeKind export, and staleness doc (688b9a99) widen C1 regex, fix truncate code-point safety, update docs/comments (2c3467eb) advisory nits from #2272/#2273 — unref guard, flatMap dead filter, stub type, export, shared helper, trailing blank, mid-file import (a9b34acf) Added organic smoke reveal, eased settle, reduced-motion gate (886bdec1) Changed Merge pull request #2284 from griffinwork40/afk/iso-agent-tool-1-6yudyk (22c6b0ae) Merge pull request #2293 from griffinwork40/afk/smoke-organic (1314992c) Merge pull request #2294 from griffinwork40/afk/iso-agent-tool-7-2cu3t7 (e006ab00) Merge pull request #2292 from griffinwork40/afk/iso-agent-tool-9-tztgv1 (700b9ca6) Fixed thread depth/maxDepth through skill-fork and compose/DAG paths (8361a778) advisory fixes for glob-absolute — metacharacter comment, separator normalization, typed test context, win32 testability (19cb41ea) fix false-green tracking test, assert rank stripped, clean up unused vars (4dc68625) Changed Merge pull request #2282 from griffinwork40/afk/iso-agent-tool-2-ooggj4 (4f18deaf) Merge pull request #2286 from griffinwork40/afk/iso-agent-tool-10-eqc3rn (702fd9b4) Merge pull request #2287 from griffinwork40/afk/iso-agent-tool-6-cnewvw (fbac52da) Merge pull request #2283 from griffinwork40/afk/iso-agent-tool-5-4hsys6 (0401dbae) Merge pull request #2285 from griffinwork40/afk/iso-agent-tool-8-pa8nhz (39a19e63) Merge pull request #2281 from griffinwork40/afk/iso-agent-tool-3-0lxtuh (4e7296fc) extract shared makeResult/makeTool into fixtures (aac2ef52) fix mutation count, reword pkgRoot comment, assert labels (ddb48d5d) fix hasBadge boundary checks and stale badge format in tool-lane tests (1a7ad085) fix subagent-attachment-propagation status; skip goal-feature-plan (7839637f) Fixed pin opus-5.5 alias, update env examples, clarify adaptive-thinking doc (32adcf35) reuse margin var and clip input viewport unconditionally (efa52756) Added afk whatif and /whatif, a prediction engine for agent context changes (ebd1e518) Changed Merge pull request #2274 from griffinwork40/afk/whatif (ba616c06) Merge origin/main into afk/whatif (bfcadd08) Added add errorHead to failed tool_call.completed events (#2264) (cd4d86a0) episode mode runtime plumbing for sandboxed what-if runs (ae7169c4) Changed Merge pull request #2273 from griffinwork40/afk/whatif-runtime (ff40270a) Merge origin/main into afk/whatif-runtime (92d23d30) Added /fast mode via service_tier "priority", incl. ChatGPT OAuth (#2270) (1195093f) per-task working directory for scheduled tasks (482c23a5) Changed Merge pull request #2272 from griffinwork40/afk/fix-chat-silent-exit (aa974e39) Merge pull request #2253 from griffinwork40/afk/iso-agent-tool-1-gxjpro (8a4d20dd) review follow-ups from #2226 (test assertion, resetState, doc, banner-path guard) (#2275) (5ae78ce2) Merge remote-tracking branch 'origin/main' into afk/pr2253-fix (f2764c70) Fixed send the OAuth billing system prefix so one-shot calls work on non-haiku models (5c624a5d) keep command-hook children ref'd until they settle so chat cannot exit silently (a9010276) validate cwd on daemon POST /tasks; reject empty cwd in web routes (19bffc3f) carry cwd through POST /tasks, TOCTOU guard, and validation fixes (36a78d94) Added optional MCP server health-check pre-flight (AFK_MCP_HEALTHCHECK) (2a89587f) activate fact access tracking (e54f371b) Changed Merge pull request #2218 from griffinwork40/afk/iso-agent-tool-2-dscfff (699c04ef) Merge pull request #2223 from griffinwork40/afk/iso-agent-tool-8-f7mzud (d133c58a) Merge pull request #2221 from griffinwork40/feat/1848-access-tracking-v3 (0c40a5fc) Merge pull request #2220 from griffinwork40/afk/iso-agent-tool-5-owts6x (ce1fb454) Merge pull request #2219 from griffinwork40/afk/iso-agent-tool-1-jkox3h (9ff29e66) correct index status summaries (a83c4e4a) harden AFK_SMOKE_TEXT scenarios (check for all smoke glyphs, restore env) (#2271) (4a2ad8b0) cover CLI-restart fallback in tests/ suite + guard spawnSync (#2244) (#2263) (b437cb72) document pnpm 10 postinstall skip behaviour and remedies (#2222) (0a4954e9) add trailing boundary to hasBadge regex in tool-lane batch-start test (#2257) (14743ece) exercise maybeRestartServices default pkgRoot on darwin (#2258) (2d0c96df) add docs/README.md index (85597f55) Fixed clip centered input viewport to prevent column-0 wrap (65f227e9) comment explicit blank-row commits at flushCompletedRoots sites + indent test (12a42e5e) Added tell forked children they are subagents; drop unused 'subagent' PromptSurface (#2255) (7ecc7819) AFK_SMOKE_TEXT visual hierarchy, machine-status UI fades in (#2254) (1a16ebad) point opus alias at claude-opus-5-5 (#2252) (c9c49148) Fixed put tool_result blocks first in persisted user turns (#2251) (c1f6dd04) Fixed prune .afk-worktrees and walk absolute patterns from their prefix (#2248) (507446a9) Changed tighten compact scrollback renderer tests (#2236) (#2243) (8bc8f826) Fixed re-join on-screen committed-band rows on widen (#2234) (526179cf) Added emit session_id_assigned event so traces are self-identifying (#2245) (f21a289a) Fixed scan OSC sequences past 254 bytes to their real terminator in smoke-reveal mask (#2250) (fd0c804d) Added AFK_SMOKE_TEXT, streamed prose condenses out of smoke (#2232) (d0da883d) Changed AFK.md and ci.yml comments contradict current gate state (funcsize, filesize, CLAUDE.md) (#2224) (1d5de9ba) Replace workspace A/B runner with fail-closed TypeScript orchestration (#2230) (cb0f9cd9) Added unblock target:fact writes from subagents (#2093) (418cda94) Changed add real-PTY scenarios for SIGWINCH mid-active-turn (#2225) (348edc85) stop a test from restarting the developer's real launchd services (#2233) (e1d123c8) Fixed erase displaced footer after banner scroll; center the user echo (#2231) (19963445) Added expose process-scoped hook registration to plugins (#2213) (3b4e3708) Changed extract maybeRestartServices and cover the isGlobalInstall call site (#2204) (7f4fdf18) Fixed content-hug placement — no blank gaps between output and prompt (#2226) (164170ed) Added bubble failure indicators to parent agent rows (#2171) (41f43ff7) Changed funcsize baseline can grow via 'sync after rebase' regenerations (#2215) (ce992f50) Changed add unit tests for compact scrollback renderer (#2203) (6e17c434) promote macOS test leg to required (#2216) (88e5320e) make the filesize gate blocking and fix the env.ts regression (#2214) (45dbc4c0) Fixed tighten hasBadge to ∥i/N pattern, fix stale comment, fix light-review id_prefix (#2202) (a56923c5) Fixed clean up non-blocking review findings from #2176 (#2201) (d1cecd53) isMain fails on URL-encoded install paths; use fileURLToPath; comment cleanups (#2205) (fac6d59c) Fixed spine-continuation separator between compose/skill sibling bands (#2196) (931e368a) Fixed add GPT-5.6 and GPT-6 model prices (#2200) (789a5a0f) only restart launchd services on global installs (#2195) (c91d81b1) Added split active vs. completed dimming for readable agent rows (dc2bf885) Changed add .afk/generated-images/ to ignore list (70a75347) Merge pull request #2172 from griffinwork40/afk/tui-contrast-split (6ef88a6f) sync funcsize baseline after rebase (681dace0) Fixed address review feedback (061847bc) Changed Merge pull request #2178 from griffinwork40/afk/iso-agent-tool-1-6jr39a (6f3fb823) add 4 missing DAG isolation edge-case tests (087d4762) Fixed restore strict assertions in 2 DAG isolation tests (8e183b1f) Added surface task responsibility labels on agent rows (#2173) (2e1c4830) add placeholder prevention SessionStart hook (Layer 1) (8fbb3008) Changed Merge pull request #2179 from griffinwork40/afk/iso-agent-tool-2-05vah6 (239cc28c) update stale hash pins after rebase on main (df3d2e57) sync baseline after rebase on main (createDefaultHookRegistry 240→250) (b993f072) promote funcsize gate to CI-blocking (fa94f211) Merge pull request #2192 from griffinwork40/afk/iso-agent-tool-1-bo5jkl (bd5898f2) Merge pull request #2189 from griffinwork40/afk/iso-agent-tool-3-2a5ujd (bfa99f3f) Fixed gracefully handle shallow-checkout diff failure in changedSince() (a2a30fa2) update SessionStart hook count assertion to 2 (placeholder-prevent built-in) (e1f1baab) cap blank gap above committed band on short terminals (#2182) (a3428c82) Changed Merge pull request #2190 from griffinwork40/afk/iso-agent-tool-2-c2aqyb (503cf42b) Merge pull request #2188 from griffinwork40/fix/image-generate-sessionid-wiring (9dfc9c80) Merge pull request #2187 from griffinwork40/afk/iso-agent-tool-1-thtbyl (2ada9857) Merge pull request #2186 from griffinwork40/afk/iso-agent-tool-2-hdzwj1 (52ef1aaf) Merge pull request #2185 from griffinwork40/afk/iso-agent-tool-5-1qs2bs (9b360bac) add 4 missing DAG isolation edge-case tests (#2183) (19fb251d) improve colorize test coverage (#2184) (a75de197) harden colorize regex patterns (068bbe21) Fixed remove setTimeout race conditions in lifecycle module (b062de37) thread resolved sessionId into tool dispatcher for fresh sessions (beeee004) gate compactScrollback on captureMode (f8c78b76) view_image non-blocking follow-ups from review (8f74c792) Fixed preserve spine root anchor on short-terminal overlay truncation (#2176) (b25115e5) Added collapse completed agent subtrees in scrollback (#2174) (0efa2c8a) Added add proposal/eval-case promotion workflow (0bcd564e) track human vs agent review coverage at merge time (a4dc600a) Changed Merge pull request #2105 from griffinwork40/refactor/2064-cast-removal (518d1441) Merge pull request #2101 from griffinwork40/afk/fix-of-fix-detector-2012 (dcf9fcc7) Merge pull request #2089 from griffinwork40/feat/1916-approve-promotion-workflow (2be8d9bf) Merge pull request #2150 from griffinwork40/afk/iso-issue-1941-8-qn5otw (e6c5fc48) remove type-assertion casts in AgentSession provider delegations (6e59e0a2) regenerate env-registry docs (USER, USERNAME added) (c4b2c09a) Fixed route USER/USERNAME through env registry; always validate --status (be50b56a) address review feedback — parsePrNumber, ExecFn import, SKILL.md body-append, hash pins (a59f82ff) windows production code gaps blocking test skips (fa467349) Added add view_image tool for inline local image inspection (#2169) (7ec3dd1a) Added visual redesign — depth dimming, spacing, centering (#2141) (fa30684a) Fixed make Google results clearly show this is docs (#2170) (c5c6dac0) Added add opt-in vision context for image_generate (1c6bb0fb) add system prompt instruction to prevent placeholder generation (bb278a77) Changed Merge pull request #2153 from griffinwork40/afk/iso-agent-tool-4-p7d75e (66db8f72) Merge pull request #2156 from griffinwork40/afk/iso-agent-tool-2-0sp802 (e8f8f8c3) Merge pull request #2159 from griffinwork40/afk/iso-agent-tool-1-9dym94 (3d8facb3) Merge pull request #2155 from griffinwork40/afk/iso-agent-tool-5-gghkjn (de537c9d) Merge pull request #2158 from griffinwork40/afk/iso-agent-tool-6-qt40zz (08f15829) Merge pull request #2163 from griffinwork40/afk/iso-agent-tool-2-zd7h0w (5aa5e36c) Merge pull request #2162 from griffinwork40/afk/iso-agent-tool-4-gonjmv (71753331) follow-up cleanup from recentActivity review (f09dfe38) add isolation test coverage for compose DAG executor (394c8b87) compose isolation minor follow-ups (88cff1ec) Fixed add writeRoots + isolation mutual exclusion guard to compose parser (d4d0ac7d) raise daemon shell executor timeout to 45min, surface timeout source (ea59c3d3) Added route ChatGPT subscription through Codex Responses endpoint (3f3a2911) add image_generate tool with gated opt-in safety (#1421) (33643935) Changed Merge pull request #2140 from griffinwork40/feat/image-generate (d69105a1) Fixed remove dag-subagent.isolation.test.ts (belongs to PR #2156, not this branch) (6c2b373a) update test expectations + categorizer for post-rebase tool count (75fc197b) address 4 blocking security/correctness findings from code review (8670fc00) parse response.output_item.done SSE event for ChatGPT backend (04681585) Added add get_background_job_health tool for parent-owned job inspection (e0e4044b) Changed Merge pull request #2139 from griffinwork40/afk/bg-job-health-snapshot (69689e26) Merge pull request #2135 from griffinwork40/afk/fix-orphan-tool-use-400 (37a00e72) Merge pull request #2138 from griffinwork40/afk/investigate-macos-bash-sigkill (63e0edcd) Fixed replace fixed 100ms reap wait with retry loop in SIGKILL process-group test (ccd4741e) add last-resort orphan tool_use repair before every messages.create (7d703eb9) Added add semantic coloring to bash tail previews (#2152) (cfff19a9) Changed Merge pull request #2151 from griffinwork40/perf/issue-2100-session-close-timeout (5f825cc6) add timeout guard to session.current.close() in teardown (e3e10723) Added add session yield rate tracking via facet enrichment (046ef91d) Changed Merge pull request #2113 from griffinwork40/afk/issue-2016-yield (64587f68) Merge pull request #2128 from griffinwork40/afk/iso-agent-tool-5-fc02dr (3d895ced) remove type-assertion casts in AgentSession provider delegations (aac92372) Fixed address review feedback — cwd threading, branch injection guard, patchYieldFields test, gh error distinction (18af1717) update AGENTS_STUB to match AgentInfo shape (13025ffa) Added surface recentActivity on background job snapshots for parent steering (#2134) (031e2151) enforce delegation budget in SubagentManager.forkSubagent (ff15f46f) Changed Merge pull request #2115 from griffinwork40/afk/issue-1899-budget (d1b0ef44) Merge pull request #2114 from griffinwork40/fix/resume-history-skip-guard (cfc971ce) Merge pull request #2112 from griffinwork40/afk/fix-resume-role-alternation (b4264dd3) Merge pull request #2130 from griffinwork40/afk/wake-up-consistency-issue (66c0e226) trigger CI run for PR #2130 (4ffb1d58) Fixed move onAwaitingInput after compositor setup; gate to turn-boundary readLine only (21618188) auto-wake REPL when background results settle mid-turn (878c1daa) guard against silent user-message skip in resumeHistoryToMessages (15d8b0c6) repair role-alternation violations in resumed/forked session history (0d24a7fd) Changed split cup-frame-renderer.ts (#2127) (73eaca36) Added add update_schedule tool for editing daemon schedules (54a46c5c) Changed Merge pull request #2132 from griffinwork40/afk/20260924-143115-1c8cba (a7b9a200) Fixed address review feedback — slug validation, mock update, handler count, toggleScheduleEnabled delegation (3be6498e) Changed Merge pull request #2133 from griffinwork40/afk/iso-agent-tool-3-1locyd (9837b072) Merge pull request #2131 from griffinwork40/afk/iso-agent-tool-4-7bm6ck (07bdf860) Merge pull request #2129 from griffinwork40/afk/iso-agent-tool-2-s07lrt (002d5fdc) split markdown-stream.ts into concern-based siblings (ed20a3b0) split terminal-compositor.lifecycle.ts into concern-based siblings (421657d7) split terminal-compositor.frame.ts into concern-based siblings (1503edb6) Added detect unresolved placeholders in agent output (300027a5) activate access tracking in memory fact archive (a11d9e5e) Changed Merge pull request #2123 from griffinwork40/afk/agent-placeholder-validation (7b972b9c) Merge pull request #2096 from griffinwork40/fix/1917-reclassify-web-request-card (75cd5cdb) use code-block register instead of lastAssistantText (bb0ea456) Merge branch 'main' into fix/1917-reclassify-web-request-card (3d087553) Fixed tighten screaming-snake prefix set to eliminate env-var false positives (a87d7d9d) reclassify tool-failure-web-request as environment connectivity (ecf22b7e) Added activate access tracking in memory fact archive (b8197def) per-node delegation budget tracking in compose DAG executor (63c68c26) Changed Merge pull request #2095 from griffinwork40/afk/issue-1924-fix (435beb47) Merge pull request #2088 from griffinwork40/feat/1896-per-node-delegation-budget (795f3955) Merge pull request #2087 from griffinwork40/chore/1820-mcp-failed-servers-warnings (f5d3a87e) surface MCP failedServers warnings on Telegram and web-server (75e72cb8) Fixed restore suspected-loop telemetry and add gate-shape tracing (411709aa) Changed Merge pull request #2121 from griffinwork40/afk/20260924-115004-572602 (4185f5a1) Merge remote-tracking branch 'origin/main' into afk/20260924-115004-572602 (8672193e) split runTurn god-function into concern modules (issue #2107) (7cf5e522) Fixed rename turn-handler.subagent-promotion to bg-promotion to satisfy boundary test (7ead56e8) Fixed make prefillInput delegation consistent with sibling functions (#2122) (7797f983) Changed extract thin-facade API methods to terminal-compositor.api.ts (#2119) (c093dd1e) Added add per-node worktree isolation to compose DAG executor (a2b82b11) Changed Merge pull request #2104 from griffinwork40/feat/1939-compose-worktree-isolation (6f32cb66) Fixed add 2s timeout guard to session.close() in REPL teardown (17c19ad7) Added add eval pipeline staleness guard (d9444d97) add fix-of-fix cross-reference detector at merge time (e2fd4522) Changed Merge pull request #2102 from griffinwork40/afk/2012-fix-of-fix-detector (eb36c4cd) Merge pull request #2103 from griffinwork40/afk/issue-2010-eval-staleness (a4fdea04) regenerate env-registry docs for AFK_EVAL_STALENESS_DAYS (2fdfeefb) Fixed handle URL-form currentPrNumber in self-reference guard + update ship pin (8bd777e2) Changed Merge pull request #2097 from griffinwork40/fix/issue-1940-unskip-detectpathgap (2c54ddc3) Merge pull request #2099 from griffinwork40/fix/quit-teardown-latency (26365d73) reduce /quit teardown latency from 10s+ to ~4s (71a4fcef) Fixed unskip detectPathGap test from .mjs import guard (d8704fa2) Added implement replay infrastructure for repeated-tool-use pattern (#2091) (d8883477) Changed Merge pull request #2085 from griffinwork40/afk/issue-1828-fix (7f76b367) Merge pull request #2084 from griffinwork40/afk/fix-1906-concurrency-test-boundary (6e16fbc0) Merge pull request #2082 from griffinwork40/afk/iso-agent-tool-2-2ozuic (8f86a699) Merge pull request #2081 from griffinwork40/afk/iso-agent-tool-1-u5s78k (09c98502) Merge pull request #2080 from griffinwork40/afk/iso-agent-tool-3-an5zuy (5cf8aca4) Merge pull request #2079 from griffinwork40/afk/iso-agent-tool-5-naicb7 (8e7f41d9) Merge pull request #2078 from griffinwork40/afk/iso-agent-tool-4-t2w52r (fada59e2) enforce test-only boundary for resetConcurrencyWarnings (66bbb350) update resumeHistoryToMessages JSDoc after pairing-guard removal (ccb17950) consolidate duplicate sha256Hex (ca52ed00) Fixed add commitInFlight/committing guards to banner-scroll block (12d90a2c) scope disabled-thinking rejection to Opus 5.5 only (ebee93fa) Opus 5.5 follow-up hygiene: comments, discoverability, golden tests (b8ecb67c) throw before first request when disabled thinking is unsupported (d2e94837) simplify partial_failure guard, update schema prose, add tests (538643c2) Added add new invariants and rejected patterns for compose node behavior (8e733565) Changed Merge pull request #2070 from griffinwork40/feat/2015-parallel-dispatch-ratio (816f1a29) resolve SPINE.md conflict with main (post #2071 merge) (e213fa3a) extract agent-type resolution to compose-agent-resolve.ts (e843aa7c) Merge branch 'main' into feat/2015-parallel-dispatch-ratio (e3f47c89) Fixed restore attachment resolution and [k/N] agentType suffix (26dbcfc5) reinforce invariant on attachment resolution in compose nodes (ad87e477) update invariant reinforcement dates for clarity (f71de171) Added wire structured content blocks in recordTurn (af455a5a) add parallel dispatch ratio metric to session facets (dc21f6c0) Changed Merge pull request #2071 from griffinwork40/afk/iso-agent-tool-1-wc6lpl (24d8dd5a) Fixed wire buildUserContentBlocks in production recordTurn path (76550d97) Added add branch prune command for stale remote worktree branches (0b6ad866) Changed Merge pull request #2069 from griffinwork40/feat/branch-prune-command (ebf2ade5) Merge pull request #2077 from griffinwork40/fix/opus-55-effort-alias (89ff5f3f) Quick Start with auth step, docs link, improved troubleshooting (#2061) (80ce5461) Fixed default Opus 5.5 to high effort, not max (cbbb5257) harden expected_hash format validation and add cross-tool test (aefa285f) Changed add maxItems constraint to attachments fields (#2067) (2a263a94) Fixed remove stale compose agent_type prohibition in fix-pr SKILL.md (#2072) (ec22fd9f) Added add Claude Opus 5.5 support (#2066) (11f756ec) Changed Update guideline on dash usage (32ddaeda) Fixed skip auth prompt when user is already authenticated (#2063) (40cbb530) Fixed harden expected_hash format validation and add cross-tool test (#2068) (7764c96a) Changed Merge pull request #2045 from griffinwork40/afk/iso-agent-tool-1-p7v1dt (b72541f3) Fixed rebase + resolve review feedback (2a39a108) Changed Merge pull request #2054 from griffinwork40/afk/fix-2039 (b0c4ba54) Fixed preserve existing MCP config permissions (ef50bf50) use standard 0o644 permissions for MCP config file writes (db182cd9) Changed Merge pull request #2056 from griffinwork40/afk/fix-2042 (3e78c881) Merge pull request #2057 from griffinwork40/refactor/interactive-lifecycle-1929 (fd990914) extract lifecycle phases into sibling modules (1abb96a3) Fixed update filesize baseline ratchets post-rebase (23ddb8ea) extend _reread_warning to partial_failure and document in schema (d45ce5df) Changed replace passthrough artifacts with real concern extraction (#2058) (db10731c) Changed extract shared options from chat/interactive commands (#2060) (0ae0dc32) Changed consolidate session builders into shared builder (#2059) (2f5102fd) Changed clarify hasValidToolUsePairing staging and fix misleading test comment (#2050) (97462ad4) add SDK sync comment to ALLOWED_CONTENT_BLOCK_TYPES (#2051) (d813e782) Fixed fix locked verdict color and acknowledge palette layer exception (#2055) (0fd874ea) Changed Merge pull request #2020 from griffinwork40/seo/docs-p1-fixes (20c0a8cb) Merge pull request #2022 from griffinwork40/afk/iso-fix-2007-1-bsuenv (c4f728f8) Fixed extend repairOrphanToolUses to scan all messages, not just tail (669f74b4) repair non-tail orphan tool_use blocks in resumed history (#2007) (dcbd8a49) P1 — structured data, OG image, cache headers, meta improvements (70d62b22) Changed Merge pull request #2031 from griffinwork40/afk/iso-agent-tool-1-p7gsfu (d3738222) isSubagentContext predicate + forwardAbortSignal utility (#1835) (0a60ae88) Changed Merge pull request #2038 from griffinwork40/afk/iso-agent-tool-1-ugktlk (d002fa0c) Merge pull request #2037 from griffinwork40/fix/issue-1915-worktree-error-msg (af18b393) Merge pull request #2034 from griffinwork40/fix/issue-2028-patch-apply-stale-context (4b45d97c) Merge pull request #2023 from griffinwork40/afk/iso-fix-1998-2-kjx7ob (f3db69c9) Merge pull request #2033 from griffinwork40/fix/issue-2005-tool-summary-fallback (378e4a0e) Merge remote-tracking branch 'origin/main' into afk/resolve-pr-2030 (b3ea6345) retrigger CI after test fix push (520091ab) Revert "fix(#1915): improve worktree tool error message for non-git cwd" (a1e86311) fix CI test failure and address review feedback (d1d675ea) add SKILLS (Gap D) to expected read-root Sets in worktree-readroot tests (ee0ab1ea) Fixed narrow hasValidToolUsePairing to search only nextUserBlocks (d7080fe4) improve worktree tool error message for non-git cwd (9a5b2ee7) warn agent to re-read files after patch_apply to prevent stale-context reverts (b0146ec9) always append tool summary to text field for fallback path (5251817f) improve worktree tool error message for non-git cwd (e79ef696) rename SubagentDAGNode.readRoots to pinnedReadRoots + grant ~/.afk/skills to confined forks (9aba3c29) resolve playwright chromium version mismatch and download timeout (#1998) (6a7cdb40) Changed Merge pull request #2032 from griffinwork40/afk/i-don-t-have (96d0d063) deduplicate CLI and slash command display formatters (#1836) (#2021) (f0f8c6bd) Fixed rename SubagentDAGNode.readRoots to pinnedReadRoots + grant ~/.afk/skills to confined forks (#2030) (80fe7dec) add expected_hash input gate to edit_file (#2028) (f030e2ed) Changed Merge pull request #2027 from griffinwork40/fix/issue-1839-provider-consolidation (f68f5ba8) Merge pull request #2029 from griffinwork40/afk/iso-fix-2003-4-m0hy42 (02fa79bc) Merge pull request #2025 from griffinwork40/fix/issue-2013-zero-observation-closure-reasons (5f4a1817) Merge pull request #2026 from griffinwork40/afk/iso-fix-2006-3-qnobvr (c918acb5) Merge pull request #2024 from griffinwork40/fix/telegram-session-lifecycle-1854 (2d41ba59) consolidate shared tracing-fetch, retry predicates, compaction shell (#1839) (625358ba) add surrogate-safe truncation regression tests (#2006) (171e7e7c) extract shared session lifecycle helper (#1854) (c4292e4d) deduplicate CLI and slash command display formatters (#1836) (e16babed) consolidate atomic write pattern into shared utility (#1833) (dd5f0931) throughput inflection audit + self-correction loop follow-up (25a51b6e) Fixed complete runtime type validation for deserialized sidecar content blocks (#2003) (664110a8) classify and test zero-observation closure reasons (63d52383) Added add per-node attachments for multimodal DAG workflows (50121314) Changed Merge pull request #1993 from griffinwork40/afk/iso-agent-tool-1-souy55 (2772724a) add coverage for resolvedAttachments branch in dag-subagent (ba6a2e3a) Fixed filter edges referencing pre-failed attachment nodes (#1993) (fd7d0086) isolate per-node attachment resolution errors (#1993) (c2db9779) Added gate-shape telemetry + compose agent_type parse tests (22fd3fde) Added visual replay and content block preservation for session resumption (#1996) (a8bb65db) Added scope goals per-project instead of global (97a25810) Changed Merge pull request #1999 from griffinwork40/afk/iso-impl-per-project-goals-1-xxs0dj (2d893dbc) Merge pull request #1872 from griffinwork40/afk/fix-1850-sleep-unref (0e266c58) Fixed cap slug in projectKeyForCwd to preserve hash suffix (b92a35e4) replace local sleep with sleepWithAbort in rate-limit-bucket (#1850) (fd0abe13) Added expose subagent runtime knowledge to the coordinator model (#1997) (1172c6ad) Fixed add manifest cwd test + fix extraReadRoots error message naming (#1992) (ec579ec4) Fixed revert misleading compose agent_type safety claim in fix-pr SKILL.md (#2001) (f6512776) Fixed correct stale compose limitations in fix-pr SKILL.md (#1994) (347c1d8c) buffer streaming content chunks in mid-turn task view (#1995) (58afe726) Changed audit and backfill 25 missing architectural entries (cd111c55) Merge pull request #1875 from griffinwork40/afk/fix-1856-grant-manager (b8831284) fix GrantManager layer inversion (#1856) (80472b07) Changed Merge pull request #1986 from griffinwork40/fix/issue-1982-resolve-agent-type (c1a63241) Merge pull request #1979 from griffinwork40/fix/issue-1967-dag-error-names (e99cdfc2) Fixed wire agentRegistry + inherit model + budgets + workspace store for named agent_type nodes (3e449f1b) resolve named agent definitions for per-node agent_type (7c9c8d2d) complete invariant comment, add extraReadRoots validation, per-node cwd manifest test (0f3883fb) user-facing error names in validateDagNodeRoots + manifest cwd test (4ed4257f) Added add per-node agent_type for DAG nodes (#1943) (bcbadf1c) Changed Merge pull request #1980 from griffinwork40/fix/issue-1949-clean (b08481ae) Merge pull request #1978 from griffinwork40/feat/issue-1943-agent-type (0166b349) Fixed eval-gen fixture fallback review follow-ups (#1949) (e8dc405b) Changed Merge pull request #1983 from griffinwork40/fix/win32-tsx-shim-writer-test (001e6d91) Merge pull request #1953 from griffinwork40/fix/issue-1950-executor-validation (b1f9f6bd) Merge pull request #1937 from griffinwork40/afk/fix-1928-resolvereporoot (027ecb9c) Merge pull request #1935 from griffinwork40/afk/fix-1919-closure-anomaly-root-only (ccb33bd1) Merge pull request #1934 from griffinwork40/afk/fix-1923-test-gaps (6b95653e) Revert "fix(daemon): tighten executor validation + add disable-re-enable test" (a79e63c6) consolidate resolveRepoRoot() survivors + add git.ts unit tests (#1928) (86377075) close parallel gate path test coverage gaps (#1923) (31f35ab6) Fixed tighten executor validation + add disable-re-enable test (6fc76987) robust cross-platform tsx invocation in writer backstop test (104daea0) replace POSIX tsx shim with cross-platform spawn in writer.test.ts (13d37b98) tighten executor validation and add re-enable regression test (54ee266b) address review feedback (3416ff9f) address review feedback — JSDoc, conservative-fallback test, observability counter (e0085230) address review feedback — Gap 2 parallel gate path, Gap 1 precondition guard, Gap 3 dedup (934b3bff) scope closure-anomaly-abort detector to root sessions only (#1919) (53146b90) Changed Merge pull request #1989 from griffinwork40/fix/issue-1922-fork-subagent-try-catch (c8645572) Merge pull request #1990 from griffinwork40/fix/issue-1984-v2 (c6b3142b) Merge pull request #1987 from griffinwork40/fix/issue-1966-remove-dead-registry-field (b0606d92) Merge pull request #1988 from griffinwork40/chore/1925-internal-annotation-accountDenialBreakerPostGate (75f6aaae) add @internal annotation to accountDenialBreakerPostGate (b2b6ef68) Fixed add migration note for extraReadRoots removal + per-node cwd test (ba006c5a) widen forkSubagent try/catch to cover register-to-active.set span (1576478a) remove dead inboundAttachmentRegistry field (3687928c) Changed Merge pull request #1959 from griffinwork40/test/banner-scroll-coverage-1829 (e94d82cd) test(tui)(#1829): cover banner-scroll path in ordering-invariant and protocol tests (f79b5af1) Fixed increase idleSessionMs timer margin to avoid macOS CI race (#1959) (bcd869cf) Changed Merge pull request #1977 from griffinwork40/fix/issue-1926-replay-suspected-loop-parallel (adcd3a3f) Merge pull request #1976 from griffinwork40/fix/spine-worktree-resolution (3df7d24a) replay observeSuspectedLoop after parallel wave (#1926) (7cb51e12) Fixed resolve SPINE.md to main repo root in worktrees, auto-stage after write (c9e40a9b) Changed Merge pull request #1975 from griffinwork40/afk/fix-1965-writeroots-denylist-tests (661f2c9a) Merge pull request #1981 from griffinwork40/afk/iso-s2s3-v2-3-xb7kko (a245e762) Fixed add defense-in-depth breadth guards to parseNodePaths (b3e09d5f) add isReadDenied guard to writeRoots + test coverage (e91d1d2e) Added expose per-node cwd, readRoots, writeRoots for DAG nodes (#1944) (7e926de0) Changed Merge pull request #1948 from griffinwork40/afk/fix-rounding-edge-cases (d765ea6e) Merge remote-tracking branch 'origin/main' into afk/merge-1948 (faa3341c) Merge branch 'main' into afk/fix-rounding-edge-cases (6e40bf46) add env registry uniqueness guard and invariant docs (#1930) (f84ecaa8) Merge branch 'main' into afk/fix-rounding-edge-cases (8cc9e29e) remove stale PR draft artifacts (f24bbe99) Fixed remove unwired max_turns/max_tool_rounds from node schema (43ca2ee1) remove unused imports from compose-executor (44fcde35) close extraReadRoots breadth-guard bypass + add isReadDenied (d1808395) address eval-gen fixture fallback review findings (aa56c92f) segment-split .. check + additive readRoots (4faad992) harden per-node roots — inline schema docs, #1939 contract, writeRoots tests (f9a24531) Added add per-node max_turns and max_tool_rounds overrides (1b87f912) Changed Merge pull request #1968 from griffinwork40/feat/issue-1947-per-node-budgets (ddc9afdd) Merge pull request #1963 from griffinwork40/seo/docs-p0-fixes (66ee0b40) Merge pull request #1962 from griffinwork40/refactor/tool-dispatcher-1861 (da3f7c79) Merge pull request #1961 from griffinwork40/refactor/centralize-atomic-write-1921 (1ea0430f) consolidate ToolDispatcher/ToolDispatcherLike into single definition (#1861) (ff0f2f73) centralize atomic-write pattern (#1921) (6cbcce1a) Fixed add robots.txt, sitemap, canonical tags, and OG metadata (d19fd71a) Changed Merge pull request #1957 from griffinwork40/test/delegation-budget-integration-1898 (e1d42bfe) Merge pull request #1954 from griffinwork40/fix/issue-1952-output-capture-status (53003b80) test(dashboard)(#1822): strengthen claimed-tool dedup assertion (#1955) (32cb67ea) add delegation-budget integration test coverage (ceeb538c) fix GrantManager layer inversion (#1856) (1f49bb1d) Fixed thread completion status into subagent output capture end marker (ceeced23) Changed add env registry uniqueness guard and invariant docs (#1930) (814d13e3) Changed extract toggleScheduleEnabled, fix POST body drift (#1838) (#1879) (aa58a883) Fixed eval-gen falls back to existing fixture when source trace is swept (#1920) (0cc77470) Changed extract _onTerminal callback into fork-terminal-hook.ts (#1931) (#1936) (6676d3b5) recategorize concurrency env vars from model to process (#1905) (#1932) (6105cfcd) Changed add keepLast + delegation interaction and id-correlation tests (#1927) (#1933) (466c1b35) Fixed remove unnecessary win32 test skips and normalize paths (#1604) (#1938) (b4506ae8) Changed fix reset scoping and dedup setupDiffMock helpers (#1826) (efeba056) thread warn parameter through scalar concurrency resolvers (#1907) (b3833563) add @internal annotation to accountDenialBreakerPostGate (#1925) (b4da5f56) Fixed update stale childrenByAgent references in dag-subagent.ts (#1910) (e77370a8) Added delegation-aware microcompaction preserves subagent findings (a3e2d2ea) Changed Merge pull request #1902 from griffinwork40/afk/20260920-163857-b4d985 (b34fef08) Merge remote-tracking branch 'origin/main' into afk/20260920-163857-b4d985 (739e20ab) Changed Merge pull request #1914 from griffinwork40/afk/issue-1825-bocf (825b623b) Merge pull request #1912 from griffinwork40/afk/resolve-repo-root-1834 (52c41c4f) consolidate resolveRepoRoot() into single canonical implementation (#1834) (19cd2e90) Fixed clamp negative idle-ms, add eviction threshold test, fix formatting (#1825) (925be557) Changed parallelize Phase 1 pre-dispatch gates for safe tools (#1901) (d745ac79) fix half-verifications, add cwd never-drop test, remove unused helper (#1827) (#1913) (227e376e) update stale fromConfig mock shape in chat tests (#1821) (#1886) (3837ff95) strengthen multiline idle-dup test with value assertions (#1843) (#1880) (4293e2a3) remove confirmed dead code (AFK_DIAGNOSE_BASELINE, loadXaiCredential, PlaywrightHintOptions) (#1849) (#1909) (38121d9d) Fixed remove session ID from delegation-budget refusal messages (#1900) (#1908) (a30a47ec) Fixed make maxChildrenPerAgent a concurrent cap + rename to maxConcurrentChildrenPerAgent (#1904) (3447b55d) Fixed use shared parseRetryAfterMs in OpenAI provider (#1851) (#1874) (dfe6aa7d) Changed rename skills/index.ts to skill-registry.ts, extract types (#1862) (#1890) (ca4b9b64) Added add tree-wide delegation budget (maxChildren/concurrent/total agents) (#1894) (d936c080) Changed bump @types/node from 26.5.1 to 26.6.1 in /website (#1869) (39a8ca8a) extract resolveBrowserProvider from browser handlers (#1832) (#1888) (73c6656c) Changed add unit tests for builtin-task.ts (#1897) (7e4b92c5) add unit tests for errorMessage() utility (#1884) (#1889) (3cfbee1c) split auto-compact.ts mixed concerns (#1863) (#1891) (f2d91c87) replace remaining errorMessage() inline ternary (#1885) (#1887) (7a28daed) remove dead toolClaimedByAgent Set (#1892) (72824ccc) extract improve pipeline shared utils (#1858) (#1893) (68fea350) Changed add errorMessage() utility, replace 65 inline casts (#1837) (#1883) (140a2faf) Changed collapse createHookRegistry indirection chain (#1855) (#1873) (10398d96) Changed collapse trace emit 12-way repetition into generic (#1840) (#1878) (12cd680d) extract browser handler provider acquisition (#1853) (#1882) (ebef899b) remove deprecated cli/keychain.ts shim (#1857) (#1871) (5345fb90) Changed consolidate Tier-1 duplicate code (8 items) (#1845) (97e9baf5) Fixed remove CompletedCache double-write in forkSubagent (#1841) (#1876) (aa691277) add reflection cue to end-of-turn protocol (#1846) (73b4cb02) Changed bump the fumadocs group across 1 directory with 3 updates (#1868) (fcc7c9ca) extract mint phase fork helper (#1852) (#1881) (a55ae542) bump next from 16.3.4 to 16.3.5 in /website (#1870) (52cdd37f) Changed consolidate double measure() call in cursor-follow repaint (#1842) (#1877) (b037e62d) Fixed use shared parseRetryAfterMs in openai tracing-fetch (fixes retry-after-ms) (#1867) (f925fc03) Changed update boot-warning-survives-clear to inScrollback after #1823 banner-scroll (#1866) (dc4284a9) Fixed preserve identifier names in published bundles (#1844) (423f984d) Fixed use physical row count for cursor-follow targetBottomRow (#1831) (90124337) Changed PR #1686 low-severity follow-ups (testability, docs, observability) (#1812) (c6ad6909) add xai/xai-oauth providers, annotate openai-codex deprecated (#1803) (cd8a45ea) clarify AGENT_SURFACE registry entry and setter comment (#1830) (e30e2888) Fixed increase inline comment per_page from 25 to 100 (#1807) (39efa207) Fixed scroll banner to scrollback to eliminate idle-state gap (#1823) (f2b1e4e3) Changed clarify parentId must be a tool_use_id in ForkSubagentOptions (#1804) (3656d895) add direct unit tests for formatStatusLine (#1809) (891aecbb) Fixed upgradeService preserves existing env vars on restart (#1717) (#1810) (1284b282) Changed add tests for /spine slash command, idempotency guard, and pending-log writes (#1679) (#1813) (c847a1ac) Fixed bound live-session growth and reload settings on eviction (#1687) (#1816) (b9485001) fix 3 bugs in on-demand shiki grammar loading (#1644) (#1819) (3b1e11f0) restore claimed-tool roots and comprehensive topology tests (#1818) (3c0a5f39) Fixed erase slash-command dropdown rows on cursor-follow close (#1817) (3f65c1f6) Changed add unit tests for builtin-task.ts (#1805) (b741f5b2) export filename regex as named constant for test import (#1806) (c0a44af5) Fixed sort spine roots by SSE arrival order (closes #1647) (#1808) (98b1b455) Fixed add trust-boundary guards to classifier prompt (#1678) (#1811) (048ac326) Added load shiki grammars on-demand per code block (#1644) (f0ff4c48) Changed add regression test for path-traversal filename filter (#1790) (#1800) (e9f17bcb) fix five minor completeness gaps from site audit (#1728) (#1799) (094ec7a5) add shell-task.ts test coverage (#1797) (4b678d8a) use getTerminalHeight() in preview-cap sites for consistency (#1780) (#1796) (3c3b2f53) fix TurnRunnerDeps docstring inaccuracy and hoist coreExecDeps (#1761) (#1795) (388713ac) assert sideband event in takePendingPlanExitSeed success path (#1792) (#1794) (f2803e21) merge duplicate JSDoc on placementMode in terminal-compositor (#1781) (#1793) (c26bfad1) Changed add #1720 structural invariant test and changelog comment (#1725) (#1787) (7814c0af) use getter for providerIterator in runInitialization (#1760) (#1786) (ce82003b) clarify droppablePriority: 0 intent (#1771) (#1782) (347ea693) Fixed update invariant example list and epistemic-scope for prior-feedback (#1724) (#1788) (8ff3fd57) clarify timestamp normalization and cap pagination (#1723) (#1785) (52ca1042) add timeout guard to spawnAndKill helpers (#1747) (#1784) (b48c1b34) validate filenames against path traversal (#1706) (#1783) (bed5e465) correct JSDoc and add unit tests for session-config (#1778) (#1789) (66a7c8de) Changed Merge pull request #1779 from griffinwork40/fix/docstring-dispatcher-1761-v2 (5b8d953f) Merge pull request #1749 from griffinwork40/afk/20260917-195714-9ab821 (033e00a6) Merge pull request #1765 from griffinwork40/afk/fix-preview-ghost-rows (15b78d2f) fix TurnRunnerDeps docstring inaccuracy and hoist coreExecDeps (#1761) (3f4e934b) Fixed cap all preview paths to viewport height, not just fences/tables (690b173b) cap streaming preview height to viewport, preventing ghost-row duplicates (616836b4) eliminate empty gap between banner and prompt on fresh sessions (9b56cfe6) Changed Merge pull request #1776 from griffinwork40/afk/iso-1756-session-shrink-1-z5fyzt (0f7d17e2) Merge pull request #1774 from griffinwork40/fix/bench-assertions-1746 (6e4a4264) Merge pull request #1773 from griffinwork40/fix/stale-clear-comment-1758 (0c5c810e) Merge pull request #1772 from griffinwork40/afk/test-pin-1759 (3bd36f22) extract config-mutation methods into session-config.ts (#1756) (540ee3ea) tighten hook-block-fidelity assertions and cleanup (#1746) (a35d6a74) pin reverse-nested marker and non-TTY done() branch (#1759) (18e88742) Fixed revalidate eviction candidates after async close (#1715) (784548d2) remove stale clear() reference in cup-frame-renderer catch comment (#1758) (28e6dc95) Changed add child-process timeout to spawnAndWait in bench tests (#1747) (a540fe97) Fixed clarify droppablePriority: 0 intent with inline comment (#1771) (9092f83b) validate --limit flag and session directory names (#1706) (8824fac7) Changed move system-prompt.md to repo root — eliminate single-file prompts/ dir (#1763) (3d5e40e9) Fixed erase ghost status-line artifacts + consolidate TUI follow-ups (#1766) (2ec1a242) Added show live code and table content during streaming (4322cb07) improve streaming text UX — atomic sync output + inline syntax close (59624176) Changed Merge pull request #1754 from griffinwork40/afk/streaming-ux-phase3 (7bbba997) Merge remote-tracking branch 'origin/main' into afk/streaming-ux-phase3 (bae9f388) Phase 3 render-path and cell-width invariant tests (51caafa4) Fixed streaming UX preview — remove double-wrap, add bare-fence fallback (#1764) (7999de38) Added streaming UX phase 2 — live code/table previews + atomic sync output (#1762) (7fb44015) Added streaming UX phase 1 — atomic sync output + inline syntax close (#1752) (2f4fcf3d) remove deprecated PR body for bash preview configuration (3e3b2c15) add new invariants for hook block decision tracing and error handling (494bd67a) Changed complete #832 Tier 3 extractions -- dispatcher, session, scheduler, daemon (#1755) (40726323) Fixed surface failed MCP servers in get_runtime_state and REPL startup (#1702) (#1748) (3bdf7c07) Changed consolidate legacy BUILTIN_WORKTREE_PRUNE compat shim (#1736) (#1742) (bc321b78) freeze time in eviction exact-boundary test (#1716) (#1738) (608b83f8) add coverage for sort order, limit boundaries, escape stripping (#1707) (#1740) (5b4d3262) add hook-block fidelity benchmark (#1745) (a8f650e2) Merge pull request #1744 from griffinwork40/bench/concurrent-emitter-trace (6c26f932) add concurrent-emitter trace integrity benchmark (2c828bb5) fix mid-sequence scenario description in trace-completeness benchmark (#1727) (#1737) (49b21593) Fixed guard surrogate-pair boundary in shell-task excerpt truncation (#1734) (#1743) (229a10c8) trace-completeness benchmark test improvements (#1726) (#1741) (975173ae) guard ToolLaneFlash onRepaint callback against throws (#1718) (#1739) (ed03f3bf) Changed consolidate legacy BUILTIN_WORKTREE_PRUNE compat shim (#1736) (bdc01061) add coverage for sort order, limit boundaries, escape stripping (#1707) (4340199b) freeze time in eviction exact-boundary test (#1716) (194577a5) fix mid-sequence scenario description in trace-completeness benchmark (#1727) (7facd4af) Fixed guard surrogate-pair boundary in shell-task excerpt truncation (#1734) (9c184aff) trace-completeness benchmark test improvements (#1726) (8741f890) guard ToolLaneFlash onRepaint callback against throws (#1718) (ffff6a87) Fixed remove double-slash prefix on slash-command autocomplete (#1654) (19dc7edb) Added add executor tagged union for scheduled tasks (#1719) (090e976b) Fixed remove tsx watch from dev script (#1733) (86abb85c) extract readable titles from XML-tagged skill dispatch sessions (70deb28d) Fixed extract session titles from preamble-bearing ledger records (#1732) (975ea7bf) Added add shell-mode input visuals for ! prefix (#1730) (7fb33211) Changed add crash-to-resume DAG checkpoint benchmark (#1731) (24ca8537) add abort-cascade correctness benchmark (#1729) (9df5bb7c) Added add prior-reviewer-feedback awareness for PR targets (#1720) (7e5fc83c) Changed comprehensive site audit and update (#1722) (79ebf803) Changed add MomentumTicker unit tests and fix stale comments (#1692) (#1713) (78a218d9) Fixed strip existing annotations in idempotency guard, fix TOCTOU comment (#1677) (#1709) (48895d8b) Changed deduplicate TranscriptItem type definition (#1710) (c2183d52) merge SPINE.md service invariants into main baseline (798b0713) Fixed surface upgradeService failure in restart() (#1695) (#1714) (b3495044) forward opts to upgradeService in restart() (#1694) (#1711) (9e144158) harden eviction module (#1705) (#1708) (3ad1e10d) lane flash reduced-motion gate, tests, dead ternary (#1693) (#1712) (9d081ebb) Added add searchable capture index CLI command (#1502) (#1641) (54160008) Fixed use repo default merge strategy instead of hardcoding --squash (#1704) (61cc0c7f) Fixed bound elicitation route registry growth (#1700) (c765fce2) Added offer to merge docs/test-only PRs after MERGE verdict (#1703) (36d3ee8e) Changed track initialized SPINE.md for agent-afk repo (7670e286) Fixed drain micro-buffer before terminal-state inspection (#1701) (2b7b8835) Added read SPINE.md in ground-state pre-flight (#1699) (f2f1a8a6) Fixed make /spine init actually populate entries from codebase artifacts (#1698) (38152c80) Fixed widen /spine init grep to cover all documented comment prefixes and file types (#1697) (9f7977ae) Fixed add plist upgrade path for existing installs (#1686) (d196ed8e) Added 150ms glyph flash on tool completion (#1691) (3a88c42f) live tok/s momentum ticker in status line (#1690) (1e5126e4) Fixed callback-gated exit for Windows --version + widen watch.test timing budget (#1689) (1de4bcdd) Fixed close SQLite handle before test cleanup + flush --version on Windows pipes (23f5a98a) Fixed periodic sessionData eviction and elicitation route cleanup (#1657, #1662) (#1668) (d9ed4479) Fixed prevent watchdog suspension ceiling stacking (#1660) (#1665) (59e059ba) Fixed resolve stacked Windows smoke test failures (pnpm ENOENT + dashboard deps) (#1685) (fe1ea69d) Fixed revert top-aligned band to bottom-aligned (#1670 regression) (#1684) (999925e5) Fixed add manifest gate and scoped re-review to reduce cycling (#1680) (990dcf5c) Fixed resolve remaining umber references and add UserDefaults migration (#1681) (98306679) Changed add end-to-end CLI smoke test (#1603) (#1638) (7cf76048) Fixed update stale BANNER_LINE_10 assertion in PTY scrollback test (#1683) (3ef0f7b3) Changed bump react-dom and @types/react-dom in /website (#1652) (9c2ab252) Fixed normalize CRLF to LF in esbuild prompt-inlining plugin (#1682) (0a2eb930) replace POSIX path assumptions with platform-agnostic APIs (#1600) (#1642) (35c80942) Fixed top-align committed band to eliminate dropdown gap (#1670) (1e34de69) Fixed remove blank row at top of scrollback history (#1674) (a229e376) Added parallel-first scheduling posture (#1676) (12b25e09) Added agent-maintained SPINE.md (#17) (#1649) (9b71939c) Added word-by-word ghost acceptance via Right arrow (#1673) (693d5f9d) Changed extract shared Collapse component (#1648) (#1667) (f0bc0279) Added persistent cross-session objective tracking (#1632) (2467ad19) Fixed use os.userInfo().uid fallback in guiDomain() (#1661) (#1664) (d3967925) Changed bump react and @types/react in /website (#1653) (6ed00fbc) Fixed warn about systemd >= 240 requirement for log output (#1659) (#1669) (7a9c606c) Added add AFK_STREAM_BUFFER_MS for smoother streaming output (#1671) (126772d3) Changed bump the fumadocs group in /website with 2 updates (#1650) (ef2c14ce) Fixed close leaked FDs in start() (#1656) (#1663) (fe23c824) Changed bump @types/node from 26.4.1 to 26.5.1 in /website (#1651) (d2601bb9) Fixed boost docs site favicon palette for small-size legibility (#1655) (a3d3997b) Added overhaul chat UI with topology spine (#1635) (d0af56f9) Added add read-only Settings view with config API endpoint (#1581) (#1640) (12678d25) Changed add workspace persistence decision record — won't-fix (#1541) (#1639) (a6ffff01) Fixed add debug logging for closeTab window.close() limitation (#1628) (#1636) (0c0430a7) Fixed drop envelope fallback in call() for void-result methods (#1629) (#1637) (04705f23) Fixed replace emoji logo with Handoff Arc brand mark (#1634) (c4011bc9) Changed consolidate web layer — remove legacy frontend, rename src/web/ (#1633) (df7705d8) add unit tests for AgentBrowserClient (#1630) (#1631) (cecca5ea) Fixed add missing dashboard install step to auto-release workflow (070673c3) Added hierarchical subagent tree, settings view, and bg-jobs polish (#1625) (5d8d7be0) Fixed align AgentBrowserClient with Agent Browser v0.3.0 API (#1627) (a8035282) Changed convert markdown repaint debounce to leading+trailing throttle (#1626) (f120924c) Added add token budget + fan-out count to status line (#1609) (#1623) (af8963a2) Changed add test infrastructure and baseline MarkdownContent tests (#1606) (3e52e848) Fixed align design tokens with AFK brand theme (#1624) (c1d8ae73) Changed address remaining review follow-ups from #1554 and #1555 (#1566) (#1595) (91c11fc8) Fixed harden build-web-ui.mjs with CI fail-fast and pinned Vite (#1591) (9ebc0a6c) fix stale caches in React dashboard (#1584) (#1593) (a0244133) Fixed resolve 401 errors in Vite dev mode (#1599) (47f85347) Fixed wave 1 - hook executor wiring, EBUSY fix, POSIX test portability (#703) (#1578) (9990099a) Added port @-file, model selector, and queue panels to React (#1605) (495a0614) Added wire slash-command dispatch into web UI prompt path (#1598) (4c0be1ea) Fixed approval error feedback and stable React keys in memory view (#1587) (#1592) (00fbbdd0) Fixed add URL scheme allowlist to MarkdownContent links (#1590) (9832092c) Changed add route-level tests for memory, models, and bg-jobs endpoints (#1583) (#1594) (cfc025d5) Fixed make tool record toolUseId optional for backward compat (#1588) (#1589) (0f068ef9) Changed deduplicate ledger-adapter to single source of truth (#1582) (#1596) (5f13806c) Added React dashboard - full implementation (Phases 1-5) (#1580) (ae5d5e9b) Changed review follow-ups from #1554 and #1555 — tests and comments (#1566) (#1576) (35b69c84) Fixed wire executors, MCP, and trace for web and Telegram OpenAI/xAI surfaces (#1579) (b07828dd) Added TUI-parity upgrade with 5 panels, emission wiring, and full audit fixes (#1572) (343687f8) Changed cover combined steering + workspace beforeNextRound (#1564) (#1575) (b9ca73bb) cover setSubscribeHandler injection path (#1563) (#1574) (6ce52c5e) scope workspace_subscribe to child allowlists only (#1562) (#1577) (dc497243) Fixed include grep include arg in resource fingerprint (#1565) (#1573) (d5fbd466) Added add schedule CRUD UI to afk web (#1570) (35bd80f0) default-on Done verification for unattended execution (#1571) (8d98e8ff) Fixed address rolling tail review feedback (#1569) (0ba10c86) Added live rolling tail during long-running commands (#1506) (#1568) (d46be13a) Fixed close TOCTOU window in persistRouteAndMessageId (#1557) (#1567) (5b1663bc) Added wire rich handoff sender into daemon elicitation path (#1550) (#1555) (11f20e74) Added resource-level fingerprinting and tested analyzer (#1537) (#1554) (846e865f) Changed move worktree-* cluster into src/agent/worktree/ (#1561) (2382f84c) Added reactive workspace subscriptions via workspace_subscribe (#1418) (#1560) (3ba59f00) Fixed address #1558 review feedback -- revert OAuth and capture defaults (#1559) (8ae06419) Added flip 5 env var defaults from opt-in to opt-out (#1558) (6b81547b) Changed Delete drafts directory (69e6d60a) Delete assets/demo-placeholder.png (23a90acd) Delete .afk/prompts/parallel-primitives-wave1.md (1ff519cd) Added honor allowCustom in durable handoff questions (#1551) (#1553) (cacfe68b) Fixed re-read record in persistRouteAndMessageId to prevent race (#1549) (#1552) (b1fd4ccf) Added auto-reclaim locked worktrees when preservation reason expires (#1545) (#1548) (480d45bb) Added wire durable handoff answers into Telegram (#1416) (#1533) (f4e07c4c) Added add orient skill to awa-bundled (#1546) (b4681c2a) Fixed detect resize while disarmed via snapshot, not listener (#1544) (ac415758) Added configurable preview size with head/tail line count (#1542) (c9cdcc4f) Changed extend closure contract to cover truncated guidance (#1529) (#1536) (38844778) Fixed auto-append unique suffix on name collision (#1516) (#1543) (afca1cdd) apply pushOutcomeLines to grouped-root single-entry path (#1532) (#1534) (3e4bdebc) warn on Ctrl+B promotion of non-isolated write-capable child (#1513) (#1535) (002509ad) Changed remove Steer option from interrupt picker (#1531) (1b8c00cd) Fixed spine severed on multi-line tool outcomes in nested tree (#1530) (5ee8454a) Fixed detect truncated closure reason as anomalous (#1503) (6684050e) surface touched files on cancelAll drain timeout (#1514) (#1522) (6f92f6c9) send_message_to_agent returns error on non-steering providers (#1495) (#1520) (aaa13fd7) Changed bump next from 16.3.3 to 16.3.4 in /website (#1528) (a171be6c) bump @types/node from 26.4.0 to 26.4.1 in /website (#1527) (1e749aa0) bump the fumadocs group in /website with 3 updates (#1526) (d86e4661) Fixed improve error messages and schema guidance to reduce 46% failure rate (#1515) (c2046fef) Windows compatibility — security, shell resolution, and test fixes (#703) (#1518) (4eb94bf0) Fixed warn on Ctrl+B promotion of non-isolated write-capable child (#1513) (#1524) (de04805e) Fixed regenerate env-registry docs and harden test cleanup (#1522) (#1525) (d00d8f18) Changed Delete commit-msg.txt (9d424f84) Delete draft-reddit-post.md (425fc09a) Fixed resolve credentials fresh per-node at fork time (#1511) (31195fbb) resolve 6 perceptual color collisions via CIEDE2000 audit (#1523) (6f83cd25) Changed add teardown/cancel clearing assertions for steer() ring buffer (#1496) (#1519) (9259509b) Fixed clear pendingStopInjection on /resume session swap (#1512) (#1521) (24a3c1a2) Added widen left gutter to 3-space indent (#1509) (7a94d1da) Added tighter prose measure for non-code blocks (#1510) (e645de8d) Added improved bash output visibility in TUI (#1500) (88091f9e) Added child-to-parent progress events via emit_progress tool (#1418) (#1504) (e6ea06d6) Added add turn-boundary separator between conversation turns (#1508) (2a9e657d) thread trigger into spawnSession and wire handoff handler (#1416) (#1498) (d6619f02) Changed centralize subagent model resolution into resolveChildModel() (#1499) (db62c706) Added show inline colored diffs for patch_apply tool (#1497) (87c4d4d4) Added mid-run agent steering via tool-call boundary injection (#1418) (#1494) (78c13734) Added wire durable handoff store into elicitation path (#1416) (#1493) (2d8a2f1c) Changed add endTurnFlush test for fully-pending band (committedBandPaintedRows === 0) (#1492) (51ef6f1d) Fixed add stale-guard to terminal-compositor lifecycle redraw (#1487) (#1490) (53c8f2b5) Added auto-cap oversized foreground results with sidecar spill (#1491) (de65c1e5) Fixed deduplicate wave-resume offers across session starts (#1489) (7b4b1877) Added model-facing clipboard tool (#1422) (#1480) (93941ebc) durable cross-session structured state store (#1449) (b147396b) Fixed pin VS 2022 for node-gyp on windows-latest (af688900) update tool count assertions after state store + clipboard PRs (396a0d2f) reset auto-resume counter per-turn instead of per-session (964b7c7d) Fixed contain project-local MCP stdio server env (#578) (#1483) (d454a30e) Added structured JSON query tool (#1423) (#1482) (5c739ea9) add HandoffRecord schema and file-based handoff store (#1416) (#1484) (791c6f74) Fixed forward image content blocks from MCP servers (#1421) (#1481) (caab0b2b) Fixed reconcile grant-manager divergences (#500) (#1479) (a069a8e5) Added live parallel-batch indicator during pending window (#516) (#1485) (d011a388) Added compositor A2 — Stage 2 + Stage 3 (#540) (#1486) (ec728f5f) Fixed suffix viewport for long input in mid-turn prompt (#1477) (#1478) (9185b471) Fixed guard computeIdempotencyKey throw in pre-hook (#1475) (#1476) (7534f3ea) Fixed add breakLongWords to todo-panel wrapToWidth (#1455) (#1466) (3c153306) Fixed apply width guard to slash writer raw() on TTY (#1456) (#1470) (dcfc1264) Fixed harden dedup, session scoping, error safety, and read caching (#1474) (cda9e1a9) replace timing-based sync with rendezvous signal in flaky test (#1473) (7258aed3) enable hard wrap in thinking-paragraph to prevent overflow (#1454) (#1467) (9aac66ad) skip indentMarker replace when fallback is undefined (#1457) (#1468) (d7628170) Added external-effect and idempotency ledger (#1412) (#1440) (32609e37) Fixed apply width guard to elicitation fallback writers (#1458) (#1465) (acb45cdb) Changed add mtime-ordering regression test for get_facet latest resolution (#1463) (#1471) (959522ae) close wrapping test coverage gaps from #1451/#1452/#1453 (#1462) (#1472) (f921fc34) Fixed make per-direction token_breakdown fields optional instead of zero-fill (#1460) (#1469) (6f8d08d1) Fixed restore statSync optimization and session_id trace path (#1464) (422182ff) Fixed add breakLongWords to wrapToWidth, harden padDisplayRight (#1451) (ef050386) Fixed hard-wrap code block body lines at maxTableWidth (#1453) (65bebea5) clamp content lines to terminal width in task-view-mid-turn (#1452) (b8c14b97) Added canonize facets as the primary session-level query surface (#1450) (b9b2e310) Added cap exponential backoff growth in computeBackoffMs (#1442) (#1446) (dc95f7d3) Fixed align PID=1 threshold between parseInput and evaluateProcess (#1443) (#1447) (4d4c7a6b) Changed remove dead TTFB code after double-spinner fix (#1448) (bc9790e5) Fixed suppress redundant TTFB "Generating…" spinner (#1445) (1fc6914d) Added safe web_request tool with SSRF guard and risk classification (#1413) (#1439) (af19d227) Changed generate env getters from ENV_REGISTRY instead of hand-maintaining (#830) (#1441) (9aa94132) Added wire streamProgress into live overlay spinner (#1399) (#1438) (76c64ec5) restrict evaluateProcess PID probing to session-owned PIDs (#1430) (#1436) (109d635c) wire computeBackoffMs into re-enqueue path (#1432) (#1435) (03764fa1) Changed remove orphaned progressBar component (#1400) (#1437) (3b4b5340) Added wave 1 parallel issues — #1402, #1404, #1407, #1431, #1433 (#1434) (24d18857) Added test_run tool with discovery and structured results (#1426) (d2d0b0a1) patch_apply tool with atomic multi-file changes (#1425) (deeaab29) wait_for tool with poll-based condition waiting (#1424) (53f5d726) durable task lifecycle with lease recovery and DAG checkpointing (#1427) (a2596639) Fixed lazy-load playwright to fix Next.js standalone import (#1428) (#1429) (db9a2fc9) Added wire toolCard into primary tool-lane rendering (#1403) (#1410) (55278d54) Fixed handle committed terminal-state block in dedup (#1407) (#1408) (1d0894cb) Added wire newsletter funnel links across README, CLI, and docs (#1406) (522a20bb) Fixed gate expired chatgpt-oauth tokens instead of passing opaque 401 (#555) (#1394) (6fea8329) Added extract costTokenParts into shared component (#1401) (#1409) (7b418e8a) Fixed deduplicate terminal-state rendering -- verdict card only (#1405) (81e64720) Fixed handle chatgpt-oauth in standalone oneshot auth path (#555) (#1393) (85c38f31) Changed wire component library -- kill shadows, promote context components, migrate separators (#1398) (34323467) Fixed add SCOPE paragraphs to tool descriptions to prevent misuse (#1397) (d0ff7251) Fixed reconcile 3 dispatcher/provider behavior divergences (#500) (#1396) (ce143232) Fixed resolve open issues #740, #654, #555 (bash grant policy, openai-compat test debt, chatgpt-oauth follow-ups) (#1395) (31aba866) Fixed surface durationMs via public handle API and route stdin through compositor (#1346) (#1390) (cec9a458) Added mid-turn task view + user-to-subagent interaction (#1387) (f1df4fa4) Changed add tests for live tail loop, natural completion, and Esc abort (#1333) (#1391) (f63ffec4) align README and LICENSING with website positioning (#1392) (ea73aeed) Fixed make auth diagnose slot-aware for chatgpt-oauth (#555) (#1389) (21cafcf4) Changed bump next from 16.3.2 to 16.3.3 in /website (#1380) (33a4bc38) bump @types/node from 26.2.0 to 26.4.0 in /website (#1379) (6568916e) bump @types/react-dom from 19.2.4 to 19.2.5 in /website (#1378) (f2ddc308) bump the fumadocs group in /website with 3 updates (#1377) (0bb4d1a1) Fixed add missing category annotations to audit-fit and diagnose (#12) (#1388) (2fe82bf0) Added code quality contract, verification evidence classifier, temperature plumbing (#1386) (73542f95) Fixed remove dispatch cast and add whenToUse precedence test (#1385) (8db1ae0d) Fixed wire pluginSkill.whenToUse into /skills detail card (#1383) (255ab5d4) Changed add disk-scan coverage for whenToUse frontmatter parsing (#1374) (#1384) (36b61b6d) Fixed restore BM25 normalization and add FTS5 DELETE/UPDATE triggers (#1381) (0cefed00) Fixed strip orphaned trailing ** from parsed field values (#1375) (859793f6) Added skill when-to-use frontmatter + routing hints (Claude Code compat) (#1368) (7fbf0853) replace LIKE search with FTS5 full-text search (#1370) (613dcaec) first-class browser routing -- Agent Browser preferred, Playwright fallback (#1369) (b87d6de7) Fixed add missing setPlanExitQueueCheck to repl-loop-wiring mock (#1376) (64f31f26) skip exit_plan_mode picker when user has a queued message (4767128a) Changed unify duplicate $() helpers with consistent null-safety (#1347) (#1367) (5bbd065d) Added pre-execution diff preview for edit_file (#1366) (07f13a73) Fixed retire pathApprovalGrantRef + Gate 1/Gate 2 containment regression test (#1364) (df87736c) Fixed proactive OAuth token refresh timer (#1296) (#1363) (4e074928) Added add /ghost and /suggestions slash commands (#1365) (e44a5800) Fixed register diagnose, false-completion-gate, fix-pr, polish in update-hash-pins.ts (#1362) (5744d246) Added wire toolCard into task-view + fix duplicate barrel export (#1361) (3255790b) Changed memoize mkdirSync per sessionLabel to avoid redundant syscalls (#1320) (#1353) (f7efcda3) separate stack traces from recovery hints in errorCard (#1327) (#1356) (c2814faa) Fixed harden drawBox width coupling and fragile newline assertion (#1345) (#1355) (10dd79a2) document one-line overshoot contract and tighten cap test (#1316) (#1351) (4c416607) sanitize id_prefix to prevent assertSafeJobId rejection (#1319) (#1350) (8397a6fd) Fixed formatTokenCount boundary shows '100.0k' at 99999 (#1328) (#1348) (024c9325) Fixed log errors from enterTaskViewMode instead of swallowing (#1334) (#1357) (fc31c3dd) Added reorder model name leftward in status line for visibility (#1343) (#1360) (9410f734) Fixed default AFK_SUBAGENT_LOG to off — raw tool args written without redaction (#1318) (#1359) (d85e1f1f) Changed gate subagent status ticker flush on second-boundary change (#1330) (#1354) (70520b7c) remove dead renderEventsView export (#1335) (#1352) (183e44b1) add coverage for stream-open-window writes and zero-write close (#1317) (#1349) (596ec25a) add integration tests for subagent status bar processEvent lifecycle (#1329) (#1358) (5106a5e3) Added conversation preview with view-mode before session resume (#1315) (c018cbc5) add CompactDiffView component (#1340) (44e281aa) Fixed restore hunks dropped in #1315 squash merge (ed882c31) composer & interaction improvements (#1203) (6be4ae6d) Added add ToolCard component (#1341) (03c3b082) Added show running/total subagent count (#1342) (#1344) (500c2ff8) Added add InterruptPeek component (#1339) (e6c6a47b) Changed migrate errorBox to errorCard, remove old component (#1337) (db0bb911) Fixed block direct launchctl/systemctl service registration (#1311) (09de4da0) Changed extract formatElapsed + statusBadge shared primitives (#1322) (#1336) (0af763a8) Fixed address v2 review follow-ups (#1331, #1332, #1333, #1334, #1335) (#1338) (d1119a45) Changed extract hydrateStatsFromStore from session-manager.ts (#1288) (4bbbe465) Added live view-mode switching for subagent conversations (v2) (#1313) (d708050b) component library foundation — SubagentStatusBar, StreamProgress, ErrorCard + live overlay integration (#1321) (c5f8f883) Changed add guideline against using emdashes (08550970) Fixed seed context-overflow guard from restored session usage (#1294) (#1304) (a210965e) Added /tasks commands + always-on subagent conversation logging (v1) (#1312) (5d37b230) add job-to-be-done category grouping to /skills listing (#12) (#1264) (eb175b9e) Added add tool_name filter to search_witness (#1314) (40687d88) Added render-time artifact capture for non-code copyable regions (#1287) (#1310) (12ffd199) add /copy plain mode for Slack/email-friendly output (#1286) (#1309) (2997ae66) accept inbound documents with text extraction (#687) (#1306) (67ca3ba4) Fixed run microcompaction unconditionally after compaction (#1293) (#1303) (0b5367d3) record verbatim tool args in subagent output capture (#948) (#1308) (c7912731) add edit_file TOCTOU guard and verify grep ENOENT enrichment (#441) (#1307) (4809c097) Added add sidecar retention sweep with age + count eviction (#1190) (319cb7ec) Changed add unit tests for streaming handlers and progress modules (#1305) (16b776d2) Added add OBSERVE + BASH_HIGH coverage for outbound curl writes (#1280) (#1302) (d3f3ff7d) Changed Merge pull request #1299 from griffinwork40/afk/iso-issue-1281-4-ostjix (c1ec9d64) Merge pull request #1301 from griffinwork40/afk/iso-issue-1282-6-vbnzvj (d99f087f) document credibility signal policy — PR/test counts over npm downloads (#1282) (af122e5e) expand irreversible-action examples for service install and production proxies (#1281) (629cc262) Fixed guard code-block register with enabled flag (#1289) (#1300) (c9c205d6) Changed extract watch command handler from bot.ts (#1290) (5b681553) Changed extract paused-event handler from turn-handler.ts (#1291) (c1666ff6) Fixed cap list_directory output at 500 entries (#1292) (aff2d362) Fixed skip node_modules in plugin skill discovery walk (#1297) (b086417b) Added add Steer option to interrupt-picker (post-stop redirect) (#1268) (473cda2f) Fixed render block-level markdown (tables, code) in verdict cards (#1295) (d26ada64) Added add /copy slash command with render-time code block capture (#1285) (e4c1844e) Changed add unit tests for streaming watchdog module (#1123) (#1275) (ade4b218) Fixed guard bot.catch and acknowledge unsupported message types (#1178) (b4702a4b) Fixed resolve autoRoute thread at send time, not tick time (#1271) (#1273) (cab2217b) Added wire reconcileWaveManifests into session startup paths (#1082) (#1266) (c9fcac8f) Changed add unit tests for streaming watchdog and sender (#1123) (#1277) (b7162c70) Fixed handle threadId=0 edge case in route normalization (#1271) (#1276) (30bc58ba) Added add OpenAI models to /model picker (#1258) (#1274) (e45e35f9) Fixed keep auto-watch routes current (#1270) (7c2ca4b2) Changed add unit tests for resolveForkInputs precedence paths (#1269) (#1272) (8cd25c7a) Fixed route auto-subscribe watch output to active topic thread (#1222) (#1267) (9f6c0ba3) Fixed UI polish — code lang badge, centered transcript, blockquotes, transitions (#23-30) (#1201) (5f9eafea) Fixed route auto-subscribe watch output to active topic thread (#1222) (#1262) (a013af50) Changed extract pure resolution chain from forkSubagent (#1265) (e9951979) Fixed add xAI/Grok models to /model picker and docs (#1105) (#1263) (77717022) Added add stats line and context-specific affordances (#1257) (f9bd4c2d) Changed add endpoint-layer tests for GrokCliHeaderDeps forwarding (#1244) (#1261) (773624fa) upgrade better-sqlite3 to v13 (#1259) (#1260) (bb4d1461) Added add claim normalization, STALE verdict, scale cap, and gate verdict (#1253) (c1add023) report shadowed AFK.md files and lock overlay provenance (#845 follow-up) (#1255) (2a3b7f65) Changed memoize plugin discovery walks and cap breadth (#990) (#1240) (c6a483b2) Fixed auto-recover ghost dirs on install (#1204) (46586071) pass message_thread_id to elicitation keyboards (#1219) (#1233) (f5c42658) stream grep output through a bounded collector instead of buffering 8MB (#1254) (ada88650) Changed bump next from 16.3.0 to 16.3.2 in /website (#1251) (4770c815) bump the fumadocs group in /website with 3 updates (#1250) (5bde8195) Fixed populate structured fields and improve fallback display (#1252) (557bc535) Fixed enforce version floor on ~/.grok/version.json reads (#1249) (d49ae2ec) Added add system prompt instructions for workspace tools (#1248) (467e616f) Changed extract Enter/Tab handlers from handleKeypress (#1072) (#1247) (24890ad6) Fixed suppress duplicate header seam between consecutive tables (#1246) (ff9e8f31) Changed incremental DOM render and input preview cap (#1, #22) (#1202) (3e9bf5a3) Fixed approval UX overhaul — multi_choice, title alert, context, tiers (#3,#4,#6,#7,#21) (#1200) (e35c65ef) Changed swap demo video with polished 43s cut (b6b4460f) Fixed bash guard SENSITIVE_PATH_SIGNAL covers relocated AFK_HOME (#778) (#1237) (f892f1a0) Added mechanical Windows compatibility pass (#703) (#1215) (0e131e2d) Fixed send valid Grok CLI version to proxy (#1242) (0c821d26) Changed replace demo placeholder with live video (80464c95) Fixed eliminate phantom blank rows from double-setOverlay race (#1243) (f35793c6) Changed extract helpers from executeBatch to reduce nesting (#1074) (#1241) (65cf4e63) Fixed derive MAX_API_ROUND_INFLIGHT_MS from live TTFB config (#1142) (#1239) (1ef8955d) Fixed extract shared credential-floor marker constants (#861) (#1235) (3375608d) thread threadId through to background job notifications (#1220) (#1232) (0597515a) surface hint when notify routing silently prefers DM over group (#1221) (#1236) (c70562d0) Fixed visual affordances — chevron, diff colors, pulse dot, stop feedback, tool digest (#9,#10,#11,#13,#16) (#1198) (34abf523) Added add extract_document tool for cross-platform document text extraction (#660) (#1164) (1b2ce58a) Changed harden portHasOwner — execFileSync, permission-denied, IPv6 guard (#1167) (#1181) (a63ebd20) add Awesome Harness Engineering badge to README (d3391207) Fixed bump builtin tool count 26 → 27 for extract_document (#1231) (b23016cf) thread workspace-enabled provider to compose DAG nodes (#1229) (19c5d909) restore prompt suggestion ghost after deleting back to empty (#1230) (1b9e20e1) derive MAX_API_ROUND_INFLIGHT_MS from live TTFB config (#1142) (#1173) (0db8055d) buffer setCwd/setSystemPrompt before query init (#1062) (#1157) (81fa8b34) Added plain-language pass on user-facing chrome for non-technical readability (#1228) (877443d2) Added live elapsed counters on in-flight tool/subagent overlay rows; fix stalled tick loop (#1225) (50000443) Added plain-output progress parity — tool/subagent lines + TTFB cleanup (#1226) (fa349e16) Fixed stop bgStatusBar and mascotBar during pager/editor handoffs (#1170) (#1193) (cf7c5edc) Added model-facing background-job cancellation scoped by provenance (#1227) (6b46177a) Added add per-turn tool-action summaries to resume replay (#1188) (cd503def) add workspace_query tool for mid-run polling (#1227) (#1224) (49dd727d) Added restructure empty-prompt context for outcome-aware suggestions (#1218) (273018dd) add AFK_WORKSPACE_DISABLED env toggle for A/B experiment (#1216) (35822fc2) Changed supply WorkspaceStore to fix cold-start hint assertion (e0ca17f8) add Responses-wire truncation coverage for query.ts (#1223) (5d241ea5) Changed harden portHasOwner — execFileSync, permission-denied, IPv6 guard (#1167) (#1175) (2d12806c) Fixed wire compose executor's missing onSubagentSucceeded cost rollup (#1211) (31d04365) Fixed thread workspaceStore through root manager, skill phases, and permission gates (#1213) (ed7cd385) Fixed resolve cold-start chicken-and-egg in workspace preamble (#1209) (9622916b) Fixed cold-start hint + compose executor wiring gap (#1214) (3a16ca51) Added enable background subagent dispatch + improve bg/fg guidance (#1212) (9e1b81ce) Fixed preserve newlines when splitting long messages at 4096-char boundary (#1206) (ca27a31f) Added virtual-scroll picker with fuzzy search and relative timestamps (#1189) (a0e2d8f6) Added auto-scroll to bottom on keypress when scrolled up (#1208) (#1208) (f8d45484) Added add argsFingerprint to tool_call events + dedup measurement harness (#1205) (bc5e7678) Added shared agent workspace v1 — publish tool + harness-injected retrieval (#1195) (8e6badd1) Changed remove dead resolveSecond variable in watchdog test (#1163) (bed80a9f) Fixed unbreak CI — remove dead variable + fix jitter-sensitive timer (#1207) (317b1891) accessibility — focus-visible ring & WCAG AA contrast (#1197) (96d8eca8) clear apiRoundInFlight in streamResponse finally block (#1143) (#1172) (1dd68bc8) disclose cost-headline vs breakdown data-source divergence (#934) (#1151) (960cf6fe) Added allow read-only bash redirection to $TMPDIR (#881) (#1158) (3d403d3d) Fixed SSE resilience — permanent error handling, composer disable, jitter (#8,#12,#27) (#1199) (ff24db4b) Fixed use authoritative contextLimitFor instead of stale heuristic (#1194) (768c7e2b) Fixed use basename for PAGER path comparison in resolvePager (#1171) (#1192) (d6fc6f9f) Added support isolation:"worktree" with mode:"background" (#1185) (1b93bffe) Changed count code lines only — comments are free (#350-ceiling) (#1186) (01200d4d) Fixed carve out schedules.json from the read-denylist floor (#1187) (d5725ba5) Added accept inbound documents (text, code, PDF) (#1183) (151c662e) Fixed resolve session human names in read_witness and search_witness (#1184) (950fa781) Fixed bound sessionData/messageQueues growth and enforce queue depth (#1179) (358861d8) await bot.start() and deduplicate signal handlers (#1177) (9a5fa6ab) derive MAX_API_ROUND_INFLIGHT_MS from live TTFB config (#1182) (be65adca) Fixed clear apiRoundInFlight in streamResponse finally block (#1180) (fc1660b5) Fixed suspend footer writers during pager/editor handoffs (#1168) (9513e1f7) Fixed buffer setCwd/setSystemPrompt before OAuth query init (#1062) (#1176) (e615cc5f) parsePortFile rejects bracketed IPv6 and out-of-range ports (#1165) (#1174) (165c16d3) deduplicate plugin skills whose bare name collides with a namespaced registry key (#1169) (c5ac09bf) Fixed recover from ghost EADDRINUSE by falling back to alternate loopback (#1161) (7ae7b5b4) Added wire SessionManager through session registry (Step 3) (#1162) (91cfc1cc) mark forwarded-message provenance (#686) (#1159) (3457fa43) Changed add behavioral test for apiRoundInFlight watchdog suspension (#1148) (9a23e834) Fixed reserve claimedChats in compact/clear drain paths (#1149) (46276853) Added add /diff slash command for inline git diff viewing (#1128) (d3ce7821) Fixed fork helpers, deliverOverflow contract, xAI OAuth tests, OIDC origin validation (#1119, #1122, #1063, #1058) (#1139) (33714849) Fixed reject unknown subcommands instead of falling through to interactive (#710) (#1137) (2527b2c5) Fixed stop killing telegram bot mid-session on upgrade (#1160) (165a0370) Fixed correct sessionsScanned to report post-filter count accurately (#1035) (#1136) (169486da) Fixed use refreshed token as fallback for locked keychain (#1135) (50ae14d3) Changed document deliverOverflow guard contract (#1122) (#1154) (4aec6af4) add test for refresh-failure graceful degradation (#1063) (#1153) (f99ab0a2) document combined watchdog ceiling (#1144) (#1155) (c73ab3bc) add unit tests for extracted fork helpers (#1119) (#1152) (c0a8e7cf) Fixed report pre-filter sessionsAvailable alongside sessionsSearched (#1147) (5f521a40) Fixed suspend watchdog during inter-round API calls (#1135) (#1141) (7ea04673) Added show elapsed timer while waiting for first response token (#1132) (f7b5a826) interrupt-and-steer picker on Ctrl+C + session health glance-rail (#1130) (de2b9d04) Changed eliminate 3-subagent dispatch overhead in pre-flight recon (#1134) (ca46b160) Fixed refresh expired keychain OAuth before checking (#1131) (#1133) (866df03d) Fixed thread topic opts into auto-subscribe watch output (#1023) (#1125) (d651192f) Fixed surface partial tool results on empty-buffer stream cut-off (#724) (#1126) (3370b4d1) Added add fix-pr, polish, false-completion-gate to bundled skills (#943) (00e466d2) Changed cache OIDC discovery response with 24h TTL (#1064) (#1124) (e309dd67) Fixed add missing SHA-256 pins for fix-pr, polish, false-completion-gate (#943) (#1127) (b74f2f32) Fixed resolve 5 subagent issues — DAG root bypass, manifest settlement, type narrowing, barrel export, stale docs (#1121) (04e337f9) Added intent-based /skills search + first-run welcome banner (#1114) (d5b04086) notice channel — surface textless truncations instead of dropping them (#970) (#1115) (84415983) Added slash-complete anywhere, @-file subsequence, Linux image paste, Ctrl-R reverse-search (#1116) (fa23b2a2) Changed shrink streamResponse (#890, #1073) (#1110) (517e6d5d) Added status-line turn/budget indicator + parallel fan-out count (#516) (#1113) (6fb028f0) Changed extract concerns from forkSubagent to shrink the 496-LOC function (#1109) (a8fa87d9) terminal-width discipline gate + width-resize pty scenarios (#939) (#1112) (9b836f0b) Fixed refresh expired OAuth token at startup before sync credential read (#1111) (91357ead) Changed add terminal-width discipline audit gate (#939) (#1107) (7567453a) Fixed guard against stale detectorVersion replay (#860) (#1108) (0e20b32d) Changed remove dead altDescription field + annotate fail-soft swallows (#503) (#1106) (ac20fd14) Fixed use flushCompletedRoots on dispose path to prevent blank-row gaps (#1100) (c1f4486d) Changed reduce nesting depth in executeBatch (#1074) (#1099) (2d95f20a) Changed extract stream-renderer options, process, and dispose into concern siblings (#1103) (d282998c) Changed Delete CLAUDE.md (4683427a) Delete AGENTS.md (e4530713) Fixed batch close 5 easy issues (#1087, #1086, #1061, #1059, #1060) (#1101) (8e02736d) route-key elicitation handler for topic sessions (#1021) (#1095) (51b4dc3d) fix pre-existing reader bugs flagged in PR #1097 review (#1102) (54322016) Changed extract helpers from readWithAutocompleteTty god function (#1072) (#1097) (fb5de645) Changed bump @types/node from 26.1.2 to 26.2.0 in /website (#1093) (37eda588) bump the fumadocs group in /website with 3 updates (#1092) (c0833329) extract helpers from streamResponse god function (#1073) (#1098) (d5326e0e) Changed extract renderMarkdownToTerminal god function into concern siblings (#1081) (#1094) (6d1a89e3) Changed extract duplicated JSONL parse loop into src/utils/jsonl.ts (#1081) (f919e780) Fixed thread topic opts into auto-subscribe watch output (#1023) (e44a377c) Fixed track unpriced turns instead of coalescing unknown cost to zero (#866) (#1010) (3014e76f) Added upgrade safe-destruct and release-boundary to block+explain (#1088 consumer) (#1090) (35b3fe28) Fixed remove unused join import from backfill-facets script (#1091) (91640740) Added auto-derive session facets at SessionEnd + backfill script (#1089) (a6d0f332) Changed consolidate ANSI strip regex to canonical terminal-sanitize.ts (#1080) (1dac0356) Added extend injectContext to PreToolUse (block path) (#1088) (b423000a) Added add enable flag to cancel_schedule for re-enabling tasks (#1085) (bea30e69) Changed demote directive-class gate skills to prompt directives (Wave 4 partial) (#1084) (8792f6f5) Changed extract shared pricing lookup into providers/shared/pricing-utils.ts (#1078) (bac408c8) Changed separate MAX_SEARCH_MATCHES from MAX_LIMIT (#1037) (#1046) (2627623c) Fixed delegate marketplace plugins to updateMarketplace (#1011) (cc0b2d00) Added wave manifest for interrupted session recovery (#940) (#1049) (dfda3445) Changed extract duplicated escapeRegExp into src/utils/regexp.ts (#1066) (#1079) (5ccb9209) Changed extract FS error-to-tool-result helper for tool handlers (#1070) (#1077) (87d784cd) clean up dead re-exports and double re-export chain (#1071) (#1076) (39b2da52) extract read/write scope resolution from forkSubagent (#1075) (8f2a6b59) generalize registry-grant prompt-consistency guard (#942) (#1057) (538889b4) Added process-wide admission control for outbound API requests (#941) (#1050) (6f473544) Fixed widen flaky timing threshold in dispatcher compose parallelism test (#1065) (a5b401d4) Added first-class xAI/Grok with API key and SuperGrok OAuth (#1019) (efd78cf7) Changed pin terminal width in quota-footer tests to fix #795 (#1056) (ac2ee6c5) Added add thread_id to send_telegram for topic targeting (#1053) (8f312cab) Fixed extract discoverPluginSkillsAndCommands helper (#989) (#1055) (3c2fc455) add Invariant comment guarding sync block (#743) (#1054) (f0b26986) Fixed accept bare "max" as alias for "enabled:max" in --thinking parser (#1052) (50879d31) Changed split TraceWriter into write-only TraceSink and owner-only seal handle (#1051) (400f64f8) Fixed sanitize paths in registry warnings against terminal injection (#1029) (e73cc1a3) Changed golden-fingerprint test for denial reason slug stability (#853) (#1047) (9a7a603d) Fixed remove vestigial Claude Code slug from memory surveyor (#882) (#1008) (0ab11cd2) Added add recovery hints for iteration_cap and timeout closures (#1048) (8fbec4a2) Fixed add sessionsScanned compat alias and improve CLI label (#1037) (#1041) (d91ef1cf) Added surface truncatedSessions in search_witness results (#1036) (#1042) (0023b07b) Changed add negative assertion to no-git guard (#788) (#1026) (a9a6d3fc) add unit tests for handler adapter layer (#1038) (#1039) (54e4c602) pin shared allowance across alternating stall shapes (#947) (#1040) (8ea92519) Added add read_witness and search_witness built-in tools (#1034) (b36cc54a) Fixed surface rate-limit backoffs and retry sendOrEdit 429s (#1033) (1b8b124a) Changed compare digests instead of re-reading files on dedup (#885) (#1006) (00a7e1e8) Fixed correct concurrency floor figures and add light-regime budget (#1027) (0b99429c) Changed retire committedBandBottomRow erase-bound read in frame-preserve-archive (advances #540) (#1031) (dbfc1b5c) Changed split commitAbove into 7 sibling modules with invariant tests (#827) (#1032) (c3a4bade) Changed fix stale comments and test cleanup at skill-dispatch sites (#744) (#1030) (7f16f9ff) Fixed use routeFromCtx in /afk and /help handlers (#1022) (#1028) (2b16957b) Added bound the witness tree by age and aggregate size (#849) (#986) (4502e200) Fixed cascade-abort in-flight children before the owner seals (#733) (#987) (68b22395) Changed document subagent tool-round budget in AFK.md and CLAUDE.md (#918) (#1007) (7027e56b) Fixed give the resumed session a live writer instead of a sealed one (#731) (#985) (45a56a33) path-guard NAME=value replacers so non-secret paths survive capture (#949) (#968) (eb7b8755) suppress sealed-writer error on SessionEnd hook_decision emit (#1025) (1b4d7f9d) gate plugin-shadowing notices behind AFK_DEBUG=1 (#1024) (39f8f35b) Fixed improve tmux compatibility — raw OSC 52 clipboard, truecolor detection, docs (#1017) (c2d6cdd2) Added native topics routing (step 6) + cross-surface CLI/daemon registration (step 7) (#1020) (5fdc806f) Fixed fail-fast context-overflow guard for max_tokens exceeding window (#1014) (72d56baa) Fixed clarify research-agent write constraint in tool-def listing (#944) (#1009) (efd3dc4f) Fixed clarify skill tool description for load vs fork modes (#1018) (44fbb5c2) Changed clarify advisory-only posture of 200-line function ceiling (#1016) (4e1254b0) Fixed surface research-agent read-only constraint at dispatch time (#1012) (0583e81d) Fixed block skill self-recursion through agent children (#1015) (e2b34c42) address remaining #762 review items (M1, M4, M6, L1, listener leak) (#1013) (415d34fa) Added record bootstrap warnings as a durable boot_warning phase (#754) (#984) (08d254c) Added add a function-scoped 200-line ceiling, answering #831 (#1002) (378a575) Fixed stabilize flaky worktree-occupancy heartbeat test (#1004) (6189961) name the unrecognized command instead of blaming its flag (#710) (#974) (90a144d) surface a warning when a malformed agent file is discarded (#752) (#976) (b7c9f26) resolve cwd at sample time so re-anchor updates git status (#877) (#973) (170f0fc) Changed make 350-line filesize check advisory (non-blocking) (#1003) (243e3dd) Fixed prevent ghost-text echo, stale cache across model swap (#1000) (3789159) Added slash-command autocomplete + highlighting in the browser composer (#966) (fc13cbf) Fixed pre-fetch changed files at reviewed ref before dispatching sub-agents (#1001) (783dbff) Added enforce a 350-line source-file ceiling with a ratcheted baseline (#999) (0c7d936) Added warn when markdown extraction retains little of the page (#997) (094dc61) Changed make DEFAULT_MODEL delegate to CLAUDE_SONNET_ID (#998) (c44eb90) Fixed classify a nonexistent grep path as no-such-target (#996) (e9a1e3d) withhold the conclusion, not the map; budget every verifier (#995) (7fa4f9c) Added two-tier OBSERVE/BLOCK split in safe-destruct PreToolUse detector (#992) (a4c81fc) Fixed opus 4.6/4.7/4.8 serve native 1M windows and 128k output (#994) (bbd4a13) Added make claude-sonnet-4-6 the default sonnet model (+ correct its 1M/128k limits) (#991) (d42eb1c) Added load Claude Code commands/*.md as slash commands (#965) (9003f5b) Fixed surface first artifact-write failure per subsystem without AFK_DEBUG (#850) (#979) (a57caab) Fixed refuse model-supplied roots that erase the bash credential floor (#852) (#978) (bc4c0f7) tell the model an invented tool does not exist, not that it lacks permission (#983) (2f503bf) Added add a pricing table so token usage records real cost (#865) (#981) (79303e8) Changed cover tool_call conditional spreads through both provider dispatch paths (#633) (#988) (cf797fb) Changed memoize getWriteDenylist keyed on AFK_HOME + AFK_STATE_DIR (#781) (#972) (023bdd1) Fixed rebuild the Environment block on cwd re-anchor (#876) (#980) (f4ae203) Fixed bound stopReason at a single chokepoint instead of 6 call sites (#717) (#977) (df150f8) Fixed warn once per malformed env var instead of once globally (#780) (#975) (4eafa92) Changed replace fixed-sleep races with vi.waitFor polls (#969) (97e6c67) Fixed surface max_tokens truncation instead of failing silently (#952) (#960) (03a9ca3) Added add conditional steelman critic to Wave 2 (#967) (b14b3df) Added positional $N arguments and fork-path substitution parity (#964) (370865e) Fixed harden max_tokens resolution across providers (#951, #953, #954) (#959) (dc39ca4) Added add afk web — local-first browser UI for live agent sessions (#932) (393010b) Changed bump @types/react-dom from 19.2.3 to 19.2.4 in /website (#958) (fb90013) bump @types/react from 19.2.17 to 19.2.18 in /website (#957) (5cce206) bump next from 16.2.12 to 16.3.0 in /website (#956) (5afad74) Fixed surface plugin shadowing notices on default runs (#963) (150367f) Changed bump the fumadocs group in /website with 3 updates (#955) (70d3886) Fixed wind down gracefully on the wall-clock deadline instead of aborting (#950) (391a0db) Fixed split severity from disposition and make medium blocking by default (#936) (70baf31) Fixed counted TTFB retry budget with shorter per-attempt bound (#945) (6d90dd8) Added capture subagent conversational output incrementally (#935) (662628e) Added register claude-sonnet-4-6 limits explicitly (#946) (7b96075) Added add session-scoped Opus Fast mode (#907) (2e3339f) Fixed render cost from the trace aggregate, not the sidecar (#933) (6882a06) Fixed bound every raw REPL write to the terminal width (#931) (d467583) Fixed stop generated build artifacts and symlinked dep trees from making worktrees immortal (#927) (8d9b6a0) Fixed tell research-agent about its registry grants, not just grant them (#928) (5e8da4f) preserve abort origins across provider teardown (#929) (69d0d57) Changed dissolve the src/telegram.ts monolith into src/telegram/ (#825) (#930) (79d8642) Fixed hold composed tool-lane rows to the shared reading measure (#923) (e922483) Fixed name the ignored entry that preserved a tree, and stop the test that manufactured them (#926) (6b9ef12) Fixed grant research-agent memory_search so the ground-state surveyor can reach the archive (#925) (5f227a4) normalize doubled-slash tilde before expandHome in read-denylist parser (#924) (cec3e51) gate the relocated mcp.json carve-out on builtin denies (#779) (#815) (b89148c) route /compact spinner through the compositor so typed input stays visible (#922) (1e485fa) Added flush queued messages into the running turn on Ctrl+B (#891) (ba80f40) make concurrency ceilings operator-configurable (#904) (189854b) Changed 9 low-risk /simplify --all cleanups (dead code + dedup + one tilde-expansion bugfix) (#893) (c9374cd) Added show config provenance and apply hot keys live in /config (#906) (522d4ba) AI-generated ghost-text suggestion at an empty prompt (#895) (a35bdaa) Changed Revert "refactor(cli): swap prompt and stage rail; goblin flanks the prompt (…" (#920) (6a8853f) swap prompt and stage rail; goblin flanks the prompt (#336) (#905) (febb3a8) Fixed remove wrap-boundary leading spaces (#903) (3a8054a) Fixed bill cache-creation residual outside known TTL buckets, clamp wire-sourced counts (#915) (f09c5bc) resolve dated wire ids for Opus 4.6/4.7/4.8 and Sonnet 4.6 (#914) (7a8a57d) Fixed dedupe cache hit-rate formula, fix cumulative-total mislabel, align field precedence (#916) (b283bfd) Fixed tell a forked child its tool-round budget at dispatch (#910) (99827c6) Fixed correct prompt-cache cost accounting and surface hit rate (#909) (c80e004) Fixed normalize blank optional arguments (#908) (0fea95c) Fixed make the pipeline's own signals honest + split improve.ts under the 350 ceiling (#901) (acba4f9) Added cap unbordered text at a reading measure instead of full terminal width (#899) (17cf472) Added add /afk-md to edit AFK.md overlays with live hot-reload (#887) (274ffc1) Fixed render auto-settle timeout as an error, not a green success (#902) (acfc8d4) Fixed resolve palette at call time so theme swaps actually reach the UI (#898) (4d09deb) Changed return the goblin mini-sprite to the transient left band (#336) (#900) (f0d78d6) Added reacting goblin mini-sprite in a constant right-aligned band (#336) (#888) (2f8bf9c) Changed extract shared runPreDispatchGates from execute/executeBatch (#896) (722cfcd) promote TurnTrace to providers/shared (#897) (e69dc3a) Added rank slash-command completions by recency, not alphabetically (#892) (a57ebdb) Fixed resolve tier-name pins before the cross-provider Claude-family check (#879) (2a19470) Added add an umber theme mirroring the Umber terminal's palette (#886) (1593bbf) Added make inbound images nameable and forwardable to subagents (#846) (e8bcbaf) Fixed make read-only bash refusals actionable and state the real shell dialect (#884) (1d01353) Added make AFK.md's user-scope fallback additive instead of exclusive (#845) (920724d) Changed correct stale provider claims in CLAUDE.md and sync with AFK.md (#880) (321a22b) Added propagate path-backed image attachments (#843) (18ac9a8) Fixed make the Workspace line follow a mid-session cwd re-anchor (#875) (a377607) Added choose keep or delete when quitting a -w session (#859) (66f5220) Fixed ground-state memory surveyor calls memory_search, not a dead path (#862) (#878) (0c5ba47) Added make the nesting-depth cap configurable via AFK_MAX_NESTING_DEPTH (#863) (6f8e33f) Fixed latch the dead-zone banner flush and close #867 review gaps (#874) (03224b1) Fixed stop fabricating filenames from relative paths (#872) (58a1e68) Changed split bootstrap.ts into 9 phase modules (#823) (#873) (8f28491) Fixed close the case-variant bypass of the credential floor (#736) (#819) (de0f295) Fixed close the 1.5s–30s live-progress dead zone (#857) (#867) (399e8fa) match rebuildable ignored FILES on the leaf, not the whole path (#799) (1362fab) Fixed re-dispatch a read-only child once when its stream is cut with zero output (#796) (542464e) Changed a named subagent dispatched without an explicit model now resolves to the Fixed resolve an omitted named-agent model to the policy default (#868) (99294da) Fixed tell a denied fork the remedy that actually works (#851) (1e885fe) Fixed make the pipeline's own instruments tell the truth (#847) (4cb26bc) Fixed render round denominator in progress banner (#857) (#858) (5bc00a8) Fixed render a deliberate tool refusal as blocked, not failed (#75) (#848) (e3f73e1) Changed bump @types/node from 26.1.1 to 26.1.2 in /website (#855) (c62558c) bump the fumadocs group in /website with 2 updates (#854) (9477a77) Fixed sweep every repo root known to hold managed trees (#761) (#771) (f237057) Added opt-in capture of parent→subagent dispatch prompts (#844) (c4b7696) Fixed grant confined forks read access to the agent-framework dir (#841) (fa271ee) Fixed make a running subagent legible instead of decorative (#840) (582b5a2) Fixed stop pixel art sharing rows with text so resize can't tear it (#842) (062a15a) Changed impact map for ADR 0002 item 2, and mark it rejected (#774) (f59e6bf) Fixed stop the TTFB bound firing on throttle backoff, and stop guessing why a stream ended (#839) (ad7c976) Changed extract constants + fork types from subagent.ts (#829) (#838) (4e0af66) Fixed reject newline/CR in rm-allowlist carve-out (#806 follow-up) (#835) (ee01384) Fixed alias /add-dir to /allow-dir (#837) (4e74dc6) Changed split scrollback logic out of terminal-compositor.types.ts (#826) (#836) (7347dae) Fixed gate orphaned-dir removal on age and content (#794) (#813) (27060bc) Changed split anthropic-direct/index.ts behind characterization tests (#824) (#833) (3bd13ea) Fixed allow curated in-workspace rm -rf in AFK autonomous mode (#579 O3) (#806) (13403f2) Changed extract a shared wireExecutors() factory (#822) (#834) (6ed0186) Changed cover openai-compatible manifest forwarding (closes #742) (#821) (4610e25) Fixed re-render the # Environment date line per turn in openai-compatible (#785) (#804) (f7665d1) Changed cover user-skills.ts fork path for skillDispatchName + anchor (closes #741) (#820) (3dfa4b4) Fixed refuse a tool call that keeps failing identically (#723) (#814) (7807e67) Changed split loop.ts into a modular loop/ subdirectory (#818) (8d11048) Changed run the vendored/bundled hash-pin gate on every PR (#775) (#817) (d4d5706) Fixed stop making the operator hand-recover from a usage-limit death (auto re-resolve credentials + /retry) (#811) (b017bc6) Fixed credit provider-paused time against the wall-clock ceiling (#797) (f6b33cf) Fixed fail the bundle build when a prompt read cannot be inlined (#776) (#816) (548029c) Added fold the fragment-goal signal class into intent-lock (#793) (c791d8e) Changed migrate hash-pin history blocks to docs/bundled-plugins.md (#790) (#809) (5ea1493) Changed close breadth-guard and warn-latch coverage gaps from #753 (#783) (#812) (a0be547) Fixed preserve the turn and bound a pause when mid-stream overload retries exhaust (#762) (#764) (7f5083c) stop annihilating whitespace-only text deltas and fusing round-boundary prose (#810) (9db7413) Changed fix dangling @link and restate ~60% orphan figure (#730) (#807) (73e8577) close three builtin-shadow warning coverage gaps (#746) (#808) (dcf22ba) Fixed carve ssh config + known_hosts out of read-denylist (#579 O2) (#805) (badd34a) Changed extract two named concerns over the 350-LOC ceiling (#782) (#801) (d7df7ea) add anthropic-direct query.test.ts for subagentId threading (#634) (#803) (49b8afd) Fixed accept common truthy values for TELEGRAM_VERBOSE (#683) (#802) (29b0903) Fixed stop a blank environment variable from permanently shadowing the real value in afk.env — a shell profile with export OPENAI_API_KEY="" masked the key in ~/.afk/config/afk.env (dotenv's override: false skip is presence-based, not value-based), so an OpenAI-compatible-only operator was told to "set OPENAI_API_KEY" for a key they had already set, after the auth chain fell through to ~/.codex/auth.json stop a blank env var from shadowing the real value in afk.env (#800) (91c80ce) Fixed keep the hanging indent when a list or blockquote token exceeds the wrap budget (#798) (532f78d) Fixed tick the status line on a 30s timer so the quota reset countdown and the stale-reading marker stay true on an idle session instead of freezing at their last event-driven paint stop the turn footer promising pause-and-auto-resume when the runtime will not deliver it — the promise is now conditional on autoResumeOnUsageLimit and on the reset landing inside the retry layer's two-hour wait ceiling schedule clock-derived quota repaints and condition the auto-resume promise (#791) (53c90e6) Fixed stop the sweep reaping live trees and discarding ignored files (#759) (#770) (16c4cd9) enforce the per-node tool budget by wind-down, not by killing the node (#772) (71e6560) Fixed regenerate the env-registry var count so scan:env:check passes (#792) (6b6b30a) Fixed refresh the system-prompt date line when the local day rolls over (#784) (180882f) kill the unbounded post-first-byte round with a progress-aware stall watchdog (#762) (#763) (219e0b6) Added warn in the turn footer once a subscription rolling window passes 80% used, with its reset countdown and the note that AFK pauses and auto-resumes at the cap make the subscription-usage indicator severity-graded and time-aware (#765) (42a7a13) Changed grade the status-line usage indicator by severity — per-window tone, the binding window's reset countdown, a stale-reading marker, and drop-last priority so a critical reading survives a narrow terminal (9d2b28d) Fixed block SSRF egress to internal hosts in web_scrape (#575) (#750) (8a9e586) preserve a failed skill fork's partial output (#767) (e7d8cad) Fixed stop the citation contract forcing a nested git dispatch (#726) (#777) (f94cbe7) Fixed clamp agent frame head rows to terminal width (#786) (03af774) Fixed bound grouped tool summaries to terminal width (#773) (d52dbf2) Fixed resolve the default create base at the calling session's anchor (#760) (#769) (b4192bd) Fixed follow AFK_HOME in the credential floor + reject overly broad subagent cwd/writeRoots (#753) (2675eaf) Fixed classify git worktree add and git clone as mutating in the read-only guard (#768) (e94e631) Fixed split ttfb_timeout out of the rate_limit phase (#766) (97d8e3d) Fixed send the extended-cache-ttl beta in api-key mode so the 1h TTL is honored (#757) (#758) (a4d973d) Changed pin the grow-eviction width-resize defect the #540 guards cannot see (#755) (b673c60) Fixed archive eviction paths as logical lines so scrolled-off content reflows (#540) (#756) (f21234b) Fixed drain bootstrap warnings after the startup screen clear (#745) (#751) (4f85988) Fixed latch launch failures so browser_* stops retrying a cold chromium launch (#722) (#748) (4819481) Fixed advertise presence for fresh sessions so Telegram AFK can discover them (#738) (575989a) re-check domain policy on the URL open() lands on (#576) (#749) (57af639) floor password-store and browser secret trees for reads (#735) (4c1b3d5) Added warn when an agent file shadows a read-only builtin (+ ADR 0002) (#739) (ce5ef4e) Fixed stop a skill fork from re-dispatching itself (#737) (963b85f) Fixed share the read denylist with the bash surface (#734) (1640f9b) Fixed flush logical lines to scrollback so resize reflow stops splitting words and dropping indent (#665) (71e5450) Fixed gate witness seal on a purpose-built fork marker, not the output cap (#725) (e3d392d) Changed drop no-op fill redaction, correct stale web/browser docs (#727) (6e1ee85) Fixed allow reads of ~/.afk/config/mcp.json (exact-file denylist carve-out) (#728) (b2f50c7) Fixed reach the chromium-missing install hint (#721) (#729) (dd39451) Fixed interleave ◦ progress lines into the live preview chronologically (#719) (4490337) Fixed route sub-agent lane and /bgsub width through getTerminalWidth (#720) (c7e5996) Added emit a blocked-on-human marker while an elicitation waits (#718) (ad596c8) Fixed thread traceWriter into phase forks so they emit lifecycle events (#696) (bb1e3e5) Fixed reap shipped worktrees and stop deleting branches that hold commits (#715) (5ac71b0) Added pid liveness + heartbeat + schema version on presence records (#716) (062079b) Added record stop_reason on subagent terminal rows and flag partial results (#713) (12691e4) Fixed emit hook_decision for silently-denied tool calls, attribute blocks to forks (#714) (2ec5df1) Fixed support history compaction on the openai-compatible responses wire (#653) (#700) (f9f3eb6) Added show subscription quota in the REPL status line (#712) (eb9a79a) Added add /usage command for Claude subscription quota (#711) (588d437) Fixed humanize live activity (#708) (916a369) Changed share AbortCoordinator across both provider query loops (#701) (ad8709d) Changed scope the advisory windows leg to push/label/dispatch instead of every PR (#709) (9bc7ee4) Fixed bound and latency-gate ◦ tool-progress lines (#702) (c30066f) Changed bump react-dom from 19.2.7 to 19.2.8 in /website (#706) (bdd50f6) bump the fumadocs group across 1 directory with 2 updates (#704) (e29ee44) bump react from 19.2.7 to 19.2.8 in /website (#705) (d953088) bump next from 16.2.10 to 16.2.12 in /website (#707) (70d128b) Fixed colorize aliased slash commands (e.g. /quit) as brand, not dim (#698) (ca5cd51) Changed pin Opus 5 effort/thinking/pricing behavior and correct stale opus comments (#699) (e71fbce) Fixed coerce Claude-family child models onto the parent model under openai-compatible routing (#652) (#693) (62df42c) Fixed anchor git verbs to subcommand position + wrapper/indirection handling (#577) (#697) (b9973e7) Added record resolved agent_type distinctly from the render label (#695) (4b0f726) back the grep tool with bundled ripgrep for cross-platform support (#690) (3472496) add Claude Opus 5 as the opus/large default (#694) (43097ce) Fixed make ** match zero path segments (root-level files) (#692) (944382f) Fixed port diagnose/shadow-verify/devils-advocate refinements from private plugins (#691) (87b6ccf) Changed drop dead setOnBackground setter + fix stale doc (#682) (#689) (b69f4ec) Added openai-compatible ESC-halt parity + interrupt-halt trace event (#677) (7055df6) Changed Delete Star History section from README (bdae56b) Added harden handoff against mid-stream truncation (#678) (c60dec0) Added inject reply & quote context into inbound messages (#688) (50606c0) Added attribute inbound group messages with the sender (#685) (67fb8b5) Changed /simplify wins for the terminal-compositor pair (#682) (#684) (afd3eda) Fixed ESC interrupt halts promptly and never strands the next turn (#676) (e108475) Added per-target chat selection for send_telegram + scheduled tasks (#681) (0d0a50e) Added per-chat tag-only response policy (#680) (f0f52d9) Added non-convergence stop criterion in sub-agent contract (#679) (2daf898) Added progress-aware idle watchdog for forked turns (#672) (74543b6) Added self-reported convergence/stop criterion for general-purpose (#675) (cc68e72) Added bound general-purpose subagent with a generous tool-use ceiling (#673) (5e2974e) Added show stopping state + queued count on ESC soft-stop (#646) (6fda98f) Added add a light theme for the TUI (theme: dark|light|auto) (#643) (d9b42a9) Fixed seal witness trace only from the top-level session (#666) (b98f911) Added edit a previous message — /rewind + double-Esc conversation rewind (#668) (d80601b) Added tool-result microcompaction to reclaim context on short-but-full sessions (#671) (9b7b3ec) Fixed count commits vs main HEAD when meta has no baseSha (#670) (97b3619) Added stamp a provenance header on cross-model subagent results (#656) (71b8601) notify the model when its provider is swapped mid-session (#655) (39a9ef7) token-aware keep-window so /compact works on short-but-full sessions (#667) (c5b6354) Added additive readRoots param on the agent (subagent-dispatch) tool: grant a forked child READ access to absolute paths outside its repo/worktree (e.g. ~/Downloads, a scratch dir), composed WITH (never replacing) its inherited read scope — writes stay confined, grandchildren must be re-granted. Hardened at parse time (rejects filesystem roots, the home dir / its ancestors, and read-denylisted credential paths — evaluated on symlink-resolved targets, so a symlink to a broad dir can't slip past the lexical check) and, unlike writeRoots, permitted alongside isolation:"worktree". Flows through the distinct AgentConfig.extraReadRoots field so the afk farm read-scope pin is untouched. (#662) add additive readRoots param to the agent tool (#662) (#664) (aa327ab) Fixed bound web_scrape + tool output to prevent subagent context overflow (#663) (4556645) Fixed eliminate scheduler.test.ts cron-timer leak causing flaky duplicate mcp_connect_done (#657) (#659) (0639378) Changed bump the fumadocs group in /website with 3 updates (#658) (b6e99dc) single-pass line nav + memoized input colorization (#649) (10787a8) Added /editor handoff to $EDITOR seeded with input buffer + Ctrl+O chord (#651) (3a89afd) Changed async at-file autocomplete scan with per-dir cache + stale guard (#648) (bd99a34) Changed coalesce same-tick keystroke repaints with sync flush (#645) (d15db56) Added terminal title (OSC 2) + opt-in completion notification (OSC 9) (#647) (3d1d451) Added /search over session turns with jump-to-last-error (#650) (145dc22) Fixed coalesce post-ESC type-ahead across the teardown boundary (kill lone-"." input lag) (#644) (607c052) Fixed reserve cyan for user identity (dropdown selection + inline code) (#642) (34dc3e2) Changed add "Build with the SDK" guide for the programmatic library surface (#640) (02e44f1) Fixed make the REPL status line legible — visible context bar, brand caret, tiered tones (#641) (5f404ae) Fixed resolve stale plugin-namespaced contract ref in research-agent prompt (#639) (430bc98) Added surface OAuth usage-limit pause/resume as witness trace phases (#638) (f6a7965) Changed route CLI/TUI styling through the semantic palette + guard against drift (#637) (12bcf9c) Added feed redacted session context to Tier-2 ghost-text suggester (#636) (c66e724) Fixed surface stream-incomplete as an error, not a silent truncated turn (#635) (efe7ed0) Changed extract shared tool_call payload builders (#631) (edc8734) Fixed reserve claimedChats in processOne to close drain-path TOCTOU (#603) (#630) (23aa604) Added tag forked-child tool_call events with subagentId (#612) (#629) (972b109) Added welcome-banner polish — v14 goblin, tagline, reacting spinner (#239) (b8815b8) Changed Delete docs/telegram-bug-investigation.md (1fb2aa6) Fixed hard-fail phases on incomplete subagent result (capped / stream_incomplete) (#627) (8ac9b40) failed cleanFinal delivery no longer re-sends a contradictory overflow tail (#623) (#626) (e2bd0bd) resolve zero-output stream-incomplete run as failed, not succeeded (#628) (99952ee) Added deliver SessionStart injectContext to the first turn (#618) (d0dbdc4) Changed remove inert model: frontmatter from vendored agent prompts (#625) (a34216f) switch star history to sealed-token chart embed (3164563) add placeholder demo image above the fold (#624) (172253d) real-PTY width-resize harness + RED axis-2 fragmentation guards (#540, #541) (#621) (c64b69f) Changed docs/skills: scope test commands in fix briefs + templates (avoid pnpm test -- footgun) (#611) (#617) (137ce5e) terminal-state gate integration + /clear-budget scope doc + firing observability (#565) (#616) (8eb0396) cover disconnectAll swallow + telegram/daemon construction-throw teardown (#247) (#615) (c9450af) e2e read_file/glob/grep + write-confinement through live child dispatcher (#440) (#614) (8ed1053) add unit tests for closure-emitter and ledger-lifecycle (#526) (#613) (a16e515) tolerate npm's retired audit endpoint (HTTP 410) in audit:deps gate (#619) (afb51a9) Fixed stop long replies being silently truncated mid-sentence (#620) (920bd6f) Changed AFK mode: let an away operator actually go AFK (elicitation fixes + Telegram-native host v1) (#608) (cdff313) Fixed env-configurable timeout + raise default to 45m; observable forked children (#610) (33bb4bf) Added discover and run Claude Code plugin hooks.json (#70) (#607) (930a5c2) Added opt-in "Done" verification — downgrade unbacked daemon completion pushes (daemon.verifyDone) (#609) (e8a5ea5) Fixed make --plain / AFK_PLAIN_OUTPUT a full render opt-out on TTY (#606) (b1347d2) Changed place # Agent AFK doctrine before memory and skills in assembled prompt (#605) (6def730) Added opt-in bounded session primer (AFK_COMPANION_PRIMER) (#590) (a708ef4) Fixed replay saved transcript on /sessions switch (thread resumeHistory + sessionId) (#604) (b8673b7) Changed BREAKING : AFK_ALLOW_PROJECT_MCP default flipped from opt-out to opt-in. Previously <cwd>/.mcp.json auto-loaded unless set to 0; it now loads only when the variable is explicitly truthy. Users who relied on auto-loading must set AFK_ALLOW_PROJECT_MCP=1. (#571)gate project-local .mcp.json spawn behind opt-in consent (#571) (#600) (bab9887) cover teardown error paths — spawn-failure disconnect, telegram catch, fromConfig throw (#247) (#591) (2accc48) Fixed run agent turn detached so mid-turn elicitations don't deadlock the poller (#602) (8146958) Security project-local .mcp.json is now opt-in (fail-closed): its MCP servers are no longer auto-spawned on any surface unless AFK_ALLOW_PROJECT_MCP is truthy (1/true/yes/on); when present but not opted in, the skipped server names + commands are listed in a startup warning with the opt-in instruction. A .mcp.json whose real path escapes the working directory (symlink / ..) is refused outright. (#571) Added local usage-analytics report (afk insights) (#353) (ff78f72) Added add opt-in plain/append-only output mode (AFK_PLAIN_OUTPUT) (#593) (ce0480a) Changed sync model-slots & providers pages with #548 (#601) (2b19808) Fixed classify fork wall-clock timeout as failed, not cancelled, so bg timeouts reach the parent (#465 follow-up) (#596) (61e685e) Fixed bound read-only research agents + degrade empty no-terminal run to a marked partial (#597) (a39b1ff) Added proactive escalating context-window warnings (#594) (291b73f) Added auth-aware model availability labeling (Phase 2; follows #548, now merged) (#588) (2c4a723) Added surface provider rate-limit/backoff live in the progress banner (#595) (08b47a7) Fixed elicitation URL-mode cancel guard + swallowed errors + UX cleanup (#502) (#589) (3aca90a) Added fail-fast denial circuit breaker for forked read-denial spins (#546) (#592) (d2cff2f) Changed lazy-load jsdom to cut ~35% off CLI cold-start (#587) (0e9198e) Added OSC 52 clipboard fallback for SSH+tmux (closes #563) (#582) (f9f84d9) Added first-class per-slot chatgpt-oauth provider (#548) (d3cbf51) Changed document Stop shell-hook additionalContext reaching the next-turn prompt (#585) (12cc0f3) cover first-turn image-echo in BOTH headless + real-PTY harness (#509) (#509) (7d2d77e) Added bound time-to-first-byte with a configurable per-request timeout (#583) (#584) (a9d3640) Added multi-session support — session-registry foundation + /sessions switcher (#562) (da1cd03) Fixed fail closed on unknown parent provider in fork credential fallback (#438) (#580) (69b0a8b) Fixed stop over-blocking recon that quotes a git/gh/curl verb (#574) (66a7cf7) Fixed resolve parallelize-dispatch subagent credential per child model (#444) (#569) (e556426) Changed retire committedBandTopRow erase-loop reads in frame-preserve (advances #540) (#573) (9f7985c) Changed extract buildSkillForkManager to de-dup the two per-call fork managers (follow-up to #469) (#572) (bf1b26e) Changed add note on using /service-setup for daemon persistence (#567) (3f09eec) Fixed thread surface into skill-fork managers so forked skills get correct trace origin (#469) (#568) (0eed46b) Fixed render-not-repin — erase committed band from the anchor floor (Stage 2 core, #540) (#552) (8112051) Added main-session Stop injectContext + terminal-state gate (#237) (#557) (adb5c1f) Changed extract computeContainment SSOT for resolveAndContain + wouldBeRestricted (#561) (1d13445) Fixed stop redacting git object names (SHAs) as opaque secrets (#549) (58e506f) Changed lock in injectContext throw-path keep-drop decision (#392) (#550) (225b893) Fixed propagate parent read scope to skill/inline/compose forks (#547) (#556) (60f2254) Changed remove redundant /save slash command (#559) (d005cec) Added C4 bash handler now runs a best-effort, advisory-only readRoots/writeRoots path-containment scan before spawning: absolute and home-relative path tokens are extracted from the command and checked against the session's write roots, emitting a one-time [security] warning + tool.bash_path_escape telemetry (counts only, no command string) when one escapes — but never blocking execution (warn-only, to preserve the top-level afk -w bypass workflow). Rationale, threat model, and residual gaps documented in docs/decisions/0001-bash-tool-path-containment.md. Full execFile/sandbox containment remains deferred (tracked C4). (#354)Changed best-effort readRoots/writeRoots path scan + ADR (closes #354) (#558) (256ccd7) real-PTY scrollback harness for the compositor (#541) (#553) (11fb1eb) Fixed honor unconfined resolveBase in the hook + add read-denylist floor (#560) (f62a960) Fixed grant ~/.afk/state to confined forks; harden worktree main-root fallback (#554) (5b63f2b) Fixed don't cache config past a parse failure; gate importFrom via user-global allowlist (#501) (#551) (a678b81) Added detect forked sub-agent read auto-denials (f10df60) badge NESTING roots in committed scrollback (#532) (0c69100) Changed Merge pull request #545 from griffinwork40/fix/subagent-read-denial-detector (e6b333d) Merge pull request #543 from griffinwork40/feat/scrollback-nesting-root-batch-badge (c5b8a0a) dim NESTING-root closer base in composer, not render site (0ea46e0) Fixed eliminate end-of-turn report/table void on overlay collapse (#539) (4898a2c) Fixed restrict read-only depth-cap forks to declared tools + honor plugin model: (#499) (#542) (2f7dc7e) Added Linux systemd --user support behind a platform-neutral ServiceManager (#515) (25bd80c) Fixed inherit parent read scope for forked sub-agents (#544) (94298d7) Fixed restore worktree cwd when resuming or forking a session (#535) (a1ea133) Fixed stop redacting long filesystem paths as opaque secrets (#533) (57cb592) Added openai-compatible: honor server retry-after / retry-after-ms on 429/503 backoff instead of blind exponential (parity with anthropic-direct) (#536) mirror source tool enabled/disabled state for imported plugins (#537) (2df91f4) honor retry-after on 429/503 backoff (#536) (#538) (e4e3bf2) Added app-like TUI — /config settings menu + /model & /resume pickers (#506) (7cf6c0b) Fixed guard NaN config + non-string systemPrompt + unmask registry-skill errors (#534) (edfcd64) Fixed resolve path-approval grants per executing session (#435/#514) (#527) (01632cd) Added observe-only release-boundary PreToolUse detector (gate-migration wave 1 slice 2) (#524) (7f5a4fc) cross-provider history compaction (#517) (d44cc30) Added distinguish parallel vs sequential tool dispatch with ∥i/N batch badge (#520) (f617893) Fixed give read/write/edit/list the factory-cwd resolve tier glob/grep have (#434) (#522) (a4be744) Fixed flatten multi-line bash summaries in the tool-lane label (#511) (ea3b9c0) Added auto-resume idle REPL when a background subagent completes (#518) (2a1d374) Changed bump @types/node from 26.1.0 to 26.1.1 in /website (#531) (7e1baef) Changed dedupe runIteration's two wire branches (#365) (#525) (db03f41) unify system-prompt assembly into query/system-prompt.ts (#362) (#523) (5c5cf97) bump the fumadocs group in /website with 3 updates (#529) (be2459b) Fixed classify AFK gate writes by tool cwd (port afk-workshop#836) (#512) (fd7e3ab) Changed extract closure-emitter, ledger-lifecycle, plan-exit-bridge (#364) (#519) (040403a) Fixed explicit writeRoots grant + truthful deny for forked children (#514) (360b999) Fixed refresh lastMeasuredFrameTop in the picker repaint path too (#513) (0c83bfa) Fixed label subagent tool-call tallies "N tool calls" not "N tools" (#508) (2f1c857) route commitAbove on the real measured frame top, not the shrink-padded one (#505) (60a664b) Added seed the REPL from a launch argument (afk "prompt" / afk /review) (#510) (ae561dd) Fixed decouple bash/grep output kill-cap from model budget; keep head+tail (#507) (dda24b2) Changed Merge branch 'main' of https://github.com/griffinwork40/agent-afk (589d1b0) removed stale ref to legacy import (7f147e9) split terminal-compositor.test.ts monolith into topic siblings (#369) (#498) (1f89e9e) Fixed keep the update-notifier fresh instead of ≤24h stale (#504) (f9225b5) Fixed mirror exit_plan_mode's deferred flip onto stats.permissionMode (#495) (#497) (2710e6b) Added classify usage-limit 429s via anthropic-ratelimit-unified-* headers (#488) (#490) (a43dab4) Changed extract dispatch-batching + repeat-circuit-breaker from dispatcher.ts (#361) (#496) (045f1de) Fixed surface deps-not-installed note on create (#479) (21375e9) Fixed cap session-grants.jsonl growth with atomic size trim (#473) (5a7d3db) Added observe-only safe-destruct PreToolUse detector (gate-migration wave 1) (#492) (a442571) Changed split config.ts into tier modules (#368) — checkpoint (#493) (db9e42c) Changed consolidate 3 grant-manager copies into shared module (#361, #362 prep) (#489) (e2b745c) split skill-executor.ts into per-strategy modules (#363) (#491) (2a24d2f) Added first-class isolation:"worktree" for the agent tool (#487) (7941226) Fixed route long/absent-retry-after 429s back to the usage-limit pause path (#483) (34a09c5) Changed split elicitation-repl.ts into mode modules (#367) (#484) (c3e39d6) Changed split plugin-skills.ts into flags/listing/reload modules (#366) (#486) (cd37ef1) split loop.test.ts into sibling suites (#370) (#485) (708c4ff) Added ask-question PreToolUse gate + orphan root-settings warning (#477) (362d05b) Changed retire vendored TS orchestrator for bundled SKILL.md (#480) (88a77db) mark AFK_MAX_TOKENS / maxTokens as deprecated and inert (#482) (f37b0a9) Changed cover in-turn SubagentStop injectContext append (#391) (#481) (73e8644) extract appendInjectContext helper (#393) (#478) (b0cbbed) Added GPT-5.6 model family support for the openai-compatible provider (reachable via add GPT-5.6 family support to openai-compatible provider (#474) (068d910) Fixed Telegram: don't guillotine long agent turns at 90s — disable Telegraf's default handlerTimeout so the purpose-built streaming.ts inactivity watchdog is the sole timeout authority; fixes the spurious "❌ An unexpected error occurred. Please try again." shown while a turn (sub-agents, web_scrape, long tool calls) was still running and would complete make witness traces correlatable to sessions via ledger meta (#476) (4a7833f) disable Telegraf 90s handlerTimeout so long turns aren't guillotined (#475) (1e80771) Fixed space out ⚡ glyph and bp tag in bypass prompt caret (#472) (32ea78d) Fixed #441 robustness cluster — grep cwd-error enrichment, subagent cache invalidation, worktree-root debug log (#471) (fe19cb5) Changed generalize o-series predicate to reasoning-model contract (#463) (fad5e64) Changed negative coverage for flag-like/path-traversal base refs (#398) (#458) (badf06f) Fixed surface capped/truncated partials to the parent instead of silent success (#461) (9cfddd0) Fixed Witness-trace origin attribution for forked subagents: agent-tool and compose child (and grandchild) sessions were made trace-visible in #466 but recorded origin: "unknown" instead of the owning surface, because the session surface was never threaded into the fork managers (only traceWriter/cwd were). The REPL/chat/Telegram/daemon root managers, the nested depth-2+ child manager, and the compose executor's manager now carry the surface, so forked children inherit the correct origin (cli/telegram/daemon) via forkSubagent's parentSurface fill — mirroring the existing farm.ts pattern. Follow-up to Codex review on #466. (Skill-forked subagents share the same latent gap and are tracked separately.) thread session surface into fork managers so forked subagents get correct trace origin (#468) (b86fdb5) Fixed fix wrap overflow + bound and label the diagnose verifier fan-out (#470) (227a99e) Fixed Messages typed during the ESC soft-stop settle window now merge into one next turn instead of last-wins replacement. The #403 coalescing kept only the latest post-ESC message, so a real instruction followed by a "." liveness poke silently dropped the instruction — the "it didn't send" report, round 2. All post-ESC messages now join (newline-separated, attachments concatenated) and run as exactly one next turn; the no-backlog invariant and the pre-ESC queue-preservation contract are unchanged. merge post-ESC type-ahead instead of last-wins so soft-stop never drops a typed message (#467) (064ea20) Fixed tolerate indented fences in isInOpenCodeFence parity check (#464) (ec31016) Fixed agent-tool and compose subagents are now visible in the witness trace (afk trace show). Three gaps closed: (1) forkSubagent resolves the trace writer as per-fork config → manager-level writer, so the subagent_lifecycle started/succeeded/failed/cancelled events and the handle's writer no longer silently drop when inheritance came from the manager; (2) the REPL/chat/Telegram root managers and compose executors now carry the session trace writer; (3) the writer chains through nested child managers (depth ≥ 2 agent forks), mirroring the existing cwd chain. Previously a raw agent dispatch produced zero trace events between tool_call started and completed — a stuck child was indistinguishable from a never-started one.make agent-tool and compose forks visible in the witness trace (#466)do (a41a7d3) Changed consolidate o-series detection into one predicate (#457) (db71f16) Fixed Forked subagents no longer hang their parent indefinitely: every fork now gets a bounded wall-clock budget by default — 20 min foreground (SUBAGENT_DEFAULT_TIMEOUT_MS), 60 min background (SUBAGENT_BACKGROUND_TIMEOUT_MS) — instead of the unbounded session default. On expiry the child's controller aborts (cascading to descendants) and the parent receives a legible timeout error. Explicit timeoutMs wins; 0 restores unbounded. Forked subagents now fail fast on OAuth usage-limit pauses (autoResumeOnUsageLimit defaults to false for forks) instead of silently polling for reset — up to 2 h — while the parent looked frozen. The classified usage-limit error surfaces to the parent, which decides whether to retry, reroute, or surface the pause. Callers may opt a child back in with an explicit autoResumeOnUsageLimit: true. bound fork wall-clock budget + fail fast on usage-limit pauses (#465) (1516e65) preserve empty-fence label when the safety net strips emphasis (#456) (64ddd04) thread openaiBaseUrl so OpenAI Telegram sessions reach the configured endpoint (#459) (e674621) Added New opt-in AFK_MAX_TOOL_USE_ITERATIONS env var sets a top-level tool-use-round ceiling for both providers (mirrors the maxToolUseIterations config key / max_tool_use_iterations tool param). Unset/<=0 = unlimited (the default — zero behavior change); a positive integer N winds top-level turns down gracefully after N rounds. An explicit config value wins over the env default. Subagent forks are unaffected — they keep their own 50-round anti-hang default regardless of the var. Restores an operator brake for runaway top-level tool loops without reintroducing a default cap or provider drift. extend tool-loop cap + graceful wind-down to openai-compatible (follow-up to #448) (#454) (b0e85c7) Changed The tool-round cap (max_tool_use_iterations) and its graceful wind-down now apply uniformly to both providers. openai-compatible previously ignored the setting and hard-capped every turn at 50 rounds; it now honors maxToolUseIterations like anthropic-direct. Consequence: top-level openai-compatible sessions are now uncapped by default (aligned with anthropic-direct) — the 50-round anti-hang default still applies to subagent forks of either provider. The shared cap/wind-down policy (constants + resolveMaxToolIterations/shouldWindDown) now lives in providers/shared/tool-loop-cap.ts, so the two providers can no longer drift. Add AFK Dark theme for Terax (#460) (c9bb8f4) calm REPL chrome (glyph mode marker, idle rail, cwd/branch dedupe) (#447) (d1bd410) extract runIteration concerns into query/ modules (#453) (a04e781) extract query() concerns into query/ modules (#452) (1c16f81) dedupe elicitation validators into field-validation module (#451) (a7f2457) Fixed openai-compatible now runs the same tools-stripped "wind-down" round as anthropic-direct when the tool-round cap fires (previously it fell through to a possibly-empty final message with no cap signal), and stamps tool_use_loop_capped so the closure classifier reports iteration_cap for openai-compatible turns too. align getApiKey() default-model resolution with getModel() (#455) (667951e) Added uncap turn/tool-use budgets by default; graceful wind-down on cap (#448) (1ba29e7) persist thinking-ui default via AFK_THINKING_UI + interactive.thinkingUi (#445) (7a1f403) Changed agent tool subagents are now uncapped by default and settable per dispatch: max_turns defaults to unlimited (was default 10, hard-clamped to [1,50]) — pass a positive integer to cap. Added a max_tool_use_iterations param and a matching maxToolUseIterations agent-frontmatter field (both default unlimited on the agent-tool path). Skill/compose internal forks keep the 50-round anti-hang default; openai-compatible models retain a provider-internal 50-round cap regardless.fix stale budget-contract expectations + tool/memory schema mocks (cbb4c32) add direct unit tests for extracted subagent/ modules (#446) (947739f) extract execute() into subagent/ modules (#443) (070ded6) Fixed Hitting the tool-use iteration cap no longer ends a turn silently (which read as a hang / empty subagent result). The anthropic-direct loop now runs one final tools-stripped "wind-down" round so the model synthesizes a real answer from what it gathered, and the closure classifier maps the capped stop reason to iteration_cap instead of silently sealing it as a clean model_end_turn. audit grant only on state change to stop session-grants.jsonl bloat (#449) (ed95705) warn for stale-clean worktrees (#450) (3223077) delete swept branches + stop reaping live-session worktrees (#371, #380) (77f6e72) resolve subagent credential per child model, not ambient (#378) (#431) (7e6b90c) stop glob from descending node_modules/.git; add multi-** tests (#436) (#442) (97a6b40) stop shadow-verify nudge self-triggering on verifier verdict output (#355) (#433) (7d81612) reject flag-like worktree base refs (#428) (fcfc830) warn for stale-clean worktrees (#430) (0c61247) require commits ahead for stale-clean worktrees (#429) (1987415) Fixed patient 429 retry-after handling + surface stopReason on SubagentResult (#427) (d535c79) Fixed scope the bash interpreter-eval guard to credential-adjacent payloads (#424) (8eb2622) Added add digest thinking-display mode (live preview + persisted reasoning) (#426) (6740847) Added plugin-contributed agent scope + scoped nested dispatch (#423) (249c27c) Changed remove /reset slash command; fix stale /clear docs (#425) (ea1950c) Fixed resolve project plugins against session cwd (#179 follow-up) (#418) (7317aa4) Added accept per-slot model binding objects in config_set (#409) (6c6c81f) Changed bump @types/node from 22.19.19 to 26.1.0 in /website (#422) (0f5d4e8) bump next from 16.2.9 to 16.2.10 in /website (#421) (438ca42) bump @types/react from 19.2.16 to 19.2.17 in /website (#420) (20e0bd7) bump the fumadocs group in /website with 2 updates (#419) (fcd018d) Fixed grant main-repo read root to worktree subagents (#416) (205612e) resolve project skills against the session cwd (#179) (#375) (4919343) Fixed make exit_plan_mode live-mode-gated + restore working mode across the Shift+Tab ring (#410) (99468d8) Added add /thinking slash command for mid-session thinking-UI toggle (#415) (49eb8c8) Changed collapse duplicated dispatch + skill-fork logic (#408) (2159df2) changed several bundled skills to load mode (dfdb8d5) Bump version from 1.0.0 to 1.0.1 (e8d57ee) Change context from 'fork' to 'load' in SKILL.md (5d0a595) Fixed thread openaiBaseUrl into restricted provider builders so deep OpenAI subagents keep their endpoint (#413) (26cd2e1) gate exit backstop on persisted seal record, not optimistic sealed flag (#171) (#402) (d6dbb5f) Fixed surface silent 429/503/529 backoff in trace; fix transient rate-limit 429 misclassification (#414) (5dbc55b) Changed isolate vitest state writes from real ~/.afk (#411) (9f6b634) bound default-sonnet cost via auto-compaction budget (keep truthful 1M); split openai-compatible/query.ts (#407) (37a878d) Fixed coalesce post-ESC type-ahead so soft-stop doesn't strand input one turn behind (#403) (937772e) Fixed stop double-rendering finished subagents in the REPL overlay (#405) (71a6bdc) Fixed make SKILL.md context: authoritative; drop DEFAULT_FORK_SKILLS (#404) (023cf51) Fixed report a clean git tree as dirty:false, not null (#389) (78c4083) Added named agent definitions with agent_type dispatch on the agent tool (#384) (c9f6040) Changed update AFK.md with new commands and architecture details (d31cfc6) Fixed name dead-cwd spawn failures and fork-enforce bundled skills by name (#399) (1ee5d81) Fixed reflow committed band at paint-time width; fail-safe commits on stale resize geometry (#386) (f75d8a4) Fixed expand ${PLUGIN_ROOT:-fallback} idiom in load-mode substitution (#401) (a13ff98) Fixed bound forked-child tool-use loop to prevent parent hang (#394) (a645cab) bound subagent fan-out in compose/DAG layers and runWave (#385) (52f8a7c) fire SubagentStop for naturally-completing background subagents (#388) (d9832e7) Fixed cancel in-flight foreground subagents on soft-stop (ESC/Ctrl-C) (#400) (1e838d1) Added lifecycle tool + sweep fix for agent-managed worktrees (#390) (eaa561d) Added deliver SubagentStop injectContext in-turn via the subagent tool_result (#387) (a407d35) Added grounded progress banner — real activity instead of mechanism noise (#373) (f475744) Added collapse sequential same-tool runs into one grouped ×N row (#379) (ac9c609) Changed remove verified dead code across src/ (Tier 1 audit batch) (#382) (d7c4056) Fixed deliver SubagentStop injectContext with the next user message, not as its own turn (#359) (c2d5078) Added auto-deliver background subagent results into the next turn (#372) (0c92c7c) Fixed close AFK-mode coverage gaps + clip afk-push rawBody fallback (#200) (#357) (ad5e64a) Fixed close reverse-direction forkSubagent credential leak (#377) (a30cd61) Fixed bound foreground safe-batch tool concurrency (#376) (cb9fe2a) Fixed approve better-sqlite3 native build script for pnpm 10 (#383) (001b864) Fixed thread defaultSubagentModel through nested skill executors (#381) (35e922b) Fixed evict project-origin skills when cwd changes (#179) (#356) (89c358b) Changed add docs/mcp.md — MCP config, transports, OAuth, security (#180) (#358) (566513d) Fixed close forkSubagent cross-provider credential leak (#374) (9294525) Fixed keep the typing indicator alive for the whole turn (#352) (819ad6c) correct stale commit geometry (#351) (002bcd1) normalize canUseTool gates to AFK runtime tool names (#350) (0d1fca6) Fixed close abort TOCTOU so an in-flight child is killed, not orphaned (#349) (ca2d948) Fixed suspend stream watchdog while a foreground tool is in flight (#348) (f06fc78) Fixed concatenate injectContext across non-blocking handlers instead of last-wins (#345) (fffb8e1) Fixed close 2-segment MCP verb-gate bypass from PR #339 review (#347) (c3133ed) Added swap default sonnet alias to claude-sonnet-5 (#346) (da492d4) Fixed classify MCP/browser/schedule/web tools so AFK gate covers them (#198) (#339) (245aee2) Changed drop dormant forge/briefs plugin couplings from core (#344) (695c49d) isolate vitest suite from ambient AFK_* config env (#343) (467da83) Fixed dedup repeated quarantine log noise for poison entries (#252) (#341) (28e01e5) Added emit mcp_connect_* trace phases on daemon surface (#248) (#338) (438b466) Changed real-world examples and a Bundled Skills reference page (#340) (bb3a93b) Fixed suspend input + pause stdin before /transcript pager (#342) (28db0e0) Added inject session-facet substrate into PluginApi (11→15) (#337) (07fbec6) Added inject runtime values into PluginApi for code-backed plugins (#335) (337f118) Added agent browser autonomy MVP (session vault, park-and-notify, retrying fetch) (#323) (ff676af) Fixed always allow exit_plan_mode on top-level surfaces (REPL/chat/Telegram) (#334) (14867a3) make agentType required on ForkSubagentOptions; add to all callsites (#330) (f281e79) Fixed refill the viewport after end-of-turn collapse of an over-tall block (#332) (a0cbf3c) Added inject host runtime API into plugin entrypoints (fixes singleton trap) (#324) (4cd187b) Changed extract shared helpers into providers/shared (#329) (4d557aa) Fixed wire grant manager for OpenAI-compatible providers in REPL bootstrap (#316) (1648120) Added trace skill-forked subagent tool denials + receipt refusal tally (#333) (6cbcee6) Fixed stop JSON.parse error snippets leaking secrets in poison logs (#318) (0290797) Added emit PreCompact hook on auto-compaction (#328) (eba1ef9) Changed bring Fumadocs site up to date with code (#331) (729e986) Fixed honor trailing-backslash newline escape on the live TTY path (#325) (9ffc326) never emit improperly-nested HTML from interleaved emphasis (#321) (b0c1233) wrap schema migrations in transactions to close torn-state window (#319) (74b5c41) Added add list/remove/clear subcommands + document improve & farm in README (#327) (cfea104) Changed add dependency-vulnerability audit gate (#326) (6a1f1d7) Fixed interrupt provider turn on ANY incomplete stream exit (#320) (cd45b61) Added wire canUseTool into the dispatcher — Agent SDK parity Dim 8 (increment 1) (#304) (f0ee88b) Fixed restart launchd services + notify on stale manual bot after install (#322) (c40729a) Added restore pre-plan permission mode on exit (#306) (1cbf61b) Changed bump typescript from 5.9.3 to 6.0.3 in /website (#315) (758303b) migrate docs site to Next.js 16 + React 19 + fumadocs 16 (#317) (56dc929) Fixed don't silently exit plan mode on /afk off (#311) (55864c8) Added load plugin entrypoints on chat/daemon/telegram surfaces (B4) (#308) (004ec25) add optional baseDir to loadSkillPrompts for out-of-tree plugins (#307) (77a07d3) Added export framework skill/facet API for out-of-tree plugins (#305) (8905788) Changed cover pull-queue poison fallback + collision-retry branches (#313) (4e57cdc) backfill 4 uncovered scraper/render branches (#312) (fb6c480) add Dependabot coverage for website/ npm deps (#309) (f52a161) Fixed redact filename in pull-queue quarantine log lines (#310) (213d20f) Fixed surface most-recent tool-groups instead of burying them in overflow (#303) (93bb246) Added high-risk AFK gate routes approve/deny to the phone (Phase 2 v1.5) (#294) (9e94126) Changed silent-model-loop debuggability issue + recommendations (#302) (b458191) Added Agent SDK parity — query() entry, in-process tool(), main-turn structured output (#300) (1a1025c) Fixed width-cap the markdown message-fallback render path (#301) (92093f5) Added plugin JS main entrypoint run at session boot (#298) (c956398) Fixed don't default the daemon task to an unavailable skill (#299) (7bf2742) Added retire /bypass, add default badge, steer exit to exit_plan_mode (#286) (a38a566) Added model-callable exit_plan_mode tool with elicitation picker (#285) (a961ae7) Fixed stop the second streamed table from rendering broken (missing header/lines) (#296) (9cb4880) Fixed re-point backend on a same-family /model switch to a different endpoint (#297) (38975c1) Added add PreCompact hook event (#283) (aa25b10) Fixed subset advertised tool schema to permission allowlist (#295) (331ae7b) Fixed don't send Chat-Completions max_tokens on the Responses path (#293) (f6ed619) Fixed don't fire path-approval prompts in AFK mode (#292) (97dda5e) Added afk trace show now surfaces the raw provider stop_reason (stop=…) on the closure line — it was already persisted on the closure event but unrendered, so silent stops (a turn that ends with no output and no error, e.g. a content-safety refusal) were only diagnosable by reading the raw trace.jsonladd PostToolUseFailure hook event (#282) (2a750fd) surface raw provider stop_reason in afk trace show (#291) (dfa28c5) Changed Merge pull request #290 from griffinwork40/fix/surface-model-refusal-stop-reason (21710d6) Fixed surface model content-safety refusals (stop_reason "refusal") instead of ending the turn silently — fixes the "it stopped and I can't send anything else" hang when the model declines a request surface model refusals instead of ending silently (ab84a62) Changed Merge pull request #288 from griffinwork40/fix/preserve-redacted-thinking-blocks (fb79fc8) Fixed preserve redacted_thinking blocks to prevent session wedge (40984ad) Changed Merge pull request #287 from griffinwork40/afk/fix-telegram-message-cutoff (5b66999) Fixed stop mid-turn cutoffs, false rate-limit errors, and tool-call spam (be939f5) Added add Stop as a harness hook event (ea5ba85) Changed Merge pull request #281 from griffinwork40/feat/stop-hook (d6659b8) Merge origin/main into feat/stop-hook: resolve hook-event conflicts (keep UserPromptSubmit + Stop) (18c9864) Fixed sanitize Stop hook reason and bound its dispatch timeout (ea7b5eb) address Stop review findings (b0c0ab6) Added add automate skill to awa-bundled plugin (fa80af0) Changed Merge pull request #284 from griffinwork40/afk/refactor-automate-skill-source (e6c0d3f) Added add UserPromptSubmit as 7th harness hook event (7b4e3b6) Changed Merge pull request #280 from griffinwork40/feat/user-prompt-submit-hook (6c30a87) Update README.md by removing 'afk login' command (f552ca9) Fixed fail closed on UserPromptSubmit handler timeout in REPL loop (8bb8a8d) Added searchable conversation transcripts (FTS5) (e37e39b) Changed Merge pull request #277 from griffinwork40/feat/transcript-search (3127bfa) Fixed harden index DB perms; surface skipped files (a03bccb) resolve PR #277 review findings (edabf6b) Changed Merge pull request #279 from griffinwork40/fix/input-bottom-pin-fresh-session (900b8a0) Merge branch 'main' into fix/input-bottom-pin-fresh-session (5cf0ea9) Merge pull request #278 from griffinwork40/afk/standardize-bypass-casing (03c3dfd) Merge pull request #272 from griffinwork40/chore/launch-readiness-polish (951aaf5) lowercase bypass chip + drop redundant model from REPL caret (57c4580) Merge branch 'main' into chore/launch-readiness-polish (666e3d2) launch-readiness polish for README + npm discoverability (e93d7d0) Fixed bottom-pin the input frame on a fresh session (54e25f5) Added blinking input caret (pulse on/off like a terminal cursor) (3096ee9) Changed Merge pull request #271 from griffinwork40/afk/improve-caret-styling (32d99d6) coalesce off-phase caret-blink reset with the keystroke repaint (16404db) thin ▏ caret + cornflower-blue palette.caret accent (74e25b7) Changed Merge pull request #270 from griffinwork40/fix/table-degenerate-growback (8734e4e) make growOrder sort deterministic on equal-width tie-break (ef3cd9d) Fixed fill width budget in degenerate table squeeze (12cc790) Changed Merge pull request #269 from griffinwork40/fix/table-narrow-column-squeeze (65ce572) Fixed protect narrow table columns from ellipsis truncation (8c65fa3) Added surface current date in system-prompt environment block (3f600b0) Changed Merge pull request #268 from griffinwork40/afk/agent-date-awareness (6204544) Changed Merge pull request #267 from griffinwork40/fix/telegram-daemon-markdown-render (35fcce9) Fixed re-split rendered HTML in pushMarkdown to avoid 4096 truncation (e9f1014) render markdown in daemon task notifications (0f007b4) Added show git branch + open PR on the REPL status line (da9c4fd) Changed Merge pull request #265 from griffinwork40/afk/git-branch-pr-status (5813da2) Fixed resolve three medium review findings (f5fd3c5) Changed Merge pull request #261 from griffinwork40/fix/routing-identity-completeness (9a4c3db) Merge branch 'main' into fix/routing-identity-completeness (584ed06) Fixed propagate origin/actor through grandchild-skill, compose, and daemon-fallback routing rows (fe1bdce) Added emit browser_event from browser tool handlers (897a02f) Changed Merge pull request #262 from griffinwork40/feat/browser-event-emission (df1e42f) Added classification eval for tool-failure-density contract (f714332) Changed Merge pull request #266 from griffinwork40/feat/improve-eval-run-tool-failure-classification (ee55b8b) Added fixture-replay eval-run for closure-anomaly (b16f563) emit tool_call + session_phase events from openai-compatible provider (819e688) Changed Merge pull request #260 from griffinwork40/fix/telegram-mcp-trace-writer (8862c63) Merge pull request #259 from griffinwork40/fix/farm-trace-wiring (7709ae3) Merge pull request #258 from griffinwork40/feat/openai-trace-events (61ae0cf) Merge pull request #264 from griffinwork40/feat/improve-eval-run-closure-replay (02dc1b4) Fixed inherit traceWriter + surface into farm worker sessions (38f730f) wire traceWriter + surface into farm sessions (bffe26b) pass traceWriter to MCP manager in telegram sessions (ea74f7d) Added fixture-replay eval-run proves recorded failure fixed (cbcf73f) Changed Merge pull request #263 from griffinwork40/feat/improve-eval-run-fixture-replay (7bc4edf) Changed Merge pull request #256 from griffinwork40/fix/hook-decision-schema-zod44 (6d39441) Fixed accept absent hook_decision.decision key (zod 4.4 regression) (ac246d7) 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) Added wire passive SIGNAL-block parsing into buildResultFromMessage (18be452) Changed Merge pull request #254 from griffinwork40/feat/wire-signal-block (3610ea4) 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) 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) 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) 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) 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) Changed Merge pull request #242 from griffinwork40/fix/interrupt-mid-turn-resume (095e318) Fixed keep session alive after mid-turn interrupt (ESC) (073004c) 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) 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) 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) Changed Merge pull request #235 from griffinwork40/afk/fix-usage-limit-hang (77b7b3b) Fixed terminate query generator on interrupt during usage-limit wait (c462ebd) Changed Merge pull request #228 from griffinwork40/fix/compose-cwd-reanchor (c46e4f3) Fixed re-anchor compose DAG nodes on cwd change (e3d57f3) 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) 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) Added add cards list --regressed observability view (de0b2d4) Changed Merge pull request #226 from griffinwork40/improve/cards-regressed-view (f0c3765) 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) 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) 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) 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) 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) 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) Changed Merge pull request #218 from griffinwork40/fix/subagents-non-interactive (3e4f8e8) Fixed make forked sub-agents non-interactive (96d7b3a) 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) 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) 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) Added render MCP form enum/boolean fields as arrow-key selector (47546b9) Changed Merge pull request #212 from griffinwork40/afk/20260618-153242-30da7d (2cff1df) Changed Merge pull request #208 from griffinwork40/refactor/extract-resolve-params (2acc9a0) extract pure param resolvers into resolve-params.ts (c5462c0) Changed Merge pull request #211 from griffinwork40/simplify/terminal-compositor-dedup (6da7b60) centralize committed-band CUP+EL escape into eraseAndPaintRow (57f417e) 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) Added scope /resume session list to current working directory (3ba3674) Changed Merge pull request #209 from griffinwork40/afk/20260618-123959-6040de (e5c19af) 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 enabledAFK_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 denylistelicit 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) Changed Merge pull request #205 from griffinwork40/fix/afk-surface-headless-default (0cce23f) Fixed default the 'afk' CLI surface to headless (7ef070d) 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) Added forward reasoning_effort for o-series models (#128) (#193) (467af9b) Added autonomous permission mode + scrubbed Telegram reporting (#197) (b3384fe) Added add retry/backoff for transient errors (429, 5xx) (#192) (e58b48d) Fixed thread max_tokens into streaming request body (issue #125) (#195) (8f6b0e3) 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) 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) 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) 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) Added gate bash by mutation, not a substring denylist (2eb6d5f) Changed Merge pull request #188 from griffinwork40/afk/20260617-053220-bbd8c1 (ccbc5ac) 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) Added native AFK skill-invocation JSONL writer (port afk-workshop#804) (7699403) Changed Merge pull request #186 from griffinwork40/afk-port/pr-804 (f3f4422) Changed Merge pull request #184 from griffinwork40/feat/improve-exclude-elicitation-declines (6ff4553) Fixed exclude ask_question elicitation declines from tool-failure-density (bad0c6c) 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) 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) Added require durable, citation-backed evidence in terminal states (fdd2cea) Changed Merge pull request #176 from griffinwork40/salvage/audit-prompts-evidence (8ea3c80) 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) 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) 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) Changed Merge pull request #168 from griffinwork40/fix/seal-unsealed-traces-on-exit (b92676e) Fixed seal orphaned witness traces on abnormal process exit (de83b72) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) Added add Vercel Web Analytics (ab1ec1e) Changed Merge pull request #147 from griffinwork40/feat/website-vercel-analytics (efc66da) 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) 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) Changed Merge pull request #139 from griffinwork40/afk/fix-subagent-model-hardcoding (52db82c) Fixed inherit default subagent model (630d6ff) 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) 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) Added add /get-started skill + harden /init detection (3ca03ae) Changed Merge pull request #133 from griffinwork40/afk/implement-get-started-skill (c3ba3c7) 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) 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) 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) 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) Added surface-answerability clause + BLOCKED-artifact convention (port afk-workshop#777) (684a304) Changed Merge pull request #118 from griffinwork40/afk-port/pr-777 (9e2d768) 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) Added classify tool failures; exclude "system said no" from failure-density (4e8c6aa) Changed Merge pull request #117 from griffinwork40/feat/tool-failure-classification (71b75e0) 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) 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) Changed Merge pull request #115 from griffinwork40/refactor/parse-post-targets (8c94fb8) parse chat --post value directly via parsePostTargets (f6ac2cd) 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) 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) Changed Merge pull request #107 from griffinwork40/afk/issue-102-verify-ship (065b5b8) extract reusable terminal selectors (e9efc40) 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) Changed Merge pull request #105 from griffinwork40/fix/daemon-loopback-bind (783a1ed) Fixed bind control HTTP surface to loopback by default (55a93d7) 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) 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) Changed Merge pull request #99 from griffinwork40/afk/fix-ghost-text-resume (034f5ca) Fixed correct soft-stop notice — "Send a message to continue" (d1c1427) 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) Fixed stop finalizeOrchestrator nuclear-flushing in-flight subagent blocks (#95) (bab6bb2) Added record root-session model in witness traces (#91) (e8ce193) 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) Added inline ghost-text tab autocomplete for mid-sentence skill names (#90) (81abc62) Fixed ESC soft-stop cancels on first press, no post-cancel lag (#81) (6b0e586) Added distinctive user message display in scrollback (#88) (10eacfd) Fixed stop local-model subagent dispatch from hanging (#87) (2d458dc) Added add closure-anomaly guardrail + eval-run contract (abort subtype) (#86) (03cfc86) Added return browser_screenshot as a model-visible image (#82) (e9a51b0) Fixed stop user-card echo ghosting by reserving the terminal last column (#85) (23200c2) Added add eval-run, the first deterministic eval-case validation stage (#84) (86ae118) Added drive the user's real Chrome via chrome-devtools-mcp (afk browser connect) (#83) (ee76c5f) Fixed align REPL slash verbs with CLI (install / install-plugin) (port afk-workshop#701) (#79) (9899a6f) Added act on telemetry — loop guard, skill-depth hint, enable tool-failure-density (#80) (5255350) Changed split terminal-compositor + bug-hunt pass (#78) (b9d49e5) Added add /config and /doctor slash commands (port afk-workshop#702) (#77) (907dc5f) 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) 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) 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) Fixed repair skill-dispatch turn rendering and accounting regressions (#68) (61d377c) 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) 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.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) Fixed route subagent overlay refreshes through OverlayComposer (#63) (baf325d) 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) Fixed surface the skill name in the tool lane (#59) (a8728f1) Fixed emit honest closure reasons (truncated, hook_blocked, max_turns_exceeded) (#60) (19206fe) Fixed clamp max_tokens to model ceiling and guard thinking budget (#58) (7d02d4b) 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) Fixed unblock native browser tools in the bundled ESM binary (#51) (fa29619) Fixed re-pin committed band on overlay collapse to kill the blank-space gap (#50) (5c76889) 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) Fixed resolve session credential by session model, not env default (#42) (0959c40) harvest argument-hint flags so /review --post completes (#48) (9d43b98) Changed reorder + dedup framework system prompt (Stage 1) (#45) (0de370b) Fixed enforce read-only tool gating for recon skills (ground-state) (#5) (6aeeaaa) Fixed make TerminalCompositor wrap-aware so soft-wrapped frame lines don't clobber committed text (#39) (a7ace49) 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) Added Responses API + ChatGPT-subscription OAuth + user-configurable model slots (#33) (fe0ba5d) 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) Added layer operator config over an unconditional framework base (#34) (ff03920) Added push full redacted task response to Telegram (#31) (dd73b2e) 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) Changed Remove codex reference from README (5394b09) Fixed unblock pre-auth CLI commands; require Node >= 22 (#16) (10ddd77) Added redesign /skills listing + detail UX (phase 1) (#14) (cf5e6f0) Fixed clamp diff body lines to terminal width in nested tool-lane paths (#9) (a3b38b5) Added flip default skill execution from fork to load (#7) (0deb564) Changed Update SKILL.md (d987a3e) Add context field to review skill documentation (13a5ae6) Added flip gather + parallelize to context: load (#4) (4006c37) Fixed anchor flat-leaf tool roots with col-0 ◉ beside a nesting root (#3) (c1d84e0) 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) Fixed exclude internal-tier skills from the published npm bundle (#713) (952079a3) 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) 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) Fixed restore #502 session-player terminal + 2 copy regressions (#709) (be1e214b) Fixed keep non-last ancestor spine continuous through nested subtrees (#708) (983d06f0) Fixed retry mid-stream 529 / overloaded_error events (#704) (04aca58) Added add /name command to show or set the session name (#700) (d5bca28e) Added config-driven shell-command hooks + TUI clear-band reset (reconciles #644 + #646) (#693) (cde08779) Fixed correct stale settings — models, codex removal, thinking enum (#699) (c5825b3) Added add tool call counting script and corresponding npm command (207eaff) Fixed harden rate-limiter against XFF spoofing + non-POST token burn (#698) (4f3ae30) Added migrate vanilla landing page to Next.js 15 App Router (#514) (02adee41) Fixed topology-spine seam — keep live-ancestor columns open in committed band + overlay (#687) (f1024e5) Added @-file picker — tilde/absolute path completion + content injection (#688) (10aa3a00) Added replace Firecrawl with local Readability/Turndown scraper + Brave search (#671) (8158044) Added provider-level readOnlyMemory enforcement for child sessions (#690) (8853eb0) Fixed scope audit-fit Glob rule, thread ship heal iters (#692) (619e4ad) Added durable named sessions + Telegram→CLI resume bridge (phases 1–2) (#672) (44c60e4) Added add /fork to branch a conversation into a parallel session (#670) (5e24f1a) Fixed silence depth-2 nesting ghost row (recursive no-visible-descendant) (#678) (9ff5060) Changed extract key-dispatch cluster from terminal-compositor (KeyDispatchHost) (#669) (435f2937) Fixed silence headerEmitted nested-skill overlay label leak + lock spine continuity (#662) (a2ffb17b) Changed decompose TerminalCompositor — extract paste, autocomplete, render, committed-band clusters (#665) (fb501146) Fixed stop hiding @-file completions past the dropdown cap (#667) (73c4c5a6) Added default afk --worktree to the remote default branch (origin/main) (#666) (8c055dd) Fixed count cached tokens in context-window % and auto-compact (#648) (b2e428c6) Fixed clamp each banner line to terminal width (#664) (f64049e1) Changed relocate per-model credential resolver to agent layer (#658) (a01a259) Fixed bundle poller entrypoint + resolve bundled dist layout (#663) (cd4faa2) Fixed collectSkillEntries() scans user + project skills fresh from disk (#656) (9553467c) Fixed fork-time credential fallback to parent's cached token (#657) (a5ca163c) Fixed advance branch-tracked installs by commit, not ref-name (#655) (dc627f9) Fixed poll-retry the no-ts 429 path so same-account resets auto-resume (#638) (c5258c8) Fixed drop stale resize ghost-erase snapshot on shrink (#653) (94c48366) Added cross-provider REPL ghost-text suggestions (#606) (babeac5f) Fixed erase old frame + committed band on terminal resize (stop ghost rows) (#650) (bfa9e3bb) Fixed preserve committed lines + close scrollback gap when band caps under tall overlays (#645) (cf18529a) Fixed reset committed band on /clear to prevent transcript resurrection (#647) (459f03e2) Added instrument startup-latency session_phase waterfall (follow-up to #637) (#639) (21a90466) 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) Fixed anchor childless NESTING overlay heads with ◉ (fix floating-spine bug) (#642) (3c708ae) Fixed heal footer bars + re-pin full committed band after full-screen scroll (#641) (8120a5ad) Added add session_phase waterfall events + session_sealed subagent token rollup (#637) (fec76ed) Added public/internal tier gate via audience field + AFK_INTERNAL (#569) (e4a3490e) Added add context: 'load' in-context skill execution mode (#630) (e87293f5) Changed sync review skill with upstream example-plugin (close #441) (#635) (62207782) Added enrich /reload-plugins output with plugin versions, source breakdown, and reload delta (#636) (f572365) Added pin loop-stage rail as reserved footer row via LoopStageBar (#634) (ea469d40) Added add bundled /refactor structural-change skill (#633) (8f2cff6) Added add bundled /simplify code-simplification skill (#631) (cb16af7) Fixed ESC soft-stop registers on first press and stops dropping the next message (#626) (4d6dc92) 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) Fixed strip terminal_font_size from skill-dispatch sub-agents + anchor review arg (#624) (e70a8f9) Fixed born-named worktrees — defer creation to first turn, never move a live worktree (#617) (322d6c3d) Fixed match shadow-verify orchestrators at word boundaries (#623) (0b2105d) Fixed clamp over-wide drawBox titles + extend sanitizer test coverage (#622) (89adbbf) Fixed strip OSC/DCS/C1 escapes from bash/grep/subagent tool output (#621) (4719a771) Added extract canonical terminal sanitizer + add drawBox primitive (#620) (20f457e) Fixed stop skill-dispatch sub-agents from asking "which skill?" (#619) (8da8808) Added ack inbound with 👀 reaction + clean-final streaming mode (#615) (df6eefb0) Added interleave per-phase thinking summaries on TTY (#614) (c38aabf2) Fixed frame ask_question as a last resort, not a first move (#616) (1ca68136) Added !cmd shell-passthrough with foreground + background modes (#565) (c8dbe1e9)Fixed ESC soft-stop no longer auto-fires a phantom turn (#611) (d8ee37a) Fixed preserve URLs in tool-lane arg rendering (#612) (2fe02ee) Fixed align nested subagent thinking-tail with its tool children (#613) (da53956) Changed extract spinner state machine into SpinnerController (#609) (b6659b38) Fixed report 1M context window for opus_1m/sonnet_1m aliases (#610) (f3a138fa) Changed decompose 590-line dispatchKey into ordered handler methods (#608) (d56e50a) Fixed /tokens always shows 0 tokens and NaNm total (#607) (b0945e7) Added truncate large pastes into compact placeholders (#574) (4a79762) Fixed single-copy commitAbove + hasCommitted-gated evict-on-growth (#592) (92211df) Added wire default witness trace writer into daemon + Telegram sessions (#604) (0319ebe4) Added refresh context usage in status line mid-turn (#527) (a41d882b) Fixed remove 5-min timeout, abort is sole unblock path (#602) (96dcce4) Fixed substitute $ARGUMENT/$ARGUMENTS in plugin SKILL.md body (#566) (10b821b) Fixed wire skill/agent/compose executors into daemon sessions (#595) (cd033635) 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) Fixed enforce read-only contract via hard-constraint prompt (#596) (15d3e10c) Fixed clear stale compositor overlay on /clear and /info (#594) (1827bd50) Added improve bot UX (items 2–8) (#588) (5b00421d) Changed extract types/helpers from terminal-compositor.ts (#591) (8c08c27d) Fixed preserve typed buffer as queued on ESC soft-stop (#593) (0f496a48) Added queue messages during compaction (#586) (f7976ab9) Fixed allow get_runtime_state in read-only phase forks (#584) (86b00561) Fixed inject advisory-lock path to de-flake CI tests (#582) (297d51e6) Added inject SKILL_ROOT + validate names per agentskills.io spec (#578) (ff6a09e3) Fixed erase every row in commitAbove Phase 1 to stop multi-line splice (#581) (99ff7ec6) 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) Added migrate opus default to claude-opus-4-8 (#576) (f225660) Added namespace-normalized drift comparison for bundled SKILL.md (closes #440) (#570) (d73b396b) Added highlight /mint in mint green ;) (#577) (a582e7a) Fixed route between-turn slash output through persistent compositor (#564) (2422a227) 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) Fixed allow live frame to visually shrink (ratchet fix) (#557) (326ca92) Fixed close two soft-stop races — arm-to-handler window + late-ESC after done (#544) (b0ba748) Fixed echo reasoning_content on assistant turns for thinking-mode providers (#549) (0bf93d8) Added auto-delete worktree on zero-turn session exit (#556) (f72ef7e) Added native browser-control tools (Phase 1) (#553) (aaf8b11) Fixed plugin-skill forward path runs preflights symmetrically (#476) (0720782) Added Phase 2 — workspace baseline, presence files, afk sessions command (#548) (74a39ac) 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) Fixed bound user-card height + repair frame-shrink orphan rows (110d8dc) Fixed honor ESC soft-stop in runSkillDispatchTurn's stream loop (5ee73b8) Changed update waitlist welcome email copy (e3f9a0d) Fixed add get_runtime_state to permission allowlists (16e5446) Fixed regenerate env-registry docs with AFK_DEBUG_COMPOSITOR entry (acd251c) emit \x1b[2K before Phase 1 CUP-positioned text write (4ffd15c) Fixed honor late-ESC after done event — suppress turn-complete (e5ace8c) Fixed plug Claude-OAuth-token leak into openai-compatible Bearer (d17fb89) 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) Fixed preflight collision check + preamble bleed recovery (340aed1) 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) 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) Added ESC soft-stop — halt stream, preserve completed work (e4f9cd0) Changed banner hint says Esc instead of Ctrl+C (670ea00) Fixed align subagent thinking-tail with tool-child content column (9b71491) 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) 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) 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) Fixed enhance scrollback functionality for visible text accumulation (9cc4c55) make scrollback actually reach the terminal scrollback buffer (1c00a0a) Added add /transcript command to view full session in $PAGER (d2f72db) Added add optional cwd param for per-call worktree isolation (717b0a6) Added provider-agnostic routing — AFK_PROVIDER + env-hint + third-party prefixes (84e1dfc) Fixed enforce read-only permission boundary on spec/research/plan phases (1fa7a54) Fixed throttle overlay repaints + park cursor at DECSTBM bottom anchor (f3ef030) Fixed park clear() cursor at rows-1 so commitAbove pushes scrollback (9690b9f) Fixed strip resume-context from config in reset() so /clear starts fresh (8eabebe) Fixed route ask_question elicitation through compositor onSubmit (f4beb24) Added close anthropic-direct parity gaps (U1+U2+I1-I3) (b8d99e5) Changed split render.ts into per-component modules (25dd6f3) Added append agentafk.com footer to changelog Threads posts (5574130) Added auto-send welcome email via Resend on signup (ebda376) Added add tool-failure-density detector (b9c2ef3) Fixed verdict-card off-by-2 overflow causing broken bordered completion box (0a2a885) Fixed forward cwd through skill and depth-2 subagent dispatch (d25315e) Added rebuild hero terminal as session-player with goblin mascot (#502) (9b67f40) Changed update AFK.md for provider rename and DAG executor status (83ca176) 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) Fixed forward backgroundRegistry to forked child SubagentExecutors (6a13aff) Fixed colorize slash-command submit echo on compositor path (362e785) Added add AFK Dark VS Code / Cursor editor theme (a9af988) Fixed forward image attachments through plugin-skill dispatch (b0f014c) 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) Changed enlarge waitlist count pill for stronger social proof (2017d98) Fixed add absence-claim grounding, lower shadow-verify threshold (9edc34a) 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) Fixed paint stage rail once per event — drop pre-switch repaint (e821db1) Added add topic tag to Threads release posts (391f799) Fixed update waitlist call-to-action and placeholder text (71edd9c) Fixed route Threads changelog post to release-dedicated account (#493) (7c6a0a6) Fixed insert blank row between chrome and input prompt (#490) (b89b092) unbreak Threads changelog post — timeout race + shell quoting (#489) (5b6179f) Fixed add structured truncated flag on ToolResult for overflow detection (#481) (8b6c49a) 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) Fixed guard teardown errors in skill-executor finally blocks (703d57e) seal child skill sessions and handle SIGHUP (22ed629) Added auto-post changelog to Threads on tag push (f09ef31) Fixed repair tool-lane topology spine across three severing sites (#470) (935cfdd) Fixed skip CUP anchor on first arm() to eliminate banner→prompt gap (72b6c41) Added surface skip reasons with dim diagnostic line (b55a7bb) Fixed resolve short model aliases before SDK send (0a2af18) Fixed update toolInput format in stream-renderer and turn-handler tests (5ca0379) Fixed address 7 review findings from PR #449 (#467) (d82b43a) Added emit tool.overflow_kill on bash/grep SIGKILL (#475) (75accba) Fixed re-issue CUP anchor on terminal resize so REPL frame survives SIGWINCH (#453) (88e3180) Added capture-mode for clean demo recordings + multi-file diff separators (#426) (0174a6d) Fixed drop breadcrumb labels — anonymous anchors in live overlay (3f54014) 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) Added replace Jina with Firecrawl as markdown/search upstream (0f1581a) Fixed restore [queued] suffix so Enter mid-stream gives feedback (23d5dae) Added Sprint 3 — replay-mode eval-gen + eval-cases CLI (83288c6) Sprint 2 — template-mode propose + closure/subagent detectors + triage (f26b298) Fixed unstick REPL after usage-limit auto-resume (#448) (cd45c94) Fixed preserve multi-line clipboard paste in compositor (7b1d33a) Fixed loud-fail empty fenced code blocks with placeholder text (2b7b68f) 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) 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) 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) Fixed apply dropdown selection on Enter — Stage 3e port gap (54c5a37) Fixed clamp duration at 0 on clock skew (review C2) (9f98c44) cap duration at thinking→acting boundary + render above response (f3ee1a3) 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) Changed long-comment prefix convention + targeted comment shrinks (1fffa7c) Fixed anchor overlay breadcrumb spine with dim ◉ marker (c13a1fe) add headerEmitted guard to renderFlushChildren (a021a7d) Fixed mirror formatAgentSummary spine topology in formatAgentHeader/Children (#450) (34b76fe) 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) Added left-anchored subagent topology spine with ◉ turn-root (#350) (1bab3bf) 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) 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) Added add stream-json output format (#419) (69a0bf8) Fixed aggregate timeout, production-visible warn, dispatch defaults (9543b6b) hook dispatch timeout + subagent fork AbortGraph cleanup (R3/R4) (a7ab48d) Fixed isolate pnpm/action-setup dest per-job to runner.temp (e3874d0) Fixed populate ProviderUsage.durationMs on every turn.completed yield (07bbe2a) bound cwd-fallback tests to tempDir, not process.cwd() (0714f67) 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) 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) Added add /cd command to set per-chat working directory (e563d12) Changed remove vestigial bootstrap scripts (#421) (545dce4) Fixed prose-question guard (H1) + codebase lane override (H2) (#418) (78c9ec3) Added dead-owner verdict, /worktree slash, boot-time auto-prune (#364) (2bf6d41) Fixed plugin install/remove invalidate scan cache + removePlugin name guard (F2/S8) (b57a066) Fixed AFK_HOME validation + migrateDirOnce EXDEV fallback (F1/F5) (f617705) Fixed extend write denylist with AFK config + tool tokens (S4) (01b2ba8) 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) Fixed propagate worktree cwd into subagents and preflights (#408) (c61a5a1) Added auto-compaction (opt-in) + SDK dependency lock (#405) (f9e052a) Fixed preserve cursor across DECSTBM toggles in withFullScrollRegion (#407) (f962403) Added background-subagent TUI parity (Ctrl+B hints, per-job status rows, auto-deny elicitations) (#362) (d2e5f8f) Fixed forbid direct push to default branch + invented convention (63f3ed3) Fixed bump pinned qualify hash to match merged rule-5 paragraph (#399 follow-up) (1f5c587) Fixed re-wrap streaming TUI overlay on terminal resize (220060b) Changed explain why rule 5 systematically fires on gate/guard skills (e6cbf29) Fixed inline Copy button on install command, drop forced overflow (35ac697) Fixed narrow skill anti-recursion guard to same-skill only (436620e) Fixed emit subagent.completed/.failed for background dispatches + fork-throws path (1a8172a) Fixed accept null in hypothesis schema, tighten prompt (810bf18) clamp thinkingTail rows to terminal width (ab7f8b9) Fixed preserve attachment indicator after message submit (1ab1d57) Fixed guard user-echo writes against DECSTBM sub-region scroll loss (9d516e7) Fixed label-aware overflow — count honesty, sibilant plural, sanitize (ef51ee4) 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) Fixed guard label-aware overflow against pre-merge placeholders (8c8cae2) preserve dispatch labels in tool-lane overflow (f396d73) Fixed preserve isolated newline deltas in streaming TTY renderer (8357dda) Fixed normalize case + scope tier-3 regex locally (b919d23) tighten verdict parser — tier-2 modifier gap + tier-3 nearby-anchor fallback (ff1a78a) Added Phase 1A — read-only witness-trace scanner + failure cards (eee58d4) Changed skip setOverlay repaint when overlay text is unchanged (28cfe3b) Added render live thinking overlay as a wrapped paragraph (ba42900) Added add npm install command with copy button to #access section (#384) (b8a292b) Added add MCP client support — stdio + remote (HTTP/SSE) + OAuth + live refresh (#374) (a3e8c4c) Fixed propagate traceWriter through SkillExecutor + surface wall-clock in Done summary (#378) (6721351) Fixed close 4 schema gaps surfaced by telemetry audit (#383) (c42481c) Fixed defensive verdict parsing + write-step name-collision guard (#382) (a66d8fd) Changed PR #376 follow-ups (f430388) Fixed summarize bash JSON output + move tool-result rendering upstream of truncation (#380) (1f33c1a) 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) Fixed eager-emit ancestor frame headers in ToolLane.flushSource (2c2e103) Added route Messages traffic through a local Anthropic-compatible server (#239) (2578100) Added hydrate stats + welcome banner on session resume (#316) (2142890) Changed add founder anecdote + finalize 'Built by' credit (#308) (139bc02) Fixed launchctl-throws test uses telegram, not daemon (b2341b0) 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 symlink — assertWithinPluginsDir 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.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) Added phase reducer + test-runner detector + risk classifier (pure-function trio) (f9fb3f4) 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. 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) 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) Fixed zombie-state hardening for background work + Haiku 4.5 pricing (5e4c376) Fixed chronological interleave for subagent done-blocks (#328) (8ba83ea) Fixed forward image attachments through slash commands (C+D hybrid) (961539f) 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) 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) Added inline colored diffs for edit_file/write_file (#313) (6fbb370) Changed edit_file tool result format — tool_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) 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 expressionafk.config.json.example updated to show the daemon.task / daemon.taskId fieldsFixed default trigger to sessionstart; pass --cron flag through (Gap B) (#311) (bdf3ef9) 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) Changed narrow /mint routing trigger and demote from lead bullet (e36a9db) Fixed add Dispatch protocol section to enforce parallel sibling dispatch (68e88d5) Fixed add Write-step invariants to prevent skill_name="unknown" silent-failure (c303850) Changed emit in-flight badge inline via completionWriter (d612533) Fixed resolve PR #321 review blockers and majors (95c04dc) Fixed distinguish 'nothing-to-summarize' from 'history-too-short' (72e31c2) resolve session-stuck and malformed-HTML regressions (P0) (352f46d) Fixed correct-by-construction fixes for fenced code, ordered lists, hr, blockquote (bab3b09) 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) 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) Added skill-invocation plumbing — types, registry, native handler, plugin-forward, review-pr (#287) (0cb3e72) Changed Delete .github/workflows/claude.yml (0fce048) Delete .github/workflows/claude-code-review.yml (c87d4b5) Fixed improve handling of pre-aborted signals (abaf41a) Fixed retry transient 529/503 errors with exponential backoff (b846a8e) Fixed auto-start bot after allowlist save (95378a7) resolve bot entrypoint in bundled dist layout (816c8d2) 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) Added preserve @ in file dropdown + highlight @path tokens in buffer (c4e448e) Changed BREAKING (REPL elicitation): form-mode request with no usable schema properties nowform-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 allowlisttrim 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 bothSecurity 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 Added three-layer upgrade safety — postinstall kill, error sanitization, version drift check (3232f90) Changed accept "sure" as approval signal alongside approve/yes/lgtm (5d2fc5a) Fixed reduce text density and increase breathing room (#297) (04f74a9) Fixed Escape dismisses dropdown; uniform muted color for all trigger kinds (#282) (789f108) 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) Added Day 4b + 4c + 4d — inline-button digest + Discard/Diff/Respawn/OpenPR callbacks + schema v3 [speculative branch farm] (#273) (df7bf36) Added show effective cwd in the persistent bottom status line (0a2a46d) Changed added .vercel to .gitignore (dd50366) Fixed bust waitlist-count cache on insert + lower JS cache TTL (91836ee) 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) Added swap waitlist storage from Supabase to Neon (9e7ca44) Added subagent permission system + worktree isolation (#242) (1ffaeb7) Added waitlist signup via Supabase with live count in hero (3e2a003) Fixed thread session cwd through all tool handlers and surfaces (519991b) Fixed move subagent narration below tool children (0704363) Added route subagent done-blocks above prose when emitted pre-markdown (89d2d47) Changed assert agentType propagates from SubagentExecutor to renderer (7e94a0a) Fixed resolve /review findings on PR #275 (a187db5) Changed add coverage for update command, fetchLatestVersion, and banner ordering (e33da04) Fixed address PR #278 review feedback — banner, --pin, robustness (e7f148f) Fixed prevent heredoc newlines from corrupting tree connector rendering (76d719e) Fixed show update banner on startup and add afk update command (c4e48da) Added implement form-mode field-by-field REPL handler (330e043) Fixed collapse redundant Agent row by merging label into parent entry (4b5ea2e) Changed extract ReplRenderer output seam; route mid-turn writes through compositor (#272) (e51ec5d) Fixed surface truncation as warning + spill full output to disk (2892755) Added persist tool events in session archives (#268) (3f73a32) Fixed summarize memory tool JSON in tool-lane outcomes (af5cda2) Added centralized user-facing error handling (0943e9f) 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 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) 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) Changed Merge pull request #209 from griffinwork40/fix/skill-executor-child-provider (af1126c) Fixed wire child provider into forked skill children (0749128) 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) 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) Added group same-tool siblings + categorical overflow + bash summarizer (ba43dda) Fixed address review findings on thinking-render-bugs (547cb78) surface thinking content during turns (232697f) Fixed anchor fence detection to line start (fc5654d) Changed add telemetry-split orchestration plan (0be9561) Fixed attribute nested subagents and silence stdout debug leak (77e224c) Fixed align user-echo card content with inline prompt column (8019e2b) Added expose dispatchSkill callback on SkillExecutionContext (a4515bf) 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) 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) 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.Fixed repair release pipeline + dev start scripts (c83ede0) Added add /init slash command to scan project and generate AFK.md (af56752) Added nest compose-spawned subagents under the compose tool-lane entry (90bea64) Fixed resolve review findings on compose subagent nesting (#202) (a627cab) 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) Added add afk-worktrees-status.sh read-only inspector (#198) (eaeaaa7) Added add send_telegram built-in tool for operator notifications (#187) (c7150a1) Added surface execution trace from child sessions to parent (#193) (4af131b) 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. SDKAdded 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) Fixed decouple AFK telemetry from ~/.claude/agent-framework (#191) (01160ba) Added repaint stage rail on transitions + enable extended thinking by default (4750263) Fixed add blank line between paragraphs in markdown rendering (c4949d7) Fixed render inline markdown in card bodies (#165) (0d803a6) Added activate compose tool in production entrypoints (#185) (3d93f00) Fixed resume on JSON-string {userApproved:true} from skill-tool boundary (#166) (f7387d3) Fixed truncate /skills descriptions and add detail view (#181) (905edb9) Fixed per-call signal check in executeBatch parallel branch (#182) (4c87ee7) Fixed repair clipboard image paste on macOS (Cmd+V + binary readback) (#163) (7b6e0d7) Fixed normalize paragraph spacing and fix overlay alignment (#184) (7cc3752) Fixed restore cursor, honest spinner, durable interrupt notice, honest --stream (#183) (e50c1ba) Added add compose tool for DAG-based parallel subagent orchestration (#173) (a78027f) Fixed use dirname on fileURLToPath before joining relative paths (1251a74) Fixed auto-submit queued messages instead of requiring a second Enter (92a1c83) Fixed update description for clarity and improve commit process guidance (e986f1c) Fixed add memory tools to allowlist and prevent dangling tool_use on abort (6162b2c) Added add completion glyphs to tool result display (8d0d756) Added add auto-update checker with notify/auto/off policy (bbc9ae5) Added improve subagent visibility in nested skill runs (eed3ba6) Fixed convert skill-name XML tags to styled badges and fix tool glyph casing (b754e41) Changed broaden skill to accept PR numbers, SHAs, branches, and patch files (246824c) Fixed eliminate streaming line duplication and table garbling (ca6a204) Fixed correct skill count, add email fallback, ship OG image (640521a) Fixed add blank line between user input and agent response (44107d6) Added highlight slash commands anywhere in the input buffer (d5e570c) 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) 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 optionsFile-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) Added cross-session memory system + mint state persistence (#115) (40231c6) Added add --dump-prompt debug flag for SDK prompt verification (#34) (c49fb7d) Fixed show early tool-use indicator during model generation (#123) (0b91592) 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) 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) 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) Added runtime positioning + reversibility-aware autonomy section (1a3af3f) Fixed correct overclaims, restore working CTA (639790d) 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) 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 treeswithTimeout / TimeoutError helpersZod 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 untouchedSDK 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 stringlistSessions skips SDK PID-registry sidecars; /resume formatter guards NaN / undefined timestampsCLI: tool names and file paths now surface in interactive output Added Initial release Project infrastructure Testing framework Basic CLI commands