52 commits since v0.3.82. 125 files changed, +8,152 / -834 lines.
✨ Features
a765bc60doctor --fix repair mode: repairs stuck cron rows, stale markers and permissions instead of only reporting themed103d2eOne writer at a time per path: concurrent writes to the same file serialize instead of racing9fe65235Sub-agent worktree isolation: each child gets its own worktree so a fan-out stops colliding35057f13Type-aware acceptance criteria (#1133): criteria are enforced against the plan's toolchain, not just countede80730f9DeepSeek thinking knobs: sends the parameters DeepSeek actually reads
🔧 Fixes
0c86df9eprofile_list in KNOWN_TOOL_NAMES (#1161): the custom OpenAI-compat provider stops rejecting the tool2c3fbf58Profile-addressed A2A gateway (#1161): the gateway resolves the profile it serves1261e420tasks_list, detached status files, prompt hint (#1160)3b398955A2A sessions resume by context id (#1159): dead stream action droppedfaa1a43cTracked plan card finalized on completion (#1158): instead of deleted884a6b01Scoped bot menus for solo-owner groups (#1155): auto-registerede09a7f08Plan glyph sets converge on status_mark (#1157)eb44eb41Checkbox glyphs replace the thin-dot pending mark (#1154)8c4e396bA provider's config models are its own: not the active one's3d810d18Folded-final reclaim suppressed after a dedup match (#1152)3f02b37fBuried flow blocks restick (#1150): bot-bubble evidence and a sticky budget56044d3cModel picker enumeration deduped (#1149): between body and buttons9665dd34/stop cancels immediately (#1148): during provider handshake and retry backoffs9e96cc28Stealth-model remap WARN healed (#1147): and the context-window log stops lying918d430fModel picker pages and filters: instead of arriving wholea0d33d86Waiting state in the settled card header: while background tasks run9a6a1065Overlong follow-up option labels compacted: per channel8b4cbfb5Plan-card prose pipeline unified (#1142): soft-break parity, mermaid through the gated converterad242aa4No design scaffold .md for checklist plans (#1145)d2b77a24Plans find the project from the session's folder03418282Plans verify with the project's toolchain: not always cargo14978039A loop-detector kill walks the chain: instead of dropping the turnab70149bA cron job sends where it was configured to: or nowheref3302581Vacuous-pass guard and audit trail (#1134, #1135): for criteria_policy flips8def58e3Shared status_mark() helper (#1136): for the Telegram card29f65bc0Epistemic store resolves under the profile-aware home (#1137)265235d2DeepSeek empty content string on tool-call-only turnsf146a08bPhantom detector rolls the whole chain: never delivers work that was not donee6bf6e16A shared session answers only for its own chatdf3411deA reaction lands on the session that owns it: or nowheref523564fRestart into the binary the evolve signal named (#1130)7c11f3a3A config reference that resolves to nothing is reported50e4723fA turn that ran elsewhere cannot rewrite the session's model57f5283cContext budgets against the provider's token count: not our estimate
📖 Documentation
3ba07297readme: refresh the test counts05ea47ebreadme: document sub-agent worktree isolation and path locks7626d24dreadme: record what the verification gate now checks93cd4c2dprompt: state the commit rule once, in the preamble8642fe8btemplate: tell agents how diagrams actually reach Telegramd5367ca0testing: generate the coverage table from the test runner062aabdbtesting: regenerate the coverage table6deb0b45changelog: correct the pre-release build trigger claim (#1111)
🧹 Miscellaneous
2d44e291ignore desktop/ for nowf2145df7build A2aConfig in one initializer225da6ccapply cargo fmt7424e3dedrop the startup-warning snapshot and its delivery (revert)67019229clear the lints Rust 1.98 added
📊 Stats
- 52 commits since v0.3.82
- 125 files changed, +8,152 / -834 lines
- 6,997 tests (6,965 passed, 0 failed, 32 ignored)
Full Changelog: v0.3.82...v0.3.83