π©Ή Patches
- chore(release): patch v0.1.7 β post-release fixes + model-adaptive effort selector (
0f5d970)
π Direct commits
Work pushed to main outside of pull requests in this release:
- chore(release): stamp v0.1.7 [skip ci] (
21c1e6b) - chore(release): v0.1.7 β deep-scan hardening pass + ultracode (
a6a092e) - docs: document ultracode mode (keyword + /ultracode skill) (
41e3fc8) - feat(query): activate ultracode mode per-turn from the submitted prompt (
bd2649a) - feat(tui): render the ultracode keyword with a purple gradient (
592c1a7) - feat(tools): add bundled ultracode skill + keyword/addendum helpers (
2f013f7) - chore(clippy): clear remaining lints by hand + targeted allows (
3885289) - chore(clippy): apply reviewed clippy --fix autofixes (
0b270d6) - feat(install): default install dir to XDG bin location (
029d677) - refactor(tui): route home-based paths through config_dir (
2a700ac) - refactor(commands): route home-based paths through config_dir (
97aefd3) - refactor(tools): route home-based paths through config_dir (
a907cbd) - refactor(plugins): route user plugins dir through config_dir (
b3c6a4e) - refactor(query): route home-based paths through config_dir (
ea615d6) - refactor(mcp): route mcp-tokens dir through config_dir (
1e5a8d9) - refactor(core): route home-based paths through config_dir (
3a69778) - feat(core): canonical CLAURST_HOME/XDG resolver in config_dir (
dbe2407) - refactor: drop unused glob imports in extracted modules (
3203825) - refactor(query): extract single-shot query into runner/single.rs (
41e0bbe) - refactor(query): extract post-sampling hooks into runner/hooks.rs (
e4c9ed6) - refactor(query): extract stream event mapping into runner/stream.rs (
b28e9d4) - refactor(query): extract system-prompt assembly into runner/prompt.rs (
07abd0b) - refactor(query): extract tool execution helpers into runner/tools.rs (
e01c2b6) - refactor(query): extract tool-result budgeting into runner/tool_budget.rs (
e1d8c48) - refactor(query): extract provider-option helpers into runner/provider_options.rs (
ee6c898) - refactor(commands): extract assorted commands into extras.rs (
1da4e2c) - refactor(commands): extract usage-reporting commands into usage.rs (
2c87d6b) - refactor(commands): extract provider/agent commands into providers.rs (
38ddcb3) - refactor(commands): extract diagnostic commands into diagnostics.rs (
d3e9a94) - refactor(commands): extract setup/review commands into setup.rs (
7313868) - refactor(commands): extract maintenance commands into maintenance.rs (
de804c1) - refactor(commands): extract /context and /vim commands into display.rs (
d50b6cc) - refactor(commands): extract session/output tool commands into session_tools.rs (
e5bab69) - refactor(commands): extract /search command into search.rs (
1d151a0) - refactor(commands): extract think-back commands into thinkback.rs (
9f53d1f) - refactor(commands): extract /ultrareview command into ultrareview.rs (
2c5a86f) - refactor(commands): extract /sandbox-toggle command into sandbox.rs (
86b7c28) - refactor(commands): extract undo/revert/checkpoint commands into history.rs (
4df1dfd) - refactor(commands): extract remote-control commands into remote.rs (
70349e1) - refactor(commands): extract session-control commands into session.rs (
fe85848) - refactor(commands): extract /permissions command into permissions.rs (
61131c4) - refactor(commands): extract /memory command into memory.rs (
f79e465) - refactor(commands): extract appearance commands into appearance.rs (
bc54536) - refactor(commands): extract shared UI settings helpers into ui_settings.rs (
da5e1fa) - refactor(commands): extract /managed-agents command into managed_agents.rs (
0c8b229) - refactor(commands): extract /teleport command into teleport.rs (
d367a3e) - refactor(commands): extract /chrome command into chrome.rs (
1016cd7) - refactor(commands): extract /copy command into copy.rs (
04fb8df) - refactor(commands): extract /share and /links commands into share.rs (
4caffdf) - refactor(commands): extract /export command into export.rs (
4b6dcbf) - refactor(commands): extract /mcp command into mcp.rs (
67700a4) - refactor(commands): extract /review command into review.rs (
0dddafe) - refactor(commands): extract account/auth commands into accounts.rs (
40d6dfe) - refactor(commands): extract /doctor command into doctor.rs (
238483d) - refactor(commands): extract plugin commands into plugin.rs (
1ba6fe8) - refactor(commands): extract /config command into config_cmd.rs (
66e2ca0) - refactor(commands): extract speech-mode commands into speech.rs (
209cda5) - refactor(commands): extract /goal command into goal.rs (
bdd4edc) - test(query): cover the four compaction upgrades (
84bac09) - feat(query): carry a files-touched manifest across compactions (
4c92857) - feat(query): iterative UPDATE summary prompt for compaction (
dc81535) - feat(query): trigger compaction from real provider usage tokens (
082866e) - feat(query): token-budget keep for compaction tail (
b755773) - test(query): cover in-loop continuation policy and max-steps degradation (
be5a23d) - feat(query): graceful max-steps degradation with tool-less summary turn (
800506e) - refactor(cli): drive /goal continuation in-loop, drop post-loop re-dispatch (
49427de) - feat(query): add goal continuation policy decided in-loop (
ecffc55) - refactor(query): add in-loop continuation-policy abstraction + default stop policy (
0fcc4d4) - feat(tools): make ToolSearch a real tool-discovery aid (
aa94601) - feat(query): thread session tool set into system-prompt assembly (
833eda0) - feat(core): make per-tool guideline blocks conditional on enabled tool set (
a000cfa) - test(query): cover sanitize_history invariants and producer scenarios (
8e520e2) - feat(query): sanitize history at the request boundary in run_query_loop (
aff267a) - feat(query): add sanitize_history invariant pass for tool_use/tool_result pairing (
792a6e7) - test(query): cover cancel-aware executor and sub-agent child token (
be52762) - fix(query): give sub-agents a child cancel token (
9d03bd3) - fix(query): make parallel tool executor cancel-aware (
f148ce9) - fix(tools): add cancel_token to ToolContext, rebind in query loop (
63bedbc) - feat(core): add session-tree leaf pointer + active-branch reconstruction (
88fda12) - feat(install): verify SHA256 checksum in install.ps1 before extract (
de23c5c) - feat(install): verify SHA256 checksum in install.sh before extract (
ff0d258) - feat(release): publish SHA256SUMS covering all release archives (
33949d7) - refactor(tools): delete dead BashTool, cover #184/#220 in pty_bash (
4c22204) - fix(tools): kill PTY/background shell child on drop or cancel (
f090c4b) - fix(tools): kill PTY shell child on timeout instead of orphaning it (
d6f5cb9) - test(core): cover background task cancel-token signalling (
39369b0) - fix(query): register background sub-agent cancel token so cancel stops it (
fba0790) - fix(core): store and signal a cancel token in TaskRegistry (
f309450) - fix(tui): clamp scroll_offset to last-rendered max_scroll (
48fc655) - fix(tui): evict stored paste bodies when the prompt buffer is cleared (
67ab20d) - feat(tools): bound SearXNG request with a timeout; document search backends (
1054566) - add SearXNG backend before Brave fallback (
59a3300) - test(query): cover resolve_context_window registry/heuristic/placeholder (
1c4202f) - fix(query): add resolve_context_window (registry-first, heuristic fallback) (
f09a6ad) - test(tui): verify streaming prefix reuse and no ghosting (
0a65a9f) - perf(tui): reuse completed-message cache during streaming (
0cb6c54) - refactor(tui): extract range-based transcript item builder (
c73a69d) - perf(tui): build RenderContext once and borrow tool_names/expanded_thinking (
0cb953d) - test(query): cover parse_tool_args valid/empty/truncated cases (
1b0fcdf) - fix(query): error instead of {} on unparseable tool-call args (
b7d6d11) - fix(query): don't execute tools from a failed provider stream (
7021f60) - test(query): assert compaction preserves messages on failure (
afbac8d) - fix(query): preserve messages across failed compaction (
1d97b8b) - test(api): verify StreamBlockAccumulator keeps thinking/signature & block order (
77d1f93) - fix(api): apply the same block-order/thinking-delta fix to MiniMax aggregator (
8c16247) - fix(api): capture thinking/signature deltas & preserve block order in Anthropic aggregator (
26a55f7) - fix(tui): char-safe legacy history-search truncation (
548e355) - fix(tui): char-safe search highlight and rewind preview truncation (
ca51895) - fix(tui): truncate_user_prompt_text on char boundaries (
f2a79fa) - fix(tui): normalize CRLF on paste; walk prompt cursor to char boundary (
ca5b6a1) - fix(api): parse Bedrock event-stream binary framing instead of brace-scanning (
fe218d5) - fix(tools): keep dead bash.rs env plumbing consistent with pty_bash (
2ceec43) - fix(security): pass restored shell env via child env map, not bash -c argv (
87d170c) - fix(tui): make slash commands runnable on Windows / non-kitty terminals (
94275c7) - chore: revert accidental workspace sweep (
9a19562) - test(tui): escape Windows read path JSON (
f2871c1) - Initial plan (
ffab1cc) - Revert premature v0.1.7 version stamp (
287a73e) - chore(release): v0.1.7 (
3374a60) - fix(tools): stop bash tool hanging on detached child processes (
b59f2b7) - fix(tui): ASCII tool markers + clear-on-scroll to fix alignment & ghosting (
521cdca) - feat(tui): opencode-style tool/todo/command rendering (
2ecbbde) - fix(tui): stop transcript rows ghosting old text when scrolling (
cebbc33)
What's Changed
Other Changes
- fix(tools): stop bash tool hanging on detached child processes by @Ijtihed in #189
- Fix windows-latest TUI test failure from unescaped read-path JSON by @Kuberwastaken with @Copilot in #190
- fix(tui): make slash commands runnable on Windows / non-kitty terminals by @Kuberwastaken in #191
- test: make HOME/filesystem-dependent tests hermetic for sandboxed builds by @Kuberwastaken in #198
- fix(providers): recognize alibaba/DashScope provider id by @Kuberwastaken in #193
- fix(ollama): honor configured base URL for remote servers by @Kuberwastaken in #192
- fix(tui): improve shortcut handling on non-English keyboard layouts by @Kuberwastaken in #196
- feat(api): configurable request timeout + bounded stream idle timeout by @Kuberwastaken in #197
- feat(tui): make mouse capture toggleable (restore native selection) by @Kuberwastaken in #195
- fix(models): catalog as single source + projection picker (opencode-style); surfaces Opus 4.8 by @Kuberwastaken in #200
- fix(security): require approval before launching project-level MCP servers by @Kuberwastaken in #199
- fix(cli): honor --bare (disable hooks, plugins, AGENTS.md) by @Kuberwastaken in #235
- fix(security): gate REPL and CronCreate tools behind permission checks by @Kuberwastaken in #236
- fix(security): pass restored shell env via child env, not bash -c argv by @Kuberwastaken in #237
- fix(api): parse Bedrock event-stream binary framing (streaming was broken) by @Kuberwastaken in #238
- fix(tui): char-boundary/UTF-8 panics that crash the TUI by @Kuberwastaken in #239
- fix(security): lock OAuth tokens, credential store & session files to 0o600 by @Kuberwastaken in #240
- fix(api): capture thinking/signature deltas & preserve block order in non-streaming aggregator by @Kuberwastaken in #241
- fix(query): preserve conversation across failed compaction (was mem::take-wiped) by @Kuberwastaken in #242
- fix(query): don't execute tools from a failed provider stream; error on malformed tool args by @Kuberwastaken in #243
- perf(tui): reuse completed-message cache during streaming (was O(messages^2) re-render) by @Kuberwastaken in #244
- fix(tools): preserve line endings on edit (was silent CRLF->LF rewrite) by @Kuberwastaken in #245
- fix(query): size compaction from the model's real context window (not a Claude-only heuristic) by @Kuberwastaken in #246
- fix(tools): route apply_patch/batch_edit/notebook_edit/cron writes through write_atomic by @Kuberwastaken in #247
- add self-hosted SearXNG web search backend by @TheChuckster in #167
- fix(tui): bound memory growth (evict paste bodies, clamp scroll_offset) by @Kuberwastaken in #248
- fix: make background-agent cancel actually stop the task (not just relabel it) by @Kuberwastaken in #249
- fix(tools): harden the live PTY shell (kill on timeout/drop, #184 non-hang); delete dead BashTool by @Kuberwastaken in #250
- feat(release): publish SHA256SUMS and verify downloads in install.sh / install.ps1 by @Kuberwastaken in #251
- feat(tui): Shift+Enter inserts a newline; Enter submits by @Kuberwastaken in #252
- fix(security): central permission backstop in execute_tool; gate worktree post_create_command by @Kuberwastaken in #253
- feat(core): session tree β non-destructive /revert via leaf pointer + branch reconstruction by @Kuberwastaken in #254
- fix(query): make in-flight tools & sub-agents cancellable (cancellation tree) by @Kuberwastaken in #255
- refactor(api): shared SSE byte-decoder (fixes UTF-8 chunk corruption) + registry-driven picker + protocol scaffold by @Kuberwastaken in #256
- feat(query): sanitize_history invariant pass (retires tool_use/tool_result 400s) by @Kuberwastaken in #257
- feat: conditional tool guidelines + functional ToolSearch discovery (MI-6) by @Kuberwastaken in #258
- refactor(query): /goal as in-loop continuation policy + max-steps graceful degradation (MI-3) by @Kuberwastaken in #259
- feat(query): compaction upgrades β token-budget keep, real-usage trigger, UPDATE summary, files manifest (MI-4) by @Kuberwastaken in #260
- refactor: split god-files (commands/lib.rs -81%, query runner/ modules) β behavior-preserving (MI-5) by @Kuberwastaken in #261
- feat: XDG base directory support + CLAURST_HOME override (back-compatible) by @Kuberwastaken in #262
- chore(ci): enforce clippy (fix ~255 warnings); keep rustfmt advisory; RC deps noted by @Kuberwastaken in #264
- feat: ultracode mode β bundled skill + purple-gradient keyword + submit-time activation by @Kuberwastaken in #265
New Contributors
- @Ijtihed made their first contribution in #189
- @Kuberwastaken with @Copilot made their first contribution in #190
- @TheChuckster made their first contribution in #167
Full Changelog: v0.1.6...v0.1.7