New Features
- User message metadata (text elements and byte ranges) now round-trips through protocol/app-server/core so UI annotations can survive history rebuilds. (#9331)
- Collaboration wait calls can block on multiple IDs in one request, simplifying multi-thread coordination. (#9294)
- User shell commands now run under the user snapshot so aliases and shell config are honored. (#9357)
- The TUI now surfaces approval requests from spawned/unsubscribed threads. (#9232)
Bug Fixes
- Token estimation during compaction is now accurate, improving budgeting during long sessions. (#9337)
- MCP CallToolResult now includes
threadIdin bothcontentandstructuredContent, and returns a defined output schema for compatibility. (#9338) - The TUI “Worked for” separator only appears after actual work has occurred. (#8958)
- Piped non-PTY commands no longer hang waiting on stdin. (#9369)
Documentation
- MCP interface docs updated to reflect structured output schema and
threadIdbehavior. (#9338)
Chores
- Windows builds enable the PowerShell UTF-8 feature by default. (#9195)
Changelog
Full Changelog: rust-v0.86.0...rust-v0.87.0
- #9331 Add text element metadata to protocol, app server, and core @charley-oai
- #9195 chore(windows) Enable Powershell UTF8 feature @dylan-hurd-oai
- #8958 fix(tui): only show 'Worked for' separator when actual work was performed @ThanhNguyxn
- #9338 fix(mcp): include threadId in both content and structuredContent in CallToolResult @bolinfest
- #9337 Fix token estimate during compaction @etraut-openai
- #9336 rename model turn to sampling request @aibrahim-oai
- #9232 feat: propagate approval request of unsubscribed threads @jif-oai
- #9357 feat: run user commands under user snapshot @jif-oai
- #9294 feat: collab wait multiple IDs @jif-oai
- #9366 feat: CODEX_CI @jif-oai
- #9367 prompt collab @jif-oai
- #9369 chore: close pipe on non-pty processes @jif-oai