Skip to content

v0.8.67

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Jul 08:28

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)

npm install -g codewhale

The wrapper downloads the matched runtime binaries from this Release and places them in the same directory.

Docker / GHCR

docker run --rm -it \
  -e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
  -v ~/.deepseek:/home/codewhale/.deepseek \
  ghcr.io/hmbown/codewhale:v0.8.67

The image ships the codewhale dispatcher, codew shim, and codewhale-tui runtime. The latest tag is also updated on release.

Cargo (Linux / macOS)

cargo install codewhale-cli codewhale-tui --locked

Both crates are required — codewhale-cli produces the codewhale dispatcher and codew shim, while codewhale-tui produces the interactive runtime that the dispatcher delegates to. Installing only one crate will fail at runtime with a MISSING_COMPANION_BINARY error.

Manual download — platform archives (recommended)

Each archive below contains the codewhale dispatcher, codew shim, 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
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):

tar xzf codewhale-<platform>.tar.gz
cd codewhale-<platform>
./install.sh

Windows:

  • For the installer path, run CodeWhaleSetup.exe; it installs codewhale.exe, codew.exe, and codewhale-tui.exe 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>, codew-<platform>, and codewhale-tui-<platform>) — the npm wrapper and the in-app codewhale update download the matched runtime binaries, 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:

# 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.67

