v0.8.61
Hmbown/Codewhalev0.8.61Jun 16, 2026by github-actions[bot]
AI Summary
This release establishes the runtime control plane for multi-agent work, introduces WhaleFlow foundations, and fixes critical TUI freezes under load.
Key Highlights
- WhaleFlow runtime foundations with worker profiles and cross-provider model registry.
- Per-role, heterogeneous-model sub-agent routing.
- TUI freeze fix for multiple sub-agent spawns (input pump fix).
- Provider and model route isolation per session.
New Features
- WhaleFlow runtime foundations (worker profiles, readiness services).
- Per-role, heterogeneous-model sub-agent routing.
- Durable goal mode with token/time accounting.
- TUI freeze fix for multiple sub-agent spawns.
- Provider/model route isolation.
Full Release Notes
> **CodeWhale** is the canonical project, command, npm package, and > release-asset name. The legacy npm package `deepseek-tui` is > deprecated and receives no further releases. Users coming from > v0.8.x legacy `deepseek` / `deepseek-tui` names should migrate > with `docs/REBRAND.md`. ## Install ### Recommended — npm (one command, both binaries) ```bash npm install -g codewhale ``` The wrapper downloads both binaries from this Release and places them in the same directory. ### Docker / GHCR ```bash docker run --rm -it \ -e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \ -v ~/.deepseek:/home/codewhale/.deepseek \ ghcr.io/hmbown/codewhale:v0.8.61 ``` The image ships the `codewhale` dispatcher and `codewhale-tui` runtime. The `latest` tag is also updated on release. ### Cargo (Linux / macOS) ```bash cargo install codewhale-cli codewhale-tui --locked ``` Both crates are required — `codewhale-cli` produces the `codewhale` dispatcher and `codewhale-tui` produces the interactive runtime that the dispatcher delegates to. Installing only one binary will fail at runtime with a `MISSING_COMPANION_BINARY` error. ### Manual download — platform archives (recommended) Each archive below contains **both** the `codewhale` dispatcher and `codewhale-tui` runtime, plus an install script: | Platform | Archive | Install script | |---|---|---| | Linux x64 | `codewhale-linux-x64.tar.gz` | `install.sh` | | Linux ARM64 | `codewhale-linux-arm64.tar.gz` | `install.sh` | | Linux RISC-V | `codewhale-linux-riscv64.tar.gz` | `install.sh` | | macOS x64 | `codewhale-macos-x64.tar.gz` | `install.sh` | | macOS ARM | `codewhale-macos-arm64.tar.gz` | `install.sh` | | Windows x64 (installer) | `CodeWhaleSetup.exe` | NSIS setup | | Windows x64 | `codewhale-windows-x64.zip` | `install.bat` | | Windows x64 (portable) | `codewhale-windows-x64-portable.zip` | — | **Unix (Linux / macOS):** ```bash tar xzf codewhale-<platform>.tar.gz cd codewhale-<platform> ./install.sh ``` **Windows:** - For the installer path, run `CodeWhaleSetup.exe`; it installs both binaries under `%LOCALAPPDATA%\Programs\CodeWhale\bin` and adds that directory to the current-user PATH. - Extract `codewhale-windows-x64.zip` - Run `install.bat` (copies to `%USERPROFILE%\bin`) - Add `%USERPROFILE%\bin` to your PATH The **portable** Windows archive skips the install script — extract and run from any directory. The NSIS installer is currently unsigned and may trigger Windows SmartScreen until a signing certificate is wired into the release pipeline. Each platform also has **bare, unarchived** binaries attached below (`codewhale-<platform>` and `codewhale-tui-<platform>`) — these are what the npm wrapper and the in-app `codewhale update` download, whereas the `.tar.gz` / `.zip` archives above are the recommended manual download and additionally bundle an install script. The legacy npm package `deepseek-tui` is deprecated and is not republished. For migration from v0.8.x legacy binary names, see `docs/REBRAND.md`. ### Verify (recommended) Download the checksum manifests from this Release and verify: ```bash # Linux — archive bundles sha256sum -c codewhale-bundles-sha256.txt # Linux — individual binaries sha256sum -c codewhale-artifacts-sha256.txt # macOS shasum -a 256 -c codewhale-bundles-sha256.txt shasum -a 256 -c codewhale-artifacts-sha256.txt ``` ## What's in v0.8.61 This release lands the **runtime control plane** for multi-agent work: the TUI stays responsive while sub-agents run, sub-agents converge toward fleet-style durable workers with per-role model routing, and provider/model routes are isolated per session. It also folds in several community contributions. ### Added - **WhaleFlow runtime foundations** — worker runtime profiles (role / permissions / shell / tools / model-route, with non-escalating child derivation), a cross-provider model registry with offline catalog hydration, and provider-readiness / context-budget / provider-adapter / resource-telemetry services. (#3217, #3071, #3072, #3073) - **Per-role, heterogeneous-model sub-agent routing** — sub-agents can be assigned a model and provider per role (e.g. scout vs. synthesis; verifiers route to a fast model). (#2027, #1768) - **Durable goal mode** — cross-turn goal progress with token/time accounting and a verifier-as-judge gate before a goal may complete. (#3215, #891, #1976, #2058, #2029) - Parent-visible worker interaction contract — a recommended action per worker. (#3226) - Maintainer GitHub workflow skills; ACP registry submission prepared. (#3192) - OpenAI-compatible `/v1/chat/completions` endpoint on the legacy app-server HTTP transport, provider-neutral, with model registry resolution and configured-credential forwarding. ### Changed - **Sub-agents converge toward fleet-style durable workers** — real worker lifecycle states are projected to the sidebar instead of a hardcoded "running", and a sub-agent returns a structured needs-input checkpoint instead of parking. (#3226, #3096, #3154) - The per-turn runtime tag exposes capability posture instead of human-facing mode labels. (#3213) - Independent shell and verifier work defaults to background jobs with nonblocking waits and a completion notification; blocking now requires an explicit wait. (#3212) - Sub-agent launches now expose explicit `model_strength` and `thinking` controls to the model instead of hidden child-model auto-routing; `explore` work is documented as a good fit for faster models and `thinking: "off"`. - Plan mode is strictly read-only (no shell tools), consistent with its runtime posture. - `/swarm` is gated behind the durable worker substrate. (#3218) - Legacy `deepseek` install/update path resolves to `codewhale`. (#2960, #2924, #2917) ### Fixed - **TUI freeze when multiple sub-agents spawn (launch blocker)** — the terminal input pump runs off the render thread, AgentProgress events are coalesced, and sub-agents no longer park on input with no orchestrator to answer; a six-worker stress test guards input/render/cancel liveness. (#3216, #3096) - Idle sub-agent completion notifications now resume the parent turn instead of waiting for a later user message; thanks @giovanni-paolilla for the deadlock report (#3266). - **Provider/model route isolation** — provider and model state is session-local, and a mismatched provider+model tuple is rejected at the route boundary. (#3227) - Route-effective context-window metadata, over-limit preflight, and bounded recovery from `context_length_exceeded` instead of re-looping. (#3204) - Synchronous tools (`file_search`, `grep_files`, `list_dir`) are cancellable and no longer hold a turn open against cancellation. (#1791) - MCP stdio proxy startup prompts no longer strand YOLO / non-interactive runs. (#2475) - Stalled / failed background-shell recovery; configurable sub-agent API timeout. (#1737, #1786, #1806) - Composer: reliable queued steering + Ctrl+S send (#3203, #3224); footer busy/idle indicator (#2982); CJK word-wrap (#963); clickable sidebar stop targets (#3028); live token throughput (#3190); auto-expiring terminal sub-agent cards (#3078). - Linux glibc preflight in the installer/update path with a clear error. (#3207, #1067) - Self-update retries transient GitHub metadata/asset failures and falls back from the GitHub REST API to the public `releases/latest` redirect before constructing release asset URLs. (#3232) - Provider picker lists providers in neutral alphabetical order instead of hard-coding DeepSeek first; the active provider stays pre-selected. (#3076) - Work sidebar no longer shows stale `phase now:` / `phase next:` strategy rows once the checklist is 100% complete. - Plan mode no longer shortcuts investigation for requests that name a repository, URL, version, release, build state, benchmark, bug, PR, issue, API surface, or local code path. - Oversized pasted text stays editable in the composer, with a file backup appended at submit time for model access; thanks @idling11 (#3267, closes #3263). - Bare digit keys `1`-`8` now insert text instead of firing hotbar slots; use `Alt+digit` for hotbar actions. Thanks @wjq2026 for the report and @DieMoe233 for the paste-path note (#3243). - Kimi/Moonshot tool schemas normalize empty function parameters to a root object schema; thanks @jghwwnq for the provider repro (#3265). - Novita defaults to its OpenAI-compatible `/openai/v1` endpoint so chat completions no longer 404 out of the box; thanks @buko for the report and endpoint verification (#3255). - Dependency security: `ws` pinned to 8.21.0 across npm packages to close remote memory-exhaustion DoS (dependabot). ### Community contributions - Non-DeepSeek model pricing — thanks @mvanhorn (#3201) - Telegram polling transport — thanks @cyq1017 (#3195) - Mobile event history — thanks @RobertEmprechtinger (#3220) - Runtime-API session save — thanks @gaord (#3199) - Whale-accent rename — thanks @nightt5879 (#3197) - `DEEPSEEK_BASE_URL` / `MODEL` honored in `exec` — thanks @hongchen1993 (#3221) - VS Code read-only API documentation — thanks @cyq1017 (#3013) - Atomic ask-only permission rule persistence — thanks @greyfreedom (#3233) - DeepInfra provider support and release-surface follow-through — thanks @idling11 (#3235, closes #3231) and @nightt5879 (#3236) - Editable oversized paste composer flow — thanks @idling11 (#3267, closes #3263) - WeChat bridge (`integrations/weixin-bridge` via Feishu + Tencent OpenClaw) — thanks @VincentCorleone (#3206) - Config robustness: atomic permission-rule save, one-time config `.bak` backup before the first changed write, `CODEWHALE_HOME` as primary config home, and accepting the dispatcher-written config shape (camelCase aliases + `[features.enabled]` table) so legacy/dual-written configs parse cleanly - Dependency/CI bumps: docker login/qemu actions, softprops gh-release, download-artifact, vitest, @opennextjs/cloudflare, form-data, js-yaml, dompurify, ws Contributor credits for this release live in the changelog entry above — thank you to everyone whose reports, PRs, reviews, and reproductions shaped it. See [CHANGELOG.md](https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md) for full notes and [docs/CHANGELOG_ARCHIVE.md](https://github.com/Hmbown/CodeWhale/blob/main/docs/CHANGELOG_ARCHIVE.md) for older releases.