github Hmbown/CodeWhale v0.9.8

5 hours ago

Codewhale is the public product from Shannon Labs. The codewhale
command, npm package, and release-asset names remain lowercase technical
identifiers. 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 entrypoints)

npm install -g codewhale

The wrapper downloads the matched codewhale and codew command assets
from this Release. Both contain the same compiled runtime.

Docker / GHCR

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

The image exposes the same runtime as both codewhale and codew. The
latest tag is also updated on release.

Cargo (Linux / macOS)

cargo install codewhale-cli --locked

The Cargo package installs codewhale. Cargo cannot create a second command
alias from one binary target; users who want the shorter spelling can add a
codew symlink to that installed executable. The npm, Homebrew, archive,
shell-installer, and container channels install both command names directly.

Manual download — platform archives (recommended)

Each archive below contains the same runtime under the codewhale and
codew command names, 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
Android ARM64 (Termux) codewhale-android-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
Windows ARM64 codewhale-windows-arm64.zip install.bat
Windows ARM64 (portable) codewhale-windows-arm64-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 and codew.exe under
    %LOCALAPPDATA%\Programs\CodeWhale\bin and adds that directory to the
    current-user PATH.
  • Extract the archive for your machine: codewhale-windows-x64.zip or
    codewhale-windows-arm64.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 codewhale-<platform> and
codew-<platform> assets. The seven codewhale-tui-<platform> filenames
attached to v0.9.5 are byte-identical compatibility copies used only to let
already-installed v0.9.4 clients discover and cross this single-binary
transition; current installers do not expose a third runtime. 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 --ignore-missing

# Linux — individual binaries
sha256sum -c codewhale-artifacts-sha256.txt --ignore-missing

# macOS
shasum -a 256 -c codewhale-bundles-sha256.txt --ignore-missing
shasum -a 256 -c codewhale-artifacts-sha256.txt --ignore-missing

What's in v0.9.8

Remaining web settings polish and prefab third-party templates move to
v0.9.9.

Changed

  • Plugin compatibility is now per-component. A reviewed, trusted, enabled
    bundle that mixes Skills or MCP with unsupported commands, agents, hooks,
    LSP, native, filesystem-roots, or lifecycle-mutation declarations keeps the
    supported adapters active and reports the rest as inactive (full /
    partial / unsupported). All-unsupported bundles still cannot be enabled.
    The capability hash is now v2 and binds this build's activation policy, so
    older v1 receipts and any later adapter-enablement change fail closed as
    needs-review. Skills and each MCP transport re-request their own capability
    at the consumption boundary.

