Keep mode and approval state in the compact request-time runtime prompt, and stop repeating the long human mode description in every turn_meta block. The active user message still carries date, routed model, auto-route, reasoning, and working-set metadata.
This keeps the prompt envelope quieter while preserving the runtime-policy pointer used for cache-stable mode switches.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Let auto-approved background shell launches join native parallel batches with read-only inspection tools. Foreground cargo/test/clippy commands remain serial barriers unless the model explicitly starts them as detached background work.
Adds a per-input detached-start tool hook for exec_shell background/TTY calls and task_shell_start, keeps approval-gated detached work serial, and updates the status text for mixed read-only/background-start batches.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The completion sound settings test reads process-global sound state, while another notification test mutates it. Hold the existing module test lock so the default parallel harness cannot race the assertion back to beep mode.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Closes#2983.
Allow exec_shell to opt into the existing parallel tool lane when its concrete input is a conservative read-only shell command. The whitelist covers direct git/list/search/read commands plus simple bash/sh/zsh -c wrappers whose inner command passes the same classifier; anything effectful, interactive, redirected, piped, backgrounded, or stdin-fed remains serial and approval-gated.
Parallel exec_shell fanout is capped at four workers, and explicit multi_tool_use.parallel now preserves request-order results while using the same input-aware checks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Document the portable SKILL.md compatibility boundary for Claude Code plugin bundles and keep /skill install from silently flattening plugin archives that carry multiple skills plus plugin.json runtime metadata.
Reported by @AiurArtanis in #2743.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a compile-only JavaScript/TypeScript authoring path that extracts a JSON-compatible workflow({...}) object, lowers it to the existing WorkflowSpec IR, and runs the Rust validation gate before execution.
Includes a branch/reduce .workflow.js example and a short authoring design note comparing YAML/JSON, Starlark, JavaScript, and TypeScript. The compiler rejects effectful JavaScript constructs instead of executing workflow source as a second runtime.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Z.ai's current GLM-5.2 coding-agent docs confirm actual thinking efforts high and max, with ultracode mapped to max. Its Chat Completion API documents thinking.type, thinking.clear_thinking, and reasoning_content rather than a raw reasoning_effort scalar, so direct Z.ai requests now use the documented thinking object and preserve reasoning_content for coding-agent continuity.
Also accepts ultracode as a max-effort alias across settings, routing, and Responses mapping.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds Ctrl+P and Ctrl+N as Emacs-style alternatives for slash-command autocomplete navigation while keeping the global Ctrl+P file picker from stealing focus when the slash menu is open.
Harvested from PR #3196 by @1Git2Clone.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wire the foreground fleet manager loop to FleetExecutor so leased tasks launch real codewhale exec workers, stream progress into the ledger, and record terminal receipts from subprocess outcomes. Remove the local_result simulation path and update manager tests to use a fake codewhale binary.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The WhaleFlow, goal, and sub-agent opt-ins already live in the Config view's
Experimental section (whaleflow / goal_command / features.subagents rows).
This adds /experiments (and /experimental) as a discoverable entry point to
that view so the opt-ins #3182 asks for are reachable by name. Implemented as
aliases on the config command (validated by the registry uniqueness/metadata
tests; commands suite 431/0). A bespoke section-focused panel is left as polish.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
/swarm [N] <task> is a high-fanout overlay on the current mode (Agent/Plan/YOLO),
NOT a fourth mode. It mirrors the proven /agent command pattern: it emits a
model instruction to decompose the task, fan out one headless sub-agent per
subtask via agent_open (role/agent_type per subtask, max_depth N for nesting),
run them concurrently, and synthesize from each worker's result SUMMARY (not its
transcript) — the isolation pattern that keeps the orchestrator light.
Registered with aliases fanout/qun; CmdSwarmDescription was already localized in
all locales. Validated by the command-registry completeness tests (unique
names/aliases, complete metadata); broad commands suite 431/0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
While a turn is in flight (`is_loading`), the model/permission surface the
engine is acting on must not shift underneath it. User-initiated mode cycling
(cycle_mode / cycle_mode_reverse) and thinking cycling (cycle_effort) are now
refused with a concise status message ("… is locked while a turn is running —
press Esc to interrupt first") and the selection stays put (the chip "twitches"
back rather than moving). Internal set_mode transitions (YOLO/plan) are
unaffected — only the user gestures are guarded.
Unit-tested: locked while is_loading, works again once idle. Persistent
busy/free chip styling is left for a visual-review pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The fleet-foundation provider expansion added Anthropic/Zai/Stepfun/Minimax as
recognized providers (auth parser + PROVIDER_LIST), but also flipped all four to
TUI-supported in provider_is_supported_by_tui — making every ProviderKind
supported, killing the rejection path and breaking three build_tui_command
rejection tests (the flip had no positive test, so it was an unverified side
effect).
Anthropic speaks the native Messages API, not the OpenAI-compatible shape the
interactive loop expects, so it stays exec-only (as it was on origin):
`codewhale --provider anthropic` is rejected with a hint to use
`codewhale exec --provider anthropic`. Zai (GLM/Z.AI — the v0.8.60 headline),
Stepfun, and Minimax are OpenAI-compatible and remain interactively supported.
Restores the rejection guard and the 3 tests (now 95/0 in codewhale-cli).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a verifiable dogfood smoke that drives several concurrent exec-style
workers (three healthy + one injected-failure that emits an error event and
exits non-zero) through the real host adapter, asserting distinct terminal
pass/fail outcomes — no external services, no model calls, no codewhale binary.
Documents the automated CI smoke vs the manual `codewhale fleet run` path in
the dogfood spec, and is honest that the manager run-loop cutover to drive real
FleetExecutor workers is still in progress.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds FleetExecutor: drives a worker as a local `codewhale exec` subprocess via
the existing host adapter, incrementally drains its stream-json output into
FleetWorkerEventPayload ledger events, and finalizes the terminal outcome from
the process exit. The worker's heavy runtime/tool construction lives in its own
process, so the orchestrator only ingests a compact event stream — the
isolation pattern that keeps fanout light (per Codex/Kimi/Claude Code).
Verified end-to-end by an integration test that runs a REAL subprocess emitting
stream-json (standing in for `codewhale exec`) through the real adapter and
asserts RunningTool + terminal Completed events flow out — no codewhale binary
needed. 8 executor tests pass; the 58 existing fleet tests stay green
(executor is not yet wired into `codewhale fleet run`, so no behavior change).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A fleet worker IS a headless `codewhale exec` run — not a separate execution
engine. New crates/tui/src/fleet/executor.rs provides the bridge:
- build_worker_exec_command: FleetTaskSpec + FleetExecConfig ->
`codewhale exec --auto --output-format stream-json [--model/--allowed-tools/
--disallowed-tools/--max-turns/--append-system-prompt] <prompt>`. Secrets are
never on argv (worker resolves its own config/keyring).
- map_exec_stream_line: maps the worker's stream-json events
({"type":"tool_use"|"content"|"tool_result"|"done"|"error"}) into
FleetWorkerEventPayload so the durable ledger persists the worker's OWN event
vocabulary (collapses the translation layer toward identity).
- classify_worker_exit: process exit -> terminal Completed/Failed/Cancelled.
This is the substrate for replacing the local simulation with real headless
workers. fleet_task_prompt is now pub(crate). 7 new unit tests; building blocks
only (no behavior change yet) so the 58 existing fleet tests stay green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Refs #1310.
Adds the direct minimax provider slot, auth/config/env bindings, model aliases, docs, and picker/status surfaces. MiniMax requests now set reasoning_split and preserve reasoning_details history so thinking stays out of answer text.
Also updates Moonshot/Kimi reasoning classification for the Kimi Code route so reasoning_content streams into Thinking cells instead of inline prose.
Removing Paste from the sidebar menu (#3065) left rows with no copy
path at all — sidebar text can't be mouse-selected. Right-clicking a
sidebar row now offers Copy, which writes the row's untruncated text
plus its hover detail to the clipboard via a new
ContextMenuAction::CopyText. Run stays first for clickable rows.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Work panel: hovering the '+N more checklist items' overflow row now
reveals the omitted checklist items in the popover, so a
height-constrained panel no longer hides work items with no way to
inspect them (#3063).
- Agents panel: the compact agent label row's hover text now carries a
full dossier — id, role, status, elapsed time, step count, objective
(new SidebarAgentRow field, from SubAgentAssignment), branch, and
untruncated progress. Compact rows stay unchanged.
- Detail-row hover keeps the full progress text instead of the
summarized form.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The loading mouse filter (should_drop_loading_mouse_motion) dropped all
Drag events while app.is_loading unless a transcript selection or
scrollbar drag was active. A sidebar resize started on the handle
(Down passes the filter) then never received its Drag events, leaving
the resize wedged mid-gesture during live runs (#3063, symptom of the
#3096 subagent-runtime pressure on the TUI).
- Allow Drag events through the loading filter while
app.sidebar_resizing is set.
- Clear last_sidebar_area / last_sidebar_handle_area and any in-flight
resize when the sidebar is hidden or doesn't fit, so stale handle
hit-areas can't capture clicks.
- Tests: resize down/drag/up while loading, mouse-up outside the
handle still ends the resize.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
cargo clippy --workspace -D warnings fails on three pre-existing spots
newly flagged by the current toolchain: unnecessary_sort_by in
context_report, question_mark in the provider fallback chain, and
unnecessary_map_or in the empty-state widget check. Apply the
mechanical fixes clippy suggests; no behavior change.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>