Added

  • The model you select in /model is now the operator: fleet workers whose
    task spec and roster profile pin no model inherit the active session route
    instead of a hardcoded auto sentinel, matching the pinned operator row in
    /fleet roster. Task-level and profile model overrides still win, and
    route receipts record which source applied (task.model,
    agent_profile.model, or run.model).
  • Added the /workflow command (aliases /workflows, /wf) as the user
    opt-in to workflow orchestration. Bare /workflow orchestrates the current
    work — the model synthesizes the objective from the conversation context;
    /workflow <objective> narrows the run; /workflow status [run_id] and
    /workflow cancel <run_id> relay typed run receipts without starting new
    runs.
  • Bare /goal with no active goal now declares a goal from the conversation
    context via create_goal instead of printing usage; with an active goal it
    remains the status readout, and explicit /goal <objective> is unchanged.
  • Added the constitution-first setup wizard: a unified /setup shell with
    resume, back navigation, and skip-retry state; provider/model readiness
    cards with a custom-provider form and provider-picker detail layout; a
    runtime posture card with preset application and project-override warnings;
    a setup verification report; and transactional setup persistence with
    secret redaction and rollback (#3402, #3403, #3404, #3405, #3406, #3410,
    #3411).
  • Added a structured user-global constitution with a deterministic renderer,
    prompt-block injection, guided principle authoring with preview and preset
    save, and a /constitution manager command as the primary constitution
    management surface, with file state shown in setup and actions surfaced in
    diagnostics (#3793, #3806, #3811).
  • Added model-assisted constitution and fleet-profile drafting behind an
    explicit ratify gate, with untrusted-draft provenance recorded so
    model-authored text is never applied silently. Updating users keep their
    existing constitution unchanged, and a localized constitution checkpoint is
    required after update (#3794).
  • Added the Hotbar route editor v1 with route-switch slot actions and support
    for custom model routes, plus a configured-provider route manager for
    /provider and /model with a missing-auth handoff into provider key
    entry (#2066, #3830, #3831).
  • Added auto-discovery of .codewhale/rules/ and .claude/rules/
    directories as project context, with a total byte-budget cap on the
    assembled rules block. Contributed by maple (@yekern).
  • Exposed context_input_budget_for_route from the engine so external
    integrations can reuse route budget math. Contributed by hexin
    (@h3c-hexin).
  • Added GUI config persistence to the runtime API. Contributed by @gaord.
  • Added a website localization matrix with a locale registry and drift
    checks. Harvested from #3763 by @idling11 (#3090).
  • Added doctor detection of half-applied setup state, and startup milestone
    tracing for boot-performance diagnosis.
  • Added a v0.8.67 computer-use dogfood prompt that covers the Cursor-terminal
    QA flow, headless gates, setup, sub-agent completion, Fleet, Workflow, model
    pricing, and release evidence collection.
  • Fleet: local worker memory usage is now reported, including retained memory
    while a task is in Running status. Contributed by @cyq1017 (#3901).
  • Website: community hub, constitution thesis page and constitution-centered
    homepage, models page generated from the provider registry, docs dark mode
    and full SEO metadata/sitemap coverage, terminal player for real
    constitution traces, and a live star badge and version.
  • Added Meituan LongCat as a first-class OpenAI-compatible provider
    (longcat, with long-cat, meituan-longcat, and meituan aliases),
    LONGCAT_API_KEY discovery, the LongCat-2.0 default model, provider
    picker wiring, model completions, provider docs, and web provider facts.
  • Fleet: added per-provider setup cards (Persistence, Constitution, Hotbar,
    Tools/MCP, Remote Runtime) with a unified setup catalog and provider-specific
    credential links. Provider setup progress is persisted transactionally with
    rollback guards, Codex OAuth is kept out of provider key storage, and a
    headless QA contract verifies setup readiness across providers.
  • Fleet: added Fleet starter profiles with role-aware loadouts (scout→Fast,
    manager→Inherit, etc.), /fleet setup profile-authoring wizard, Fleet
    effective-permission recording, and route intent-source tracking.
  • Fleet: added 'operator' as a built-in Fleet roster member — the preferred
    helm Fleet slot for workflow coordination. Operator plans, routes, reviews
    outputs, and calls other Fleet slots as needed. This is a roster role, not a
    separate app mode. The full Operation/Operate-mode architecture is deferred
    to 0.9.0.
  • Workflow: declarative workflows now run through the production driver, the
    workflow tool is wired to sub-agent dispatch, public Workflow surfaces are
    renamed, and typed workflow-run and status receipts are emitted for
    debugging and verification.
  • Added provider-agnostic Fleet rosters and loadouts: provider-specific
    subagent limits, launch concurrency, and admission caps are derived from
    config without hardcoding any single provider.
  • Added Workflow runtime foundations: the internal JS authoring/runtime crates
    compile and replay example workflows. 0.8.67 ships the /workflow opt-in,
    production-driver dispatch path, sub-agent task handoff, and typed run/status
    receipts; richer authoring UX and the full TUI run view remain tracked for
    v0.8.68 (#2974, #4038).

Changed

  • Clarified the Fleet coordination hierarchy and made roles carry real
    doctrine: the operator (the session's /model selection) runs the
    operation and assigns managers to workflows; a manager is the middle
    manager of exactly one workflow. The built-in reviewer is now explicitly
    adversarial (assume the change is broken, try to refute it), and the review
    sub-agent intro adopts the same framing. Built-in manager/operator/
    reviewer roster members now ship role instructions that flow into worker
    prompts on both the Fleet task-spec and agent/workflow profile: spawn
    paths; custom profiles override them via the same instructions field.
  • Removed the decorative Fleet vocabulary that never routed differently:
    the tool-heavy slot and the strong/balanced/deep-reasoning/code/
    review/tool-heavy loadout tiers. inherit (the operator's route) and
    fast (the provider's faster class) remain; retired names in existing
    configs keep parsing (as custom labels) with identical auto routing, and
    the /fleet setup model-class step now offers only the real choices.
  • Raised the default subagent concurrency for high-throughput fanout:
    max_subagents default 20 → 64 (config ceiling 128) and the queued+running
    admission cap 200 → 1024. Users on metered plans who want the old behavior
    can set max_subagents = 20 in config.toml.
  • Renamed the internal whaleflow subsystem to workflow across the
    workspace: the codewhale-whaleflow/codewhale-whaleflow-js crates become
    codewhale-workflow/codewhale-workflow-js, Rust identifiers and JS bridge
    symbols are renamed, the CODEWHALE_WHALEFLOW_JS_* environment variables
    become CODEWHALE_WORKFLOW_JS_*, and the authoring/RFC docs move to
    WORKFLOW_AUTHORING.md and WORKFLOW_EXTERNAL_MEMORY.md. Historical
    changelog and retro-ledger entries keep the old name as a record.
  • Documented the Homebrew rollout strategy and added a distribution-channel
    check to the release checklist. Harvested from #3760 by @idling11 (#3489).
  • Paused Linux RISC-V prebuilt release and nightly artifacts because
    rquickjs-sys 0.12.0 does not ship riscv64gc-unknown-linux-gnu bindings;
    installers, docs, and update paths now treat RISC-V as unsupported until
    upstream bindings or a bindgen-enabled build lands.
  • Made the approval prompt calm, compact, and honest, and centered the
    first-run follow-up on the constitution; first-run onboarding now hands off
    into the setup wizard, and the language picker offers every shipped locale
    (#3929).
  • Startup performance: boot janitors and store scans no longer block the
    first frame, @mention completion no longer re-walks the workspace per
    keystroke, and idle offline-queue clones and duplicate tool-output hashing
    were eliminated.
  • Clarified the misleading "Ctrl+B backgrounds this command" shell wording
    (#3859) and the hotbar help shortcuts. Docs contribution by Chanhyo Jung
    (@roian6).
  • Documented the enforced repo-law invariants, the constitution flow, and the
    /fleet setup profile-authoring wizard; aligned permissions.toml action
    docs. Docs contribution by @greyfreedom.
  • Bumped web dependencies: wrangler 4.103.0 → 4.107.0, mermaid 11.15.0 →
    11.16.0, vitest 4.1.8 → 4.1.9 (@dependabot).
  • Backfilled v0.8.67 regression coverage across sub-agent completion, budget
    exhaustion, delegate ordering, provider onboarding, setup scroll, model
    catalog pricing, Fleet routing, and Workflow gates (#4076).
  • Split the large TUI debug command group and palette/theme internals into
    smaller modules without changing user-visible behavior (#4078, #4081).

Fixed

  • Fixed the goal sidebar elapsed timer so completed and blocked goals freeze
    their "completed in {elapsed}" readout instead of ticking forever. Goal state
    now records a finished_at instant that both sidebar render paths and the
    engine snapshot clamp elapsed against; /goal resume clears the freeze and
    the timer ticks again.
  • Fixed paused goals silently un-freezing their sidebar timer: usage keeps
    accruing while paused, and the next goal snapshot used to clear the frozen
    instant. Paused goals now stay frozen until an explicit resume.
  • Fixed durable /goal progress accounting so usage and continuation updates
    release the shared SQLite connection before re-reading the updated goal,
    unblocking resumed goal loops and full workspace release tests.
  • Fixed a scheduled-automation race where deleting an automation while its
    run was being enqueued left the already-created task running untracked;
    the run record is now persisted unconditionally.
  • Removed panic = "abort" from the release profile: it disabled unwinding
    and broke the panic supervision that keeps one failing tool call from
    taking down the whole session. The lto/strip/codegen-units size and
    speed tuning is unchanged.
  • Fixed session save/load to persist and restore the active model provider
    across restarts. Previously sessions created under one provider (e.g.
    DeepSeek) would silently load under a different active provider. Provider,
    subagent limits, fallback chain, context window, and reasoning effort are now
    restored from saved session metadata, with "deepseek" as the default for
    legacy sessions.
  • Raised the streamed model-response idle timeout and matched the TUI stall
    watchdog to the configured stream budget so long reasoning pauses are not
    recovered as stalled turns (#2487, #3998).
  • Fixed Codex OAuth/sub-agent release diagnostics so auth list reports an
    active Codex OAuth file, Responses API child requests encode inherited tool
    names safely, rate-limited child requests checkpoint as resumable provider
    interruptions, and failure records surface the real Responses API error
    (#3884).
  • Fixed fresh launch/setup testing with an explicit CODEWHALE_HOME so
    config, settings, theme prefs, and doctor legacy-state diagnostics do not
    inherit unrelated ambient ~/.deepseek files (#4001, #4002).
  • Sub-agent state now persists to .codewhale/ instead of the lingering
    pre-rebrand .deepseek/ path (#3864). Contributed by Stime (@yekern).
  • /plugin enable|disable now persists across restarts (#3918), and the
    plugin command is hidden from the root slash menu and kept canonical after
    the scanner merge. Contributed by Nightt (@nightt5879).
  • /config ask-rules now shows ask rule actions with improved diagnostics,
    with file-rule action precedence under test. Contributed by @greyfreedom.
  • Fleet/sub-agents: enforced an absolute recursion-depth ceiling and widened
    task-id entropy, gave each atomic state write a unique temp path, kept
    sub-agent tool catalogs in parent parity (#3836), and made the Agents
    sidebar reconcile sub-agent completion and cancellation live (#3837).
  • Fixed apply_patch mangling newlines, defaulted fuzz to 3, and made writes
    atomic; fixed compaction to preserve pins on emergency compaction, harden
    the summary fallback, and count image tokens; corrected backtrack boundary,
    checkpoint clear ordering, prune guard, and durable rename.
  • Fixed the SSE client to flush the final frame, join multi-line data fields,
    and stop corrupting multibyte UTF-8 split across network reads.
  • Kept review-only turns read-only, aliased auto mode to the agent policy,
    showed the mode-derived safety policy in status (contributed by @cyq1017),
    and stopped the durable-review floor from holding routine YOLO work
    (#3883).
  • Fixed self-update to prefer exact binary release assets. Contributed by
    @LI-Jialu.
  • UI polish: stopped constitution and fleet-profile model drafts from
    freezing the event loop, scoped the context-menu backdrop to the popup
    rect, stacked model-picker panes on narrow modals, unified display-width
    helpers on one contract (#3924), removed misleading success toasts,
    issue-number leaks, and dead-end empty states, and repaired the onboarding
    trust and api-key keys.
  • Fixed the onboarding Trust step so plain Enter no longer silently grants
    workspace trust; users must choose the explicit trust or exit keys.
  • Fixed same-root skill-name collisions being silently shadowed; duplicate
    normalized skill names now warn while keeping discovery deterministic
    (#3919).
  • Normalized discovered skill names, removed unenforced trust copy, and
    surfaced the gated constitution override in prompts.
  • Fixed a parallel subagent:: suite flake where one test's process-wide
    Retry-After pause could strand unrelated budget-capped workers for the
    full stale window; requests now re-poll the global pause in bounded slices
    and the rate-limit test clears the window on drop.
  • Sub-agent and Fleet reliability now fail empty, step-limited, and
    budget-exhausted children with explicit diagnostics instead of silent
    Completed (no output) success; budget exhaustion preserves partial output,
    worktree: true discovers one-level nested repos from harness directories,
    and completion-before-start delegate events recover into named rows instead
    of ellipsis-only identities (#4050, #4051, #4052, #4053).
  • Goal-mode writing and research tasks can complete with
    verification.status = "not_applicable" without triggering continuation
    loops (#4054).
  • First-run onboarding routes API keys through the selected provider, setup
    wizard bodies scroll with PageUp/PageDown, shipped locale packs are back to
    en.json parity with zh-Hant explicitly partial, stable feature flags stay
    out of Experimental, and model/provider rows include current LongCat and
    sourced-pricing hints (#4056, #4057, #4058, #4062, #4063).
  • Running tool rows animate while a lone foreground tool is active, and
    workflow receipts render run/status/failure cards instead of one-line or
    null-success output (#4059).
  • Model-facing turn metadata now includes a compact git workspace snapshot and
    escalates context pressure at the same thresholds as the TUI, helping agents
    narrow scope or compact before truncation (#4071, #4073).
  • Successful child sub-agent completions inline the child's EVIDENCE block
    before the completion sentinel, so parents can cite child findings without
    re-running tools (#4072).
  • Deferred tools hydrate and execute in the same batch when the original
    arguments are valid, and [tools].always_load now keeps configured MCP tools
    active instead of forcing the first-call retry. Thanks @SparkofSpike for the
    hot-path MCP report (#4074, #4027).
  • New commit-range co-author checks reject bot/tool trailers on newly pushed
    commits; historical release-range cleanup remains a separate maintenance
    concern (#4075).
  • Fixed fuzzy edit_file matching so matches that begin with multibyte UTF-8
    characters, including CJK text, advance on character boundaries instead of
    panicking. Contributed by Nightt (@nightt5879), reported by Taixin Guo
    (@taixinguo) (#3971, #4045).
  • Fixed Unix dispatcher/TUI output under early-closing pipes such as
    codewhale doctor | head by restoring the default SIGPIPE handler before
    printing and propagating signal exits quietly. Contributed by @aznikline,
    reported by @BrathonBai (#4030, #4043).
  • Suppressed dead_code warnings in the unused plugin registry module and
    fixed formatting across the command-group files. Contributed by Paulo Aboim
    Pinto (@aboimpinto).
  • Pointed the website Community nav link at the community hub.

Security

  • MCP client hardening: closed an SSE-endpoint SSRF, bounded the HTTP
    response body via Content-Length instead of a streaming read, bounded stdio
    line reads to prevent OOM denial of service, fixed a dead timeout, and
    removed an unbounded buffer.
  • Made execpolicy deny/trust rules segment-aware, closing a command-chaining
    bypass.
  • Closed repo-law and safety-floor bypasses found by adversarial review:
    protected invariants are now enforced as mechanism, the destroyer gap in
    the safety floor is closed, a catalog-present tool with no execution path
    now fails closed, web_run open/click is classified as destructive, and
    the allow-list gained wildcard and case handling.
  • Refused symlinked rules directories to prevent workspace escape via
    discovered rules. Contributed by maple (@yekern).
  • Bounded Fleet sub-agent worker output so fanout cannot exhaust TUI memory
    (#3882), and preserved event headroom for progress. Contributed in part by
    @cyq1017.
  • Added an untrusted constitution-draft gate with authoring provenance so
    model-drafted constitutions require explicit human ratification.

Removed

  • Removed unused model-registry helpers. Harvested from #3872 by @cyq1017.
  • Removed unused request-tuning metadata. Harvested from #3871 by @cyq1017.
  • Removed dead fleet task helpers (#3894 by @cyq1017), the unused
    approval-cache container (#3845) and localization QA metadata (both by
    @nightt5879), the dormant tab collaboration subsystem (#3838), the legacy
    flash auto-router (#3839), the stale project_doc loader (#3840), ignored
    mock LLM placeholders (#3841), dead model-catalog helpers (#3842), the
    unused execpolicy amend module, and dead MCP/client retry helpers.
  • Retired the deprecated WHALE.md context fallback (#3798).

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 for full notes and docs/CHANGELOG_ARCHIVE.md for older releases.