Changelog
- 5342a8a Merge pull request #6544 from SivanCola/fix/credential-store-env-isolation
- fad0933 fix: isolate all stored credential env keys
- 0869add Merge pull request #6542 from SivanCola/fix/delivery-readiness-recovery
- 9a5011c test(worktree): cover Windows long checkout paths
- bfb0bf4 fix(worktree): harden Windows isolation
- fbdedc8 test: make worktree checks portable on Windows
- 03b39a6 fix(delivery): recover readiness and isolate concurrent writers
- f88b636 Merge pull request #6540 from esengine/codex/stabilize-bot-lock-test
- de3927e test: bound bot config writer stress
- 1a0f60f Merge pull request #6537 from esengine/codex/harden-nsis-install
- 65ddec5 ci: use curl for pinned NSIS archive
- d03c89a ci: make NSIS setup independent of Chocolatey
- b589b9a Merge pull request #6536 from esengine/fix/release-gate-hardening
- f5179b4 fix: harden release-critical provider and credential paths
- 392b4a3 Merge pull request #6498 from SivanCola/fix/plan-delivery-yolo-rebuild
- e864fc4 docs: describe the implemented strict read-only boundary precisely
- 9bbd138 fix(agent): make reader authorization tamper-proof at MCP dispatch
- fdaf89c docs: list the strict read-only entrances and their boundary
- 5f5c869 Merge remote-tracking branch 'origin/main-v2' into codex/pr6498-readonly-boundary
- 912dee6 Merge pull request #6482 from SivanCola/feature/mcp-settings-simplification
- 0c61f6b docs: fix Plan and destructive-reviewer contract drift on public surfaces
- 60fc21f fix(mcp): migrate legacy receipts at the pre-start gate, widen credential keys
- 2b88997 docs: align Plan and MCP approval semantics with enforcement
- 3ad8dfa fix(approval): degrade unavailable auto_review to fresh human approval
- a753648 fix(mcp): credential-aware identity fingerprints and exact launcher pins
- 5092b23 fix(mcp): enforce live official allowlists and receipt integrity
- ef5bfd0 Merge remote-tracking branch 'origin/main-v2' into feature/mcp-settings-simplification
- 53f992c fix(windows): stop loader-grant heap corruption and icacls cost
- 3212786 fix(mcp): harden identity, cache, and transport trust boundaries
- 95c023b Merge pull request #6516 from SivanCola/chore/retire-windows-sandbox
- c542727 test(sandbox): expect Windows retired-backend remediation wording
- c051255 fix(desktop): match retired-backend runtime escape reason for localization
- 8c02916 chore(sandbox): retire Windows native backend
- 938b66a fix(windows): scope loader grants to process startup
- 313defe fix(windows): serialize ACL mutation phases
- dd5c46f fix(windows): isolate concurrent MCP ACL updates
- 6348d13 fix(windows): preserve sandboxed MCP startup
- 9b6fe02 fix(windows): scope MCP AppContainer ACLs
- 8451423 fix(sandbox): expose temporary MCP executable safely
- 33d2323 Merge remote-tracking branch 'origin/main-v2' into feature/mcp-settings-simplification
- 83639eb fix(mcp): close trust and lifecycle review gaps
- ad9c3fc Merge pull request #6504 from SivanCola/fix/post-edit-context-refresh
- 249f9e6 fix(agent): bound edit receipts and refresh previews
- c8ee98e fix(agent): ground edits without forced rereads
- 988190f Merge pull request #6497 from SivanCola/fix/serial-todo-guardrails
- 3ff177d fix(agent): unify strict read-only MCP execution boundary
- d78c8e1 Merge remote-tracking branch 'fork/feature/mcp-settings-simplification' into codex/pr6498-readonly-boundary
- bd149dc fix(mcp): exclude credential values from cache identity
- ddcb0ad Merge latest PR head before validation
- 32c479f docs(todo): describe single current item continuity
- a906672 fix(todo): seed layered plans with executable child
- 9c60e59 Merge remote-tracking branch 'fork/feature/mcp-settings-simplification' into codex/pr6498-readonly-boundary
- 5fcca24 fix(mcp): preserve trusted reader preflight snapshots
- c7ace72 ci: retrigger checks after Actions scheduling recovered
- 851c153 Merge remote-tracking branch 'fork/feature/mcp-settings-simplification' into codex/pr6498-readonly-boundary
- 868d3fa Merge remote-tracking branch 'origin/main-v2' into feature/mcp-settings-simplification
- 267b67b Merge main-v2 into fix/serial-todo-guardrails
- 568da85 Merge remote-tracking branch 'fork/feature/mcp-settings-simplification' into feature/mcp-settings-simplification
- c636f01 feat(mcp): enforce trusted execution boundaries
- 6463e6b ci: retrigger checks
- c8723be Preserve the single in_progress contract for phase chains
- ddca95f Merge pull request #6460 from SivanCola/feature/reasonix-guard
- 1b9ff51 fix(recovery): harden pre-ready exits, rollback serialization, and Safe Mode gates
- fb37b9b Make the serial todo contract level-aware
- 30faf50 fix(desktop): align MCP details and compact layout
- 1bb724a Merge origin/main-v2 into feature/mcp-settings-simplification
- 791ec4d fix: retire hidden agent step limits
- fabdc9e fix(desktop): preserve Windows paths in notices
- af89911 chore(plan): remove obsolete trust helper
- b9a1f8d Merge pull request #6500 from SivanCola/fix/reasoning-language-imperative-zh-block
- c04cbfc fix(desktop): normalize Windows workspace paths
- bed8c3f fix(agent): make the zh reasoning-language block imperative
- 6ca868e Merge PR #6498 hardening into feature/mcp-settings-simplification
- d4ebb15 fix: unify strict read-only subagent execution
- 024e35c fix(desktop): harden Windows update recovery
- 19ae765 Make todo progress guard adaptive
- 90d32de Merge origin/main-v2 into feature/mcp-settings-simplification
- 88be1a2 fix(plan): separate workflow from permissions
- a2cb36e fix: remove obsolete desktop mode helper
- c3ab1ca fix: harden Plan mode across controller rebuilds
- 1a45a16 fix(agent): enforce serial todo progress
- 6834e2c Merge pull request #6494 from SivanCola/fix/classic-pinned-section
- 82fa7c9 Show pinned conversations in classic sidebar
- 8c548f2 chore(mcp): credit shared contributors
- 20d8c69 Merge remote-tracking branch 'origin/main-v2' into HEAD
- 1f91f80 fix(control): stop auto-plan re-entry after user exits plan mode
- 109da0a fix(desktop,mcp): close settings editor and install validation gaps
- a413c82 fix(mcp): keep installed MCP writers on the normal permission path while planning
- 417335f Merge pull request #6434 from SivanCola/feature/claude-plugin-compat
- 6c13597 fix(mcp): close approval and settings gaps
- a95466b Merge pull request #6438 from SivanCola/feature/acp-independent-session-axes
- 0d5f704 fix(plugins): polish hook adapter semantics and deflake spawn tests
- 9abf0a5 test(acp): simplify embedded factory selector
- e08431c Merge pull request #6404 from myipanta/fix/archive-double-click-race
- 50083f3 Merge remote-tracking branch 'origin/main-v2' into feature/acp-independent-session-axes
- d9633fd fix(acp): keep config rebuilds ordered and failure-atomic
- d20634d Merge pull request #6432 from SivanCola/fix/pending-prompt-stale-status-wipe
- a3b8a7a Merge remote-tracking branch 'origin/main-v2' into HEAD
- c0c9361 fix(plugins): complete Claude hook contract adapters
- 4f89c15 Add layered MCP approval policy
- 01b8d12 fix(desktop): surface residual topic cleanup failures
- 69ffaf7 fix(desktop): ignore stale approval drain results
- 7ddd7a8 fix(guard): alias snapshot IDs in AI assist
- 0d64e3c Merge origin/main-v2 into feature/acp-independent-session-axes
- 5b0dfb0 fix(guard): harden diagnostic privacy and repair commits
- ca98996 fix(desktop): delete the topic title last so retries keep a locator
- 22aa3d3 Merge pull request #6468 from SivanCola/feature/classic-sidebar-activity-sort
- ef7e813 fix: complete Claude hook tool_input/tool_response contract translation
- 7127a85 fix: persist switched system prompt, merge pending config axes, lock drift emitters
- 7515083 fix(desktop): dismiss only backend-drained approvals on mode switch; epoch-guard submit failures
- 659cbb9 fix(guard): send only an allowlisted diagnostic DTO to the AI provider
- b6537ed fix(recovery): commit repair transactions independently of the audit log
- d65d7b3 Merge remote-tracking branch 'origin/main-v2' into fix/pending-prompt-stale-status-wipe
- 58eaeca Merge remote-tracking branch 'origin/main-v2' into HEAD
- 1ec2054 Merge main-v2 into Claude plugin compatibility
- 84a1e12 fix(desktop): dedupe exact date in topic row title and aria-label
- 20194d5 fix(desktop): scope topic deletion cleanup to roots holding the topic
- d82a076 fix(desktop): address classic sidebar review findings
- 6abb2d8 Merge origin/main-v2 into feature/acp-independent-session-axes
- cad8fd1 Merge pull request #6467 from SivanCola/fix/goal-delivery-yolo-integration
- 39133e4 fix(guard): fail closed on any incomplete failed-install rollback
- 99e12a0 fix(recovery): make snapshot-restore cleanup cross-device safe
- 3e585fc fix(desktop): converge topic deletion on retry after partial failure
- a149b43 Merge pull request #6470 from SivanCola/fix/bot-stop-drain-followup
- b22e9e0 test(desktop): clean up pending crash file in Safe Mode retention test
- 79cbebe fix: unblock restored delivery review baseline and non-Goal recovery submit
- 59f0460 Merge pull request #6469 from SivanCola/fix/windows-shell-pasted-paths
- 076736c fix(recovery): preserve symlinked config through snapshot restore and undo
- b6f4180 fix(recovery): compensate failed release-unit rollbacks; never launch mixed installs
- b46c5f2 fix(recovery): stop Safe Mode from persisting tabs or sweeping recovery GC
- 08e7719 fix(recovery): force all reporting off in Safe Mode
- 80a44f0 test(boot): pin Safe Mode tool surface across token modes
- 197fd4b Merge origin/main-v2 into feature/reasonix-guard
- e201ac3 fix(cli): keep UNC and device prefixes in Windows shell unescape
- 787eae7 fix(bot): abort qq gateway dial on stop
- dc444f8 Merge pull request #6472 from SivanCola/fix/windows-mixed-dpi-restore
- bd0dc0c feat(mcp): simplify settings and align tool approvals
- 7146194 Merge pull request #6461 from SivanCola/feature/lean-agent-profiles
- a5d5f6f feat(desktop): add classic topic quick actions
- f9ced13 feat(desktop): single-line classic rows with right-aligned time
- 582061b feat(desktop): codex-inspired classic sidebar density and preview
- e5629a8 feat(desktop): sort classic sidebar topics by activity time
- 2f9579f fix(desktop): format vendored WebView2 sources
- df94dc7 fix(desktop): keep WebView2 scale correct after restore
- aea376e fix(desktop): render selection reference paths as JSON strings
- a891c82 fix(bot/qq): close and drain the QQ gateway connection on stop
- 50786ba fix(bot): publish and consume turn cancel under one lock discipline
- acf6461 fix(recovery): restore quarantined symlinks as symlinks on undo
- 4285eb0 feat(agent): let plan mode connect the workflow planning subset
- 224bbfa fix(cli): support shell-escaped Windows pasted paths
- 2cfaef2 fix(recovery): close rollback and undo crash windows from second review
- 4828ef1 Merge pull request #6454 from SivanCola/feature/add-selected-text-to-chat
- c01967a fix(agent): preserve Economy tool allowlists
- 8774d43 fix(bot): drain gateway lifecycle on stop
- d6a07dc Merge pull request #6060 from h4rk8s/jawa/reasonix-image-paste-token-upstream
- abe8d05 fix: integrate goal delivery and yolo lifecycles
- bcb7fb3 test(cli): gate POSIX source cases on Windows
- 2845bbc fix(recovery): harden rollback, startup counting, plan undo, and read-only paths
- 5a3fb24 test(cli): make shell path coverage platform-aware
- 623c9b6 Merge pull request #6463 from SivanCola/fix/classic-tabbar-empty-drag-region
- 25b7764 docs(agent): unpin example system_prompt and correct Economy prefix wording
- 910ba55 fix(desktop): make classic tabbar whitespace draggable
- 485c16d fix(cli): apply full POSIX backslash semantics when unescaping pasted paths
- 6c0cac8 feat(agent): streamline prompts and Economy tool surface
- 234bc26 Merge branch 'main-v2' into jawa/reasonix-image-paste-token-upstream
- 165477f feat(desktop): align frontend @ref parsing with escaped-whitespace grammar
- 3baf0b3 feat(recovery): add offline Guard and safe mode
- 61cfa52 test(desktop): pin workspace floating-menu teardown on tab/scope switch
- 4f895c5 fix(desktop): discard workspace floating menus on tab/scope switch
- 0152a8e fix(desktop): keep transcript selections from routing across sessions
- af54a53 feat(control): let @ref tokens carry backslash-escaped whitespace
- fde0c2f Merge pull request #6456 from SivanCola/fix/cli-composer-mouse-selection
- a799098 feat(desktop): add workspace code selections to the chat context
- 3c4229b Merge pull request #6457 from SivanCola/feature/external-opener-menu
- fbaaaea fix(cli): unescape and tokenize shell-escaped pasted paths without whitespace
- 149b4be Merge pull request #6458 from SivanCola/fix/plan-delivery-readiness-loop
- 2b3a48d test(agent): cover plan-blocked required capability through the full loop
- 58f2a60 fix(desktop): reap opener processes and persist after launch
- 525bb13 fix(desktop): register the add-selection shortcut and dismiss the overlay on Escape
- 41d370a fix(cli): cover image-ref paste paths in wide repaint check
- 3aba710 fix(cli): address composer selection review findings
- a8a4492 fix(agent): preserve loop-guard recovery for plan-mode capability gate
- 36632b5 fix(desktop): satisfy cross-platform opener lint
- 3449bb3 Merge pull request #6449 from SivanCola/fix/mcp-invalid-schema-isolation
- 8c0a693 fix(agent): separate plan and delivery readiness gates
- fc5d812 fix(cli): support mouse selection in composer
- 84ae08f feat(desktop): add dynamic external opener menu
- 90390d8 feat(desktop): add selected text to chat context
- 1b48ed0 fix(mcp): disable schema compiler URL loader
- 9be6e1e fix(mcp): require object root type for tool schemas
- ed113b4 fix(mcp): quarantine tools with invalid schemas
- 1ec5cbe Merge pull request #6394 from billycat/feature/fix-6368-tui-cjk-repaint
- 612b4ae test(cli): cover chooser free-text wide input repaint
- b07c0e9 fix(registry): reject bare package-name sources for kind=skill (#6444)
- 75e75ca feat(registry): reject unresolvable publish sources at the schema (#6442)
- 548c978 fix(cli,serve,desktop): keep profile prompt and session grants correct across controller rebuilds
- b36db7e fix(acp): keep profile prompt, axis switches, mode drift, and grants correct across controller rebuilds
- f2bef3b feat(acp): expose independent session axes
- 78fdf7d fix(desktop): scope resolved-prompt tombstone to controller epoch and RPC success
- b0255bc fix(plugins): translate tool_input field names and cover every Agent entry point
- ca2c081 Merge pull request #6431 from SivanCola/feature/claude-cli-interactions
- a2821a3 fix(control): sync sub-agent gate on interactive approval-mode switch
- 347fd46 fix(plugins): flag Claude hook matchers that can never fire
- 9ed1509 fix(desktop): ignore replays of an already-answered prompt id
- ef0aa6e fix(control): propagate headless approval mode to sub-agent gates
- 19e25a9 fix(plugins): stop hook auto-allow from bypassing fresh-human approval
- 3703cf4 Merge pull request #6433 from SivanCola/fix/clarify-app-chrome-tabs
- 741fb83 fix(plugins): map Claude tool names in hooks and close remaining deny gaps
- 8b2d513 test(boot): pin --add-dir resolution against explicit --dir workspace root
- 9fa57fd fix(control): headless auto preserves explicit ask rules (deny, not silent-allow)
- e7cb007 fix(cli): make headless run safe and align approval/print/completion contracts
- 03b9200 fix(cli): align picker j/k search behavior
- a99256d feat(cli): align terminal interactions with Claude Code
- 062035a Merge pull request #6283 from SauronSkywalker/fix/cli-dir-set-workspace-root_20260710_113109
- 6e4596c fix(desktop): refetch backend truth after rejecting a stale prompt snapshot
- e9c30ba fix(cli): register cwd-restore cleanup after t.TempDir() in subagent --dir test
- cd8a6c2 Merge pull request #6421 from SivanCola/fix/subagent-delivery-readiness-cascade
- 019719d fix(cli): thread --dir workspace root through subagent run/try setup seam
- 6506ba4 fix(plugins): honor Claude hook deny decisions and fix hook dedup
- ba11d08 Clarify AppChrome tab boundaries with spacing, outlines, and dividers
- e85119c fix(jobs): close background-evidence lease lifecycle gaps
- ea212e8 Merge pull request #6416 from JesonChou/fix/issue-6391-active-tab-indicator
- c49e856 fix(cli): fail loudly when --dir workspace root can't resolve; add tests
- 61602e3 fix(cli): make --dir explicitly set workspace root instead of falling back to git-root detection
- ad11beb fix(desktop): anchor prompt freshness to the prompt id, not each replay
- d9aaecc Fix macOS accent direction and preserve active marker on keyboard focus
- 5210a06 Merge pull request #6424 from SivanCola/fix/perf-popup-resume-and-copy
- dc3004e Merge pull request #6426 from SivanCola/fix/serve-transcript-autoscroll
- 7244493 fix(jobs): lease background evidence until the collecting turn delivers
- 7b7b511 fix(desktop): stop a throwing execCommand copy from wedging the Copy button
- 460f0c3 fix(desktop): gate resume lag on focus too and route copy through the shared clipboard helper
- 673b1f3 fix(serve): route approval shortcuts by focusing the prompt card
- 1d5cb7e fix(jobs): drop legacy evidence synthesis and drain collected evidence from artifacts
- cfe2b80 feat(plugins): add Claude plugin compatibility
- 25aa97e Merge pull request #6420 from SivanCola/feature/crash-stats-retention
- 95390ad fix(desktop): keep live approval/ask prompts across stale runtime snapshots
- e36cccc fix(jobs): recover background mutation evidence after restart
- 835ad60 fix(tool): defer background evidence collection during plan mode
- 6b30958 fix(crash-report): detect stalled ingest between checks
- 03e0213 fix(serve): harden prompt lifecycle, forced reveal, unpin intent, picker modality
- c322200 test(agent): normalize background evidence paths
- 606bd1c fix(agent): preserve background subagent evidence
- 9b0abea fix(serve): scope global key shortcuts away from text entry and chords
- 687ecd0 fix(crash-report): validate and revoke alert webhook
- e26f606 fix(serve): force-scroll blocking approval and ask prompts into view
- 62f7797 fix(serve): stop autoscroll from fighting user scroll during streaming
- 2f92a19 ci(crash-report): mirror ALERT_WEBHOOK repo secret to the worker on deploy
- bf5649c fix(desktop): ignore suspended-timer delay at visibility resume and harden popup copy
- eb443a3 fix(agent): stop delivery sub-agent readiness failure cascade
- 7068d55 feat(crash-report): ingest write sentinel and graceful D1 degradation
- 2cb3431 feat(crash-report): purge expired stats rows on a daily cron
- 0cbc898 fix(desktop): add accent colour underline to active tab / 选中tab底部增加主题色条
- 8edd821 fix(desktop): prevent double-click race on topic archive (#6312)
- 448a43a fix(cli): 修复 Windows 上 chooser 自由文本模式下宽字符输入的重绘问题
- 21938cd fix(cli): recognize shell-escaped pasted image paths