Added

  • /plugin marketplace add|list|show|remove|install completes the
    federated marketplace journey (#5311). add reads one LOCAL catalog
    document in the real published schemas (Kimi, Claude, Codex, or
    Codewhale native) — no network, regular files only — and persists it
    beside the plugin state with the same hardened, fail-closed store.
    list/show render every candidate with per-entry diagnostics,
    display-only tiers, and honest install plans that say when Codewhale
    cannot fetch a source; install routes through the existing reviewed
    installer, so installed bundles still enter disabled and untrusted.
    Foreign auto-install policy (Codex INSTALLED_BY_DEFAULT) is visibly
    ignored; nothing is auto-installed, auto-trusted, or granted vendor
    trust.

  • /rc attach now includes an observed owner/name git remote when the
    folder has a GitHub, CNB, or Gitee origin, so CWC can label the paired
    session. Paths stay off the wire. Reconnect after both this client and
    CWC #202 land to backfill existing empty rows.

  • The local Runtime web client keeps the thread rail clipped so New
    thread
    cannot paint over the session fact chips. Chips wrap instead
    of sliding under the rail.

  • Z.ai GLM-5.3 is a live Coding Plan picker option (/model after
    /provider zai, or model = "GLM-5.3"). GLM-5.2 stays the default.
    Limits and reasoning options still inherit from GLM-5.2 until Z.ai
    publishes distinct 5.3 numbers. No USD price is claimed. A live call
    can still 429 with entitlement code 1311 on accounts that are not
    provisioned for 5.3.

  • The TUI transcript renders Markdown blockquotes (> lines) with a quote
    rail — nested quotes, inline bold/code/links, wrapped continuation rows, and
    selection copy that keeps the quote text and skips the rail chrome.

  • Sub-agent details show the resolved model, fleet role, and type. Labels
    use the session/role name instead of a generic Agent N (#5371, #5287).

  • Documented catalogue output ceilings (DeepSeek V4 384K) are honored on
    the request. A clean output-limit stop continues the turn instead of
    killing it (#5373).

Fixed

  • Selecting the google provider kind resolved to the antigravity
    TUI identity (and vice versa): the agy provider entry was inserted at
    different positions in the config-level enum and the TUI's
    discriminant-indexed lookup table. The table now matches the enum, so
    provider pickers, sorted display, and kind round-trips are correct.

  • The provider picker's key-entry stage accepted typed input and pastes
    for OAuth-only providers after antigravity declared OAuth
    acquisition; those gates now key off the OAuth acquisition class
    instead of a hard-coded provider identity.

  • The webhook hook sink no longer panics when its HTTP client fails to
    build; it falls back to a default client (#5381, EvanProgramming).

  • Session-index JSONL writes are serialized behind a process-wide mutex
    so concurrent state stores cannot drop an append during compaction
    (#5382, EvanProgramming; complements the cross-process file lock).

  • A billed max_tokens stop followed by a transport error fails the turn
    instead of continuing into a second request. A clean output-limit stop
    still continues. Mid-size context windows keep the ordinary 65K internal
    reservation so compaction does not collapse to the 1K headroom floor
    when the catalogue documents a matching output ceiling.

  • Thinking cycle, /effort, and Settings now walk each model's real ladder
    instead of the DeepSeek off/high/max shortcut. Grok 4.6 is
    auto/low/medium/high/xhigh (cannot disable); Grok 4.5 is
    auto/low/medium/high; first-party DeepSeek keeps a documented low tier.
    /effort persists and receipts through the same path as Ctrl+T.

  • Google Gemini is its own backend (/provider google) on the official
    OpenAI-compatible route with thought-signature capture/replay and
    fail-closed replay for thinking models. Antigravity (agy 1.1.13) joins
    as a separate credential-plane provider: consent-gated read-only import
    of the official CLI's login with ANTIGRAVITY_API_KEY/AGY_ADC_AUTH
    precedence; requests fail closed until the cloud-code wire protocol is
    implemented.

Removed

  • The source-structure budget ratchet (CI step, checker, baseline JSON).
    It measured line counts, not quality: every legitimate feature required
    a hand-edited ceiling and the accompanying "review" was self-review, so
    it bought ceremony, not protection. Behavior-measuring gates (dead-code,
    runtime-contract, persistence-backlog) stay enforced.
  • DeepSeek can reuse a key already stored by official DeepSeek Harness
    (dsh) after
    codewhale auth external-consent --provider deepseek --mode read-only.
    Codewhale reads only DEEPSEEK_API_KEY from the exact granted
    $DSH_HOME/.credentials.yaml and never writes or refreshes that file.
  • The TUI markdown parser now honors CommonMark fence-length rules: a ````
    opener is not closed by a shorter ``` line, so > content inside a longer
    fence stays literal code instead of escaping into a quote.
  • Sub-agents finalize when the parent session id changes, so a closed
    session cannot block new children as a live owner (#5372).
  • Child spawn-route receipts stay live and usage is deduped by response
    (#5366).
  • Doctor keeps persisted setup readiness across first-run / update
    checkpoints (#5340).
  • Approval default selection is applied and explained; agents are told
    when approvals are disabled (#5293).
  • A /models 2xx probe is a connection check, not model readiness.
  • Site layout uses one container, the ticker no longer implies false
    provider readiness, and install links stay in the active locale.

Don't miss a new CodeWhale release

NewReleases is sending notifications on new releases.