- 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)