- Intelligent context offloading: large tool results (>15k chars) auto-moved to RLM memory
- Persistent history context: compacted messages offloaded to RLM history variable
- Full MCP protocol: SSE transport, Resources (resources/list, resources/read), Prompts (prompts/list, prompts/get)
- mcp_read_resource and mcp_get_prompt virtual tools exposed to the model
- Dialectical Duo mode with Player/Coach TUI rendering
- Dynamic system prompt refresh at each turn for up-to-date RLM/Duo/working-set context
- project_map tool for automatic codebase structure discovery
- delegate_to_agent alias for streamlined sub-agent delegation
- Default theme changed to Whale with updated color palette
- Fix MCP test compilation for updated McpServerConfig struct shape
- Fix clippy warnings (strip_prefix, inspect_err, flatten, is_some_and)
- Set is_loading immediately in dispatch_user_message to prevent
a race condition where the user could dispatch two messages before
the TurnStarted event arrived
- Raise fixpoint loop cap in enforce_tool_call_pairs from 10 to
messages.len() so long conversations converge; add warn logging
on non-convergence
- Scan non-contiguous tool results in build_chat_messages safety net
and drain orphaned results that aren't immediately adjacent
- Log specific missing tool IDs when stripping orphaned tool_calls
- Add tests for partial tool results and long-chain convergence
- Bump version to 0.3.4
- Redesign footer: live clock, lowercase mode badges, color-coded context %
- Stream thinking/reasoning blocks in real-time with sidebar style and cursor
- Replace ThinkingSummary with richer Thinking variant in history cells
- Remove dead code (unused footer helpers, context bar, copy hint)
- Bump version to 0.3.3
The dtolnay/rust-toolchain action already specifies the toolchain version
in the action reference (@stable). Adding toolchain: stable as an input
was causing 'toolchain is a required input' errors.
Fixed in:
- ci.yml
- release.yml
- crates-publish.yml
- Use strip_prefix instead of manual string slicing in apply_patch.rs
- Use vec![] macro instead of Vec::new() + push in api_key.rs
- Fix iter_overeager_cloned by filtering before cloning in session_picker.rs
- Use ? operator instead of let...else in delete_selected
- Allow clippy::too_many_arguments for build_list_lines
🤖 Generated with [Claude Code](https://claude.com/claude-code)