Skip to content

v1.3.237

Choose a tag to compare

@topcheer topcheer released this 11 Sep 16:49
· 2465 commits to main since this release

ggcode v1.3.237

Highlights

  • See the changelog below for the user-facing updates included in this release.

Compare

Changelog

  • release: v1.3.237 — review-campaign convergence: 295 commits
  • fix(desktop): app.go compile errors - PastedImage.Data field + loadErr scope (#2094)
  • fix(desktop): config-sync poller goroutine gets safego guard
  • fix(auth,config): single-flight Anthropic OAuth refresh + serialize auth store writes (#1505)
  • fix(tui): tunnel-start replay keeps broker ref; ask_user empty-id replies dropped
  • fix(agent): verify-hint trigger family - race hint severity, sync-removal detection, failure-flag clearing, runner coverage (#1841)
  • fix(tui): early tunnel-connected replayed; unknown approval decisions dropped (#1825 cases 1+2) (#2092)
  • fix(tool): browser Chrome process + profile-dir leak guards (#2091)
  • fix(agentruntime,desktop): complete the silent-error-swallow family in recovery/replay paths (#1802)
  • fix(agent): detector miss-family fixes across speculate/spec_gaming/slice_bounds/solution_fixation (#1496)
  • fix(cmd): stderr tee covers riscv64/loong64; restore keeps the spare fd (#1818 cases 1+2) (#2088)
  • fix(tunnel,subagent): retry_after_ms clamped; EventsSince absolute cursor (#1816 cases 1+2) (#2087)
  • fix(agent): todo_drop CJK bigram similarity + rune-safe truncation (#1506 case A)
  • fix(desktop): one-shot frontend warning when notification delivery fails (#1809 case 4) (#2084)
  • fix(agent): drift recurrence counts failed verifications; weak-baseline bar for the scattering branch (#1544)
  • fix(agentruntime,desktop): vision turn switch inherits current selection; restore persists; auto-title edge cases (#1670)
  • fix(agent): adaptive effort honors config-level effort; classifies edit param errors; todo_write off read-only list (#1836)
  • fix(swarm): stored teammate results survive the removal gate (#1814) (#2081)
  • fix(tool): explicit empty string is provided for delete-semantics params (#1838)
  • fix(agent): subgoal plan-intent gate; declaration negation/continuation veto; stall timer attribution (#1499)
  • fix(tui): reconnect latch clears when the pending server is uninstalled (#1812) (#2078)
  • fix(agent): test-isolation cross-file vars, TestMain exempt, snapshot restore clean; impact cap + Ruby runner (#1502)
  • test(mcp): pin the notification-stream generation guard (#1810 companion) (#2076)
  • fix(config,scripts): per-endpoint provider attribution; sync-tool fail-safes (#1668)
  • fix(mcp): notification-stream takeover replaces the skip race (#1810) (#2074)
  • fix(agent): redundant-read guard requires content-hash agreement when mtime matches (#1824)
  • fix(image,desktop): clipboard stream cap; TCC distinction; paste budget (#1807 cases 1+2+3) (#2072)
  • fix(agent): speculator stat-snapshot freshness; memo hit permission parity (#1831)
  • fix(im,tui): stale approval replies dropped; questionnaire wins dual-pending routing (#1833)
  • fix(permission): quoted-root rm Critical; dd read-side demoted; git force variants (#1804 cases 1+2+3) (#2069)
  • fix(agent): guidance budget slot/dedup/pool semantics; cross-path conflict arbitration (#1840)
  • fix(agent,acp): checkpoint baseline TOCTOU; post-write read-back; sse transport normalization (#1786)
  • fix(im,config): webchat image-only ticks activity; rc cross-refs resolve (#1803 cases 1+2) (#2066)
  • fix(agent): window-consistent failure-mode density; transient streak sync; scoped churn clearing (#1561)
  • fix(agentruntime): projection failure chain stops being silent (#1802 cases 1+2) (#2064)
  • fix(agent,tool): route fan-out writers through the pre-write dry-run gate (#1547 case A)
  • style(desktop): gofmt notifications_1504_test.go (main Format red) (#2062)
  • fix(agent): regex-loop alias imports; multiset delta for same-pattern growth (#1488 case C)
  • fix(tunnel): projection store durability, path escape, cross-process tmp (#1801) (#2060)
  • fix(agent): wire session token budget consumption; silent-error resource-key model (#1494)
  • fix(desktop): bounded unix notifier delivery; second-instance focus; startup hotkey rollback (#1504)
  • fix(provider,tunnel): calibration guard before the remote call; per-token salt (#1795 cases 1-4) (#2057)
  • fix(agent): cross-process lock + unique tmp for trajectory learnings persistence (#1512 case C)
  • fix(tui,tunnel): whatsapp enable rides configMutationMsg; broker session-info reads locked (#1793 cases 1+2) (#2053)
  • fix(agent): waitgroup receiver exemption; description-field scan; run_command git channel; delta line-drift (#1527)
  • fix(tui): wecom enable rides configMutationMsg; wechat poll re-arm paced (#1792 cases 3+2) (#2051)
  • fix(agent): compound-127 amnesty; oracle fence unwrap; batch_replace path extraction (#1522)
  • fix(agent): CJK bare-word narrowing; redirection opener semantics; failed-run verification (#1521)
  • fix(agent): goto-label reachability; two-line uintptr round-trip; non-destructive unused-param hint (#1520)
  • fix(agent): real copylock body-scan revert; claim-level ack proximity + revision supersede (#1536)
  • fix(provider,tui): probe single-flight; stale probe results dropped (#1789 cases 1+2) (#2046)
  • fix(agent): windowed reads no longer mark a file fully read (#1782)
  • fix(agent,tool): adaptive-effort restore window + panic path; batch_replace cancel rollback (#1817)
  • fix(agentruntime): StartShare stops the previous share; upgradeMgr read stays locked (#1787) (#2043)
  • fix(desktop,config): impersonation three-path consistency; instance credential leak (#1815)
  • fix(agent): write-integrity reads the file back from disk (#1786 case 2) (#2041)
  • fix(desktop): serialize MCP config writes; compensate Remove partial failure; drop OAuth token on Remove (#1813)
  • fix(tui): tool elapsed assigned before the finisher consumes it (#1785) (#2039)
  • fix(tool): exit_worktree branch-delete gate; worktree-name path-component rejection; dirty-probe fail-safe; CJK scoring note (#1710)
  • fix(plugin): MCP-disabled cold write path no longer caches failure as truth (#1782 cases 1+2) (#2037)
  • fix(tool,chat): honest editor-fallback message; sibling/cross Info diagnostics; git-status R/C/U; search-count anchor (#1697)
  • fix(agent): claim-verify window covers tail; fail:0 exempted; read_file culled (#1780 cases 1+2+3) (#2035)
  • fix(config): real-home guard exempts the OS temp root (#2033)
  • fix(agent): quota-reset family closure + registration pin (#1826)
  • fix(test): fail fast when tests touch the real user HOME (#2033)
  • fix(agent): token-waste family joins the guidance budget; metering tracks post-shrink length (#1819)
  • test(agent): pin cancellation flatten notes (#1779 companion) (#2032)
  • fix(agent): cancellation errors flattening labeled for what they are (#1779) (#2030)
  • fix(agent): ghost comments for removed detectors; give-up+rollback re-add; overcorrection gate parity (#1823)
  • fix(agent): clean-force detector gains separator truncation and git global flags (#1774 cases 1+2) (#2028)
  • fix(acp): sse mounts stop failing silently; stale upstream-spec comment corrected (#1797)
  • fix(lsp): unsupported rename kinds surface to the agent (#1769) (#2027)
  • test(agent): align path-fingerprint pins with #1486 case-D semantics (#2025)
  • fix(tui): slack auto-enable rides configMutationMsg; knight spinner tick kept (#1758 cases 1+2) (#2023)
  • fix(agent): spawn/warp mutation channels join mixed-batch pre-exec guard (#1829)
  • fix(tool): xargs segment-scoped match; sort/prefix anchoring; SSRF pins (#1703)
  • fix(tui): stdout probe uses unix.Poll - no shared-fd writes (#1753 case 2) (#2021)
  • fix(tui): stdout-health probe uses unix.O_NONBLOCK (#1753 case 1) (#2018)
  • fix(tool): truncation annotation gaps - element cap, of-N, rune split (#1835)
  • fix(agent): undo-blind charter scenario live; checkpoint tail-anchor regression (#1518)
  • fix(im): twitch mention strip matches the gate's tokenization (#1747) (#2016)
  • fix(im): openai-whisper download bound + feishu STT validation pins (#1743)
  • fix(im,tui): feishu STT strict contract; clearing a limit stays session-level (#1743 cases 1+2) (#2014)
  • fix(util): reject WSL bash entry in Windows shell fallback (#1842)
  • fix(agent): verification debt partial repayment, code-actions grounding, bare-path scopes (#1784)
  • fix(tui): model panel visible rows track the current height (#1742 case 2) (#2011)
  • fix(tool): bounded output head-cut rune straddle (#1820)
  • fix(agent): empty-result anchors for all 8 search members (#1796)
  • fix(tui): vi tone marks; 5 missing catalog keys; stopped adapters stay stopped (#1734 c1, #1735 c1+2) (#2008)
  • fix(config): active endpoint/vendor removal falls selection back (#1517)
  • fix(agent): undo-blind pre-execution wiring + retrospective guidance (#1799)
  • fix(tui): imEnsure pre-built; inspector loadErr surfaces (#1737 cases 1+3) (#2005)
  • fix(desktop,config): OAuth status truth and silent renewal (#1805)
  • fix(agent): invalidation extractor learns notebook_path and file_ops source (#1733 case 1) (#2003)
  • fix(tool): kitty ctx threading, key modifiers, kg tags/slug (#1692)
  • fix(desktop,im): bind stop-first, rebind rollback, surfaced failures (#1811)
  • fix(tool): Android @en ref resolution + mobile error surfacing (#1694)
  • fix(extract): OOXML template family registered; zip preview snaps to rune boundary (#1727 cases 1+3) (#1999)
  • fix(agent): fingerprint sibling separation; failed-edit gate (#1486)
  • fix(tui): tmux hook restore gets a 3s deadline (#1722 case 1) (#1997)
  • fix(tui): replay keeps whitespace reasoning separators (#1808)
  • fix(agent): normalized strategy signatures; stagnation threshold 3 (#1498)
  • fix(cron): tombstone-first migration; one-shot drop log (#1531)
  • feat(tool): browser screenshot optional output_path saves a real file (#1993)
  • fix(agent): skip succeeded read-only commands in causal attribution (#1528)
  • fix(tui): diff file headers not colored as add/remove; mentions need boundary (#1718 cases 1+2) (#1991)
  • fix(im,agentruntime,desktop): multi-pending approval index disambiguation (#1657)
  • fix(agent,tool): drop bare oldest/最近的 entries; word-boundary term scoring (#1710 cases 2+3) (#1989)
  • fix(lanchat): sender-side presence response bound (#1627)
  • fix(im,memory,cmd): /diff allowlist; atomic SaveMemory; daemon LoadKey (#1752)
  • fix(tool): skill #import blocks private targets and redirect bounces; xargs -r token match (#1703 cases 1+2) (#1986)
  • fix(tool,tunnel): clipboard read UTF8/write fallback; zero-expiry guard (#1822)
  • fix(tui): MCP browser-flow OAuth URL via global banner (#1790)
  • fix(tool): streaming range read records and conflict-checks (#1698 case 2) (#1983)
  • fix(util): WrapTransport proxy/staged timeouts; Truncate clamp (#1849)
  • fix(tui): five panels auto-enable on Update loop (#1794)
  • fix(tool): warp rejects unknown modifiers; spam filter honors allowed_domains (#1709 cases 1+3) (#1980)
  • fix(tui): twitch bind enable on Update loop; guarded ensure chain (#1767)
  • fix(agent): irreversibility gate pre-exec wiring; no self-grounding (#1798)
  • fix(tool): SIGKILL outcome authoritative; save_memory rejects blank keys (#1700 cases 1+2) (#1977)
  • fix(util): IsProcessAlive zombie handling via procfs (#1839)
  • fix(agent): logging-intel JS path Go-parity (#1800)
  • fix(tui,knight): signal panel esc during install; Windows lock error surfacing (#1757)
  • fix(tool): knowledge_graph tags filter implemented; slug-collision overwrite disclosed (#1692 cases 3+4) (#1973)
  • fix(agent): concurrent-map detector pkg-level/var-make/compound coverage (#1533)
  • fix(tool): iOS pre-tap error message carries the result text (#1970 nit) (#1971)
  • fix(tool): mobile typeText pre-tap fails loud on both backends (#1694 case 1) (#1970)
  • fix(tool): notebook_edit stale/read contract; four low fixes (#1696)
  • fix(agent): remove dead recordFirings wrapper (#1534)
  • fix(tool): notebook_edit records its write (#1696 case 1) (#1967)
  • fix(util): symlink fallback copy checks Close error (#1845)
  • fix(agent): precompact retry cancel chain; atomic cancelled; locked manager capture (#1828)
  • fix(chat,tool): error path line cap; exit_plan_mode plan-mode guard (#1697 cases 1+3) (#1964)
  • fix(tui): tmux menu availability gate; bare setup sole-arg alias (#1764)
  • fix(provider): simple probe aligns with tier classifier (#1788)
  • fix(permission): switch_mode escalation to bypass/autopilot asks (#1705 case 1) (#1961)
  • fix(agentruntime): swarm tunnel reasoning forwarding; nil-replay guard (#1497)
  • fix(tool): TodoWrite implements Cloner (#1707 case 1) (#1958)
  • fix(im,tui): inner-flush test reaches fixed path; output-mode persists (#1736)
  • fix(tui): provider i18n module slim to live keys; n-key hint 7 langs (#1732)
  • fix(tui,lanchat): no runCanceled poisoning on uncancellable windows (#1768)
  • test(checkpoint): pin agent-sourced revert vs user wrapper (#1708 companion) (#1955)
  • fix(context,config,tui): 1525 pins; lanchat dead-else (#1714)
  • test(agent): reconcile #1855 pin with #1843 case-2 semantics (#1954)
  • test(tool): darwin build tag for the iterm2 1691 companion test (#1952)
  • fix(tool,desktop): scaffold CI configs; scan_todos honest errors; bounded blame (#1701)
  • fix(config): protocol default on creation; key persistence surfaced; keys.env deletion (#1706)
  • fix(#1944): make the 1691 pin compile on non-darwin - shared pure helper, darwin-only escapeAS test
  • fix(tool,agent): staging binary/rename harvest; orphan removal; fuzzy ranking (#1704)
  • fix(tui): discovery clamps model cursor to filtered list (#1748)
  • fix(tool): tool_suggest deterministic tie-breaking (#1708)
  • fix(checkpoint): agent self-reverts record source=agent (#1708 case 1) (#1946)
  • fix(tool): im_tool health-wait honesty + menu escapeAS; adopt upstream 1691 semantics
  • fix(tool): iterm2 input reports escape-stripped control runes (#1691 case 2) (#1944)
  • fix(agent,config): claim-verify exemptions tightened; Copilot guards (#1695)
  • fix(agent): detector reset semantics per-turn quotas (#1843)
  • fix(desktop): config file sync poller; IM adapter write serialization (#1847)
  • fix(tui,toolreplay): per-submission retry budget; json.Number tape keys; missing-todos not clear (#1713 c1-2, #1711 c1-2) (#1940)
  • fix(agent): plan drift tool evidence; error-strategy candidates unmasked (#1850)
  • fix(tool): unmerged-first conflict classifier; git_tag rev guard; glob pattern sandbox (#1690 cases 1-3) (#1937)
  • fix(config,tui,agent): mainstream default endpoint; freeform cursor keys; mixed-question spaces (#1712)
  • fix(desktop): Linux notifications ride the shared unix queue (#1852)
  • fix(tui): cmdpane tail -n 0 + close/write lock pairing; /pin list rune clip (#1715 cases 1/2/4, #1716 case 1) (#1935)
  • fix(tool): send_team toRole follows sender identity (#1693)
  • fix(tool): git_reset/git_show refuse dash-prefixed args; reset files get -- separator (#1689 cases 1-3) (#1933)
  • fix(agent): detector cooldown arithmetic - honest single-shot, adjacent-iter cooldown, per-mode clocks (#1855)
  • fix(tui,cmd): dingtalk bind auto-enable rides configMutationMsg; pipe Close surfaces stderr (#1719) (#1931)
  • fix(tool,commands,agent): search_files pathspec parity; rune-count bounds; truncation marker; locked RMW (#1702)
  • test(agent): pin YAML list block-scalar edge shapes (#1721 companion) (#1928)
  • fix(tui): translate 4 Chinese leftovers in the German catalog; CJK scan guard (#1725)
  • fix(agent,tui): YAML list block-scalar edge shapes; extpane DCS/APC/PM stripped (#1721) (#1927)
  • fix(agent): prompt-injection guard self-defense exemption (#1481)
  • test(swarm): pin panic rollback at unit level; extract helper (#1688 companion) (#1925)
  • fix(provider): idle-read watchdog cuts streams wedged by dropped proxies (#1924)
  • fix(agent): self-correction gate exposure-neutral wording; session-timeout warnings reach LLM (#1492 B/C/F)
  • fix(swarm,tool,provider): panic rolls the task back; git_log clamps; blind-spot redacts (#1688 case 1+4, #1720 case 2) (#1922)
  • fix(agent): cap-proof spiral snapshots; green resets both (#1726) (#1920)
  • fix(tui): approval/diff-confirm options re-derive from current language (#1741)
  • fix(tui): hook editor validates before persisting (#1724 case 1) (#1918)
  • fix(tool): git_add directory-staging sensitive scan; checkout trim-copy mismatch; blame ref validation (#1687)
  • fix(agent): sensitive_json untagged-field blind spot; file_ops guard shapes; LSP serial-chain exemption (#1492 A/D/E)
  • fix(agent): command cache excludes substitution/background/redirection forms; failures never enter the cache (#1717)
  • ci(windows): add windows-process workflow for OpenProcess liveness verification (#1913)
  • fix(agent): anchor guard-state path keys to the workspace root; clear the exploration window on fire (#1559)
  • fix(util): OpenProcess ERROR_INVALID_PARAMETER means dead (#1723 case 1) (#1911)
  • fix(tool): checkout executes the trimmed ref; sensitive match anchors to segments (#1687 cases 2+3) (#1912)
  • fix(tui): pt provider hint advertises the n key (#1732 case 2) (#1909)
  • fix(agent): files-present git_reset ignores mode - tier Low, not HIGH-IMPACT (#1621 side note)
  • test(agent): pin the #1646 right-tracker compaction reset (verifDebt + overcorrection) (#1646)
  • fix(agent): strict verify mirror splits on the pipe separator too (#1564 case C)
  • fix(agent): logging-intel side notes - remove JS-default strip wrapper and dead counters; pin word-boundary final verdict (#1623)
  • fix(hooks): stripContentValues recurses into nested structures (#1730 case 1) (#1905)
  • fix(agent): close the 56-item post-compaction quota reset gap (#1651)
  • fix(tool,codehealth): review-diff ++ content lines, global MaxFiles, 200-byte isGenerated window, GUI OnPostExec, git stderr, quoted untracked paths (#1699)
  • fix(agent,memory): detector accuracy quartet - version context, JSON5, authoritative YAML dup keys, ident scope (#1773)
  • fix(tool): iterm2 non-darwin stub matches the ctx-threaded signatures (#1901)
  • fix(extract,tui): pdf marker off-by-one + null-page placeholder; ja i18n (#1729) (#1900)
  • style(tool): gofmt ghostty + iterm2 files (#1899)
  • fix(tool): iterm2 threads Execute ctx to every AppleScript call (#1894)
  • fix(agent): read-path recorder isolates url/directory/source keys; failed tools never record reads (#1619 case C)
  • fix(swarm): DeleteTeam re-entrant lock deadlock (#1895)
  • fix(tool): ghostty ctx propagation; linux size-99 hint parity (#1686)
  • fix(tui): drop the nonexistent q-show-QR hint from the IRC panel (#1728)
  • fix(lsp,tool): stale-push guard checks the document version; not-ready is no longer clean (#1654)
  • fix(agent): partial-success written files rejoin the revert list (#1762 case 1)
  • test(config): pin DOCKER_TAGS non-injection and npm fill-don't-overwrite (#1523 companion)
  • fix(config): deterministic wizard endpoints; ws-aware MCP patch; npm fill-don't-overwrite; knight scoped fallback (#1523)
  • test(mcp): pin the well-known OAuth probe HIT path (#1806)
  • test(subagent,swarm): pin normalized Delete and shutdown result cleanup (#1633 companion)
  • fix(mcp,swarm,subagent): runner guard on the option-transport path; shutdown frees result; DeleteTeam waits; Delete compares normalized (#1633)
  • test(tool): pin partial-output-on-error for code execution (#1645 companion)
  • fix(tool): code-index dirty set survives lock contention; execution errors keep partial output (#1645)
  • fix(im,desktop): bound feishu local reads; surface desktop persist failures (#1893)
  • test(plugin): pin disabled-refusal in connectOne; error-returning SetMCPDisabled (#1740)
  • fix(tui): capture shell-run ownership before clearing it (#1781)
  • fix(im): bound local-path attachment reads across all adapters (#1739)
  • fix(plugin,tui): reconnect keys respect disabled; persist failure surfaces (#1740)
  • test(webui): pin unknown-api 404 JSON + double-Start refusal (#1856/#1857 companion)
  • fix(webui): restore read deadline after legacy round; map reasoning/system events; WS statics (#1858)
  • fix(webui): terminal WS frames block instead of dropping; Start lock discipline (#1857)
  • fix(webui): unknown /api/ paths 404 instead of SPA HTML; auth fails closed; query token is WS-only (#1856)
  • fix(webui,tui): webchat images ride into the TUI; gate ONLY rule; unsub drain out of lock (#1860)
  • fix(sdk): plugin Execute recovers panics into IsError responses (#1863)
  • test(agent): pin sed multi-expression exemption verdicts (#1685)
  • fix(tui): onboard sentinel guard on every path; cleared on discovery success (#1892)
  • fix(agent): strip the s-command prefix from later sed expression chunks (#1891)
  • fix(agent): sed multi-expression escape; isNoOp respects composed commands (#1685)
  • fix(tui): knight hint matches proposed status; lanchat popup self-clears; nick sanitize on leave/rename (#1738)
  • fix(tui): knight task events count in-flight runs; start no longer clears loading (#1890)
  • fix(a2a): example store clones tags in-bound and on read (#1746)
  • fix(tui): nostr enable rides configMutationMsg; onboarding refuses sentinel models (#1745)
  • fix(mobile): P2P ICE grace window; disconnect disposes the peer; offer failure cleans up (#1876)
  • fix(a2a,tui): push allowlist re-resolves hostnames on miss; PC bind prefetches adapter name (#1889)
  • test(tool): pin cross-device error recognition incl. Windows text (#1684)
  • fix(mobile): snapshot replace unions anonymous messages; merge interleaves them by time (#1870)
  • fix(vcs,tool): svn externals P lines, errno cross-device, dotfile stems (#1684)
  • fix(tui): remote-entry idle gates include loading; interrupt drain keeps images (#1744)
  • fix(mobile): connection store merges loads; bg connect in-flight guard; honest unconfirmed status; room-identity idempotency (#1869)
  • fix(tui): snapshot endpoint resolution on the Update loop; bind ensures runtime (#1750)
  • fix(a2a): allowlist host/bare-IP entries survive the dial-time check (#1751)
  • fix(tui): resume gate keeps its key - inequality covers both completion orders (#1887)
  • fix(mobile): connect() detaches the live socket before reconnecting; images factory skips malformed elements (#1867)
  • test(tool): pin exit-code windows blindness and FS-fold guards (#1683)
  • fix(mobile): ask_user submit/cancel joins the #1023 guard trio; workspace-name padding modulo (#1873)
  • fix(tool): windows signal-blindness; case-aware protected patterns (#1683)
  • fix(agent): discard-all detector covers --worktree long flag, semicolon chains; -b excluded (#1886)
  • fix(tui): gate stale resume completions (#1755)
  • fix(tool): wire Start's ctx into non-detached jobs; tool path opts out explicitly (#1756)
  • fix(scripts): dedup rank keeps vision; defaults skip non-chat modalities (#1862)
  • test(image): pin the DPI snippet's false-return fallback (#1754)
  • fix(agent,image): discard-all ref forms; DPI false-return fallback (#1754)
  • fix(agent): secret-redaction guard covers lsp_rename; index-splice keeps trailing quotes; sk- dash family (#1682)
  • fix(mobile): own the QR scanner controller in a StatefulWidget (#1871 case 4)
  • fix(mobile): subagent cleanup defers while the card is expanded; resumed probes socket liveness (#1874)
  • test(tui): pin the shared toggle's mutation flow (#1763)
  • fix(tui): follow-view rebuild skips on unchanged current task (#1761)
  • fix(tui): shared toggle joins configMutationMsg; http(s)-only system URLs (#1763)
  • fix(tui,agentruntime): stream panel selection-sync joins visiblePresets; taskfile comments and CRLF (#1885)
  • test(tui): pin stream panel visible-preset mapping (#1759)
  • fix(agent): container-store handoffs recognized; body consumers are not transfers (#1884)
  • fix(agentruntime): taskfile block-scoped targets, tab-separated module path (#1681)
  • fix(tui): stream panel visible-preset index mapping, cached probes, custom dedup (#1759)
  • fix(knight): scope-qualify staging notification dedup keys (#1883)
  • test(agent): pin read-only table membership against #1859 drift recurrence
  • fix(agent): ownership transfer requires an actual handoff, not a reference (#1680)
  • fix(knight): scope-qualify staging fail counts and eval cooldowns (#1760)
  • fix(agent): align read-only tool tables - 11 additions across three consumers (#1859)
  • fix(lsp): normalize both same-directory skips; exclude unspecified severity (#1881)
  • fix(mobile): last-write-wins arbitration for degraded-window edits; separate history fallback key (#1872)
  • fix(tui): extend project-memory gate to tunnel, webchat, and cron entries (#1882)
  • test(agent): pin green-line fingerprints and tree-mutation reverify bumps (#1679)
  • fix(tui): remote entries queue behind project-memory loading (#1762)
  • fix(agent): green-line filter in error fingerprints, tree-mutations bump reverify (#1679)
  • fix(agent): delta-gate python-indentation; skip bracket/triple-quote continuations (#1865)
  • fix(agent): route post-write detector warnings through the guidance budget (#1864)
  • fix(tui): delete tool label and empty-target git activity keys (#1765, #1766)
  • fix(lsp): surface cancellation from slice and call-hierarchy retries (#1766)
  • fix(mobile): no-op wakelock on ohos at runtime; swallow plugin failures (#1872)
  • fix(tui,agent): session-cycle guard delegates to hasActivePanel; terminal gate on spiral wait-attribution (#1880)
  • fix(agent): wait-command verify attribution, impact-gate flag on real output (#1773)
  • fix(tui): session-cycle keys yield to open panels (#1772)
  • fix(desktop,image): pixel ceiling for pasted clipboard images (#1866)
  • fix(agent,checkpoint): clear expired-read ledger for every reverted file; anchor bgorphan not-found to the error channel (#1879)
  • fix(desktop): non-blocking macOS toast enqueue with rollback, per-event recover, drain on disable (#1866)
  • fix(agent): evidence-typed causal wording, evicted-job orphan cleanup (#1771)
  • fix(agent): clear expired-read ledger on undo_edit revert (#1770)
  • fix(mobile): dispatch ohos to the manual-input scanner stub at runtime (#1871)
  • fix(agent): exempt /dev/* sinks and quoted targets from shell-mutation detection (#1875)
  • test(memory,agent): pin #1777 polarity gate and #1778 suppression guards
  • fix(memory,agent): make the #1777 polarity gate and #1778 dart mapping actually fire (#1878)
  • fix(agent): detector accuracy - uncapped fingerprints, comment-guarded suppression counting, vue/svelte coverage, rust inline tests, dart layout (#1778)
  • fix(permission,memory): atomic rules snapshot, tight polarity-conflict gate (#1777)
  • fix(desktop,config): close MCP tombstone gaps in RemoveMCPServer failure paths (#1868)
  • fix(mobile): guard appendSessionEvent against relay replay below cursor (#1871)
  • fix(plugin): compare OAuth client fields in mcpServerConfigEqual (#1868)
  • fix(tui): gate pastes under questionnaire/tmux menu, sync tmux exit save (#1775)
  • fix(agent): wire irrevGate recordOutcome after recordAction (#1877)
  • fix(permission,agent): lock the deny fast-path snapshot, revoke failed grounding (#1776)
  • fix(agent,agentruntime): shell-mutation surfaces and elicitation required-field decline (#1678)
  • fix(agent): query-converge glob exclusion + race-hint aliased-import resolution (#1483)