Gordon
5be5cd5a79
feat(i18n): localize ToolFamily labels (10 MessageIds) ( #2901 )
...
* feat(i18n): localize ToolFamily labels (10 MessageIds)
- localization.rs: Add 10 ToolFamily* MessageId variants + ALL_MESSAGE_IDS + all 7 locales
- tool_card.rs: tool_activity_label_for_name() accepts locale, uses tr() for labels
- footer_ui.rs, ui.rs: thread locale to tool_activity_label_for_name() callers
- Tests: 2 negative i18n tests + updated existing tests for new signatures
* chore: add .claude/ to gitignore
* fixup: make tool_display_label_for_name private + deduplicate family→MessageId mapping
---------
Co-authored-by: gordonlu <gordonlu@users.noreply.github.com >
2026-06-12 10:53:22 -07:00
Hanmiao Li
b291214cd2
fix(config): add separate siliconflow_cn provider config field with fallback ( #2893 ) ( #2895 )
...
Split SiliconflowCN into its own [providers.siliconflow_cn] TOML section
instead of silently ignoring [providers.siliconflow-CN] config.
- ProvidersToml / ProvidersConfig: add siliconflow_cn field with serde alias
- for_provider / for_provider_mut / provider_config_for: route SiliconflowCN
to the new field
- resolve_runtime_options_with_secrets: fallback siliconflow_cn → siliconflow
for api_key / base_url / model when unset
- deepseek_api_key: add config-file fallback for SiliconflowCn
- provider_config_key: update metadata to "siliconflow_cn"
- save_api_key_for: write SiliconflowCn keys to providers.siliconflow_cn
- docs/PROVIDERS.md, config.example.toml, scripts/check-provider-registry.py
2026-06-12 10:53:11 -07:00
Hanmiao Li
5e22753ee1
fix(tui): normalize macOS SUPER (Cmd) to CONTROL for keyboard shortcuts ( #2938 ) ( #2943 )
...
* fix(tui): normalize macOS SUPER (Cmd) to CONTROL for keyboard shortcuts (#2938 )
On macOS, terminal emulators may report Cmd (SUPER) instead of Ctrl
(CONTROL) for keyboard shortcuts, depending on the terminal app and
its configuration. This caused Ctrl+B, Ctrl+Alt+2, and other shortcuts
to be inconsistent.
Fix:
- Add normalize_macos_modifiers() in composer_ui.rs
- On macOS: map SUPER to CONTROL when CONTROL is not already set
- On other platforms: no-op
- Apply normalization at the key event entry point in ui.rs
Tests:
- normalize_macos_modifiers_maps_super_to_control
- normalize_macos_modifiers_preserves_existing_control
- normalize_macos_modifiers_leaves_alt_unchanged
* fix: strip SUPER from modifiers after normalization per review
* fix: gate macOS-specific modifier tests with #[cfg(target_os = "macos")]
2026-06-12 10:53:09 -07:00
New2Niu
2d81f91ea1
fix: codewhale update error: GitHub release downloads may be blocked or slow on this network ( #3006 )
...
Co-authored-by: lei <liulei@8531.cn >
2026-06-12 10:53:06 -07:00
cyq
b8be06d9ba
docs(prompt): clarify Constitution trust framing ( #3008 )
...
* docs(prompt): clarify Constitution trust framing
* docs(prompt): align trust standing wording
2026-06-12 10:53:03 -07:00
Hunter Bown
aa1ce527e7
feat(tui): add /plugins slash command ( #3169 )
...
Adds a /plugins [name] command to list discovered script plugin tools
and inspect their metadata (description, input schema, approval level,
path). Includes localization strings and unit tests.
Co-authored-by: CodeWhale Agent <codewhale-agent@hmbown.local >
2026-06-12 10:52:38 -07:00
Reid
1ac32df627
feat(tui): dispatch hotbar slots from number keys ( #3056 )
...
Wire hotbar key dispatch into the TUI event loop.
Bare 1-8 now fires the matching hotbar slot only when the composer is empty.
Alt+1 through Alt+8 fires the matching slot even when the composer has text.
Modal and overlay views keep ownership of those keys, and empty slots remain a
safe no-op.
2026-06-12 10:52:02 -07:00
Nightt
4968983339
fix(tools): apply strict mode per schema ( #3062 )
...
* fix: apply strict tool mode per schema
* fix: preserve optional strict schema fields
2026-06-12 10:51:58 -07:00
Claude
0181493c79
release: v0.8.58 — native Anthropic provider, hooks v2 JSON decisions, clickable sidebar, provider-aware subagent routing, model-fact prompt templating
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-10 23:06:44 -07:00
Claude
d940b7821c
Merge origin/main into v0.8.58-3014-anthropic-adapter — keep #3024 Moonshot/Ollama dialect arms plus the #3014 Anthropic native-shaping arms in all three reasoning tiers; keep the #3014 Anthropic capability early-return while honoring the #3023 removal of the Openai/Atlascloud/Moonshot one; union claude + bare-id max_output rows
2026-06-11 05:45:51 +00:00
Claude
06f49af69f
Merge origin/main into v0.8.58-constitution — carry the #3025 model-fact placeholders ({context_window_note}/{subagent_economics}/{model_thinking_note}/{model_characteristics}) into constitution.md per the prompt-layer coordination note; union sidebar tests and add TaskPanelEntry.kind to #3028 test literals
2026-06-11 05:39:19 +00:00
Hunter Bown
5b47a2e3e0
Merge PR #3048 from Hmbown: parameterize model-specific facts in the base prompt
...
feat(prompts): parameterize model-specific facts — context window, pricing, thinking
2026-06-10 22:30:08 -07:00
Hunter Bown
186ebbb116
Merge PR #3050 from Hmbown: wire reasoning-effort for Atlascloud, Moonshot, Ollama dialects
...
fix(reasoning): wire reasoning-effort for Atlascloud, Moonshot, Ollama
2026-06-10 22:30:00 -07:00
Hunter Bown
a6d5824cee
Merge PR #3047 from Hmbown: model-based capability lookups for Moonshot/OpenAI/Atlascloud + bare-id registry rows
...
fix(providers): use model-based lookups for Moonshot/OpenAI/Atlascloud/Ollama capability
2026-06-10 22:29:52 -07:00
Hunter Bown
78ed3768bf
Merge PR #3046 from Hmbown: add Moonshot/Kimi to reasoning-content provider and model gates
...
fix(reasoning): add Moonshot/Kimi to reasoning-content provider and model support
2026-06-10 22:29:44 -07:00
Claude
3f2f154ad2
Merge origin/main into v0.8.58-3018-unhardcode-deepseek — append #3030 step-counter tests after the #3018 routing tests
2026-06-11 05:29:25 +00:00
Claude
d9dff6809c
Merge origin/main into v0.8.58-3026-hooks-v2 — keep both the #3026 hook fold helpers and the #3027 command_denies_tool gate in turn_loop
2026-06-11 05:26:27 +00:00
Claude
8a165cc49b
Merge origin/main into v0.8.58-3028-clickable-tui — union the sidebar test imports ( #3030 hover texts + #3028 row builders)
2026-06-11 05:23:29 +00:00
Hunter Bown
880346622b
Merge PR #3039 from Hmbown: OSC 8 out-of-band hyperlink infrastructure
...
feat(tui): OSC 8 out-of-band hyperlink infrastructure
2026-06-10 22:20:35 -07:00
Hunter Bown
6b01cccc65
Merge PR #3038 from Hmbown: make Ctrl+B directly background the active foreground shell
...
fix(tui): make Ctrl+B directly background the active foreground shell
2026-06-10 22:20:27 -07:00
Hunter Bown
d9c5dac55b
Merge PR #3037 from Hmbown: compact tool-call transcript rendering — suppress boilerplate cells
...
fix(tui): compact tool-call transcript rendering — suppress boilerplate
2026-06-10 22:20:18 -07:00
Claude
418ad5b744
Merge origin/main into v0.8.58-3030-hide-internal-ids — combine #3030 stable agent labels with #3033 AgentProgress redraw throttle (both kept in App state and the AgentProgress arm)
2026-06-11 05:19:57 +00:00
Hunter Bown
eb610c83ee
Merge PR #3035 from Hmbown: throttle AgentProgress redraws to prevent freeze under subagent load
...
fix(tui): throttle AgentProgress redraws to prevent freeze under subagent load
2026-06-10 22:11:17 -07:00
Hunter Bown
8fadd764d2
Merge PR #3042 from Hmbown: exec --allowed-tools, --disallowed-tools, --max-turns, --append-system-prompt
...
feat(exec): add --allowed-tools, --disallowed-tools, --max-turns, --append-system-prompt
2026-06-10 22:11:07 -07:00
Hunter Bown
20fa626fb8
Merge PR #3041 from Hmbown: harvest error-message fixes — better tool denial and provider errors
...
fix: harvest error-message fixes from PR #2933 — better tool denial + subagent conflict messages
2026-06-10 22:11:00 -07:00
Claude
1a61a79910
fix(hooks): pass the Windows cmd /C command line via raw_arg — Command::arg's CRT-style quoting inserted literal \" into hook commands, which cmd.exe does not unescape, so JSON decisions never parsed (hook_gate_* Windows failures)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:46:05 +00:00
Claude
29f75dc19d
fix(lint): fold the sidebar click row lookup into the bounds let-chain — newer clippy (1.96) flags the nested if as collapsible_if and CI lints with -D warnings
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:42:18 +00:00
Claude
8284f395e6
test(integration): add signature field to ContentBlock::Thinking initializers and pattern in tests/ — the bins-only local run missed integration-test targets when the field landed
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:38:39 +00:00
Claude
f65d091c65
fix(lint): collapse nested if-let into a let-chain in codex responses reasoning shaping — newer clippy (1.96) flags collapsible_if on if-let nesting and CI lints with -D warnings
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 04:29:24 +00:00
Claude
279ad5af90
feat(client): native Anthropic Messages API adapter — /v1/messages dialect with x-api-key + anthropic-version auth, adaptive thinking + output_config.effort shaping, cache_control breakpoints (prefix zones, capped at 4), signed-thinking replay via new signature field + signature_delta, #2961 usage normalization, SSE pass-through with error envelopes; registry/docs sync ( #3014 )
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 03:54:46 +00:00
Claude
3c38dabefb
feat(providers): add Anthropic to the three provider surfaces — ApiProvider/ProviderKind variants, provider metadata (x-api-key auth env, api.anthropic.com, claude-sonnet-4-6 default), AnthropicMessages wire format, ModelRegistry rows for claude-opus-4-8 / claude-sonnet-4-6 / claude-haiku-4-5 ( #3014 , WIP)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 03:10:47 +00:00
Hunter Bown
81b060928b
Merge PR #2579 from encyc: Phase 4 — replace Session.messages Vec with AppendLog
...
refs(#2264 ): Phase 4 — replace Session.messages: Vec<Message> with AppendLog
2026-06-10 20:10:20 -07:00
Hunter Bown
544b44bd98
Merge PR #2892 from gordonlu: localize sandbox elevation dialog across 7 locales
...
feat(i18n): localize sandbox elevation dialog across 7 locales
2026-06-10 20:10:05 -07:00
Claude
fc10d10189
feat(routing): complete #3018 — RouterCandidates + provider_router_candidates; candidate-aware heuristics, router prompts and recommendation parsing; skip the network router when no cheap tier exists; validate spawn-time model against the active provider; tests + SUBAGENTS.md per-role models docs
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 03:03:08 +00:00
Claude
2bbe25b7e4
fix : #3034 audit residuals — correct the constitution renderer doc-comment (renderer NOT reconciled with committed MD, do not regenerate); pin the collapsed-thinking header assertion; align auth list's openai-codex credential source with auth status
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:45:25 +00:00
Claude
033132a735
fix(tui): #3032 residuals — running-exec hint now says Ctrl+B backgrounds the command; Ctrl+B documented in KEYBINDINGS.md and runbook updated for menu removal; Cannot-background message names the reason (interactive / non-shell tool / nothing running)
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:40:07 +00:00
Claude
7a64119635
test(reasoning): #3016 coverage — Moonshot in provider_accepts_reasoning_content, kimi-k2.6 stream classification, multi-chunk Moonshot reasoning_content decoder fixture; exclude non-thinking kimi-for-coding from the kimi- prefix rule
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:35:36 +00:00
Claude
5fb41cc209
test(errors): add #3020 test extensions — Plan-mode denial passes through verbatim, bare/model denials get the suffix; Model-Not-Exist + OpenAI-style rejections annotated; conflict error includes elapsed time; tighten mode-word predicate so 'model' no longer matches
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:30:30 +00:00
Claude
948e42397f
fix(tui): #3029 audit fix — interleave OSC 8 open/close per region in diff order (OSC 8 is last-writer-wins state; batched opens linked the whole frame to the last target); drop cursor-move hack and dead pending_links; add byte-stream bracketing tests
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:26:45 +00:00
Claude
b6e88d2d34
fix(tui): #3031 audit fix — map the literal '(no output)' ToolResult placeholder to None at the routing layer (exec + generic cells) so compact-mode suppression actually fires; add helper + render-mode tests
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:18:46 +00:00
Claude
5a71d644f5
fix(tui): #3030 audit fixes — nickname beats generated Agent-N label; status bar uses stable labels (with raw-id fallback) for spawn/progress/complete; drop truncated raw id from compact detail line; add label/turn/step-counter tests
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:13:30 +00:00
Claude
df1b35ba0f
fix(tui): #3033 audit fix — throttled AgentProgress no longer cancels redraws owed to other events in the same drain batch; restore pre-event accumulator value; extract agent_progress_redraw_permitted + unit tests
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 02:03:17 +00:00
Claude
6f5039101a
feat(hooks): wire the #3026 decision contract into the engine — JSON deny/ask/updatedInput now steer tool calls (deny>ask>allow, last-writer updatedInput), additionalContext piped into tool results, project .codewhale/hooks.toml loaded at both HookExecutor sites; parser hardening + fold/glob/project tests; docs
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 01:52:22 +00:00
Claude
ac3f8c04b6
fix(tui): rebuild sidebar click-action mapping — lines and actions now built in one pass so indices can't drift; shell_* jobs route via /jobs, task jobs via /task; finished jobs lose the cancel target; agents panel gates role-mix slot correctly; fix test compile; add action-mapping + click-resolution tests ( #3028 )
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 00:46:38 +00:00
Claude
c15e937096
fix(exec): wire --disallowed-tools into the gate chain (deny wins over allow), filter the advertised tool catalog, honor --append-system-prompt in needs_engine, surface max-steps notice in text mode; add clap/gate/catalog tests ( #3027 )
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 00:31:05 +00:00
Claude
6a2c529242
fix(prompts): make #3025 placeholders live — base.md now carries {context_window_note}/{subagent_economics}/{model_thinking_note}/{model_characteristics}; add model_characteristics handler (V4 vs generic); fix one-million-token-token wording; genericize Flash V4 tool_agent note; add compose + pricing tests
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 00:23:37 +00:00
Claude
b9bcc9c710
fix(providers): update stale Atlascloud/Ollama capability tests to the generic model-based path; add bare Moonshot/MiniMax/Z.ai model rows (kimi-k2.6, kimi-for-coding, minimax-m3, glm-5.1, glm-5v-turbo) mirroring vendor-prefixed rows; add Moonshot capability + engine capacity tests ( #3023 , #1310 )
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 00:17:53 +00:00
Claude
29e60cd4b9
fix(reasoning): Atlascloud joins the DeepSeek dialect group — max tier now sends reasoning_effort=max; add Atlascloud/Moonshot/Ollama dialect-shape tests; document per-provider reasoning-effort wire mapping in PROVIDERS.md ( #3024 )
...
Co-Authored-By: Claude <noreply@anthropic.com >
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
2026-06-11 00:13:18 +00:00
Hunter Bown
e1a61f445e
fix(tui): remove ShellControlView menu now unreachable after direct Ctrl+B
...
Ctrl+B backgrounds the foreground shell directly (#3032 ), leaving the
two-step shell-control modal dead code that fails clippy -Dwarnings.
Delete ShellControlView/ShellControlChoice, the ModalKind and ViewEvent
variants, and open_shell_control; repoint the default-paste regression
test at HelpView; update the Ctrl+B keybinding description in all
locales to describe the new direct-background behavior.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-10 16:49:30 -07:00
Hunter Bown
c98b7ea42c
fix: harvest error-message fixes from PR #2933 — better tool denial + subagent conflict messages ( #3020 )
...
Three targeted error-message improvements extracted from community
PR #2933 (author cy2311), with additional model-not-found annotation:
1. dispatch.rs format_tool_error: pass through self-explanatory messages
that already name the cause (mode switch, allow_shell, feature flag,
denied by user) instead of appending a conflicting generic suffix.
Fixes the Plan-mode double-message (#2657 ).
2. subagent/mod.rs session-name conflict: include elapsed time
(started Ns ago / NmNs ago) so the parent can distinguish a live
worker from a stale/failed earlier spawn (#2656 ).
3. subagent/mod.rs annotate_child_model_error: catch model-not-found
patterns (Model Not Exist, does not exist, no such model, etc.) in
the raw error text even when the taxonomy classifies them as
Internal rather than Authorization/State (#2653 ).
Closes #2653 , #2656 , #2657 .
Credit: cy2311 for the dispatch.rs and subagent conflict hunks from #2933 .
Co-authored-by: cy2311 <29836092+cy2311@users.noreply.github.com >
2026-06-10 16:41:55 -07:00