v0.9.7
ruvnet/RuVectorv0.9.7Aug 13, 2026by github-actions[bot]
AI Summary
This release adds Grok 4.6 as the direct xAI default, integrates OrcaRouter as a named provider, and resolves panic safety issues in the LRU cache.
Key Highlights
- Grok 4.6 added as direct xAI default with full reasoning effort support
- OrcaRouter integrated as a first-class named provider
- LRU crate updated to fix RUSTSEC panic safety issue
- Session snapshot handling split for explicit recovery
New Features
- Grok 4.6 support with 500K context and tool support
- OrcaRouter provider support
- Improved message copying in clipboard
- OrcaRouter routing support
Full Release Notes
> **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)
```bash
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
```bash
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v codewhale-home:/home/codewhale/.codewhale \
ghcr.io/hmbown/codewhale:v0.9.7
```
The image exposes the same runtime as both `codewhale` and `codew`. The
`latest` tag is also updated on release.
### Cargo (Linux / macOS)
```bash
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):**
```bash
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:
```bash
# 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.7
Codewhale v0.9.7 keeps the catalog ordinary. Grok 4.6 lands as a normal catalog
row instead of a provider-shaped pile of special cases, OrcaRouter joins as a
named provider, and a panic-safety advisory in `lru` is cleared by lifting the
pin that caused it rather than living around it.
### Added
- Grok 4.6 is the direct xAI default, with the `grok` alias moving onto it and
`grok-4.5` still explicitly selectable. Its 500K context, text/image input,
tool and structured-output support, `low`/`medium`/`high`/`xhigh` reasoning
efforts (default `high`), and server-side web search all come from the
Models.dev-shaped catalog rather than model-specific code. `reasoning_effort`
reaches the wire only on the exact first-party `https://api.x.ai/v1` route,
and the usage-aware 200K-token pricing boundary is scoped to direct xAI so
aggregator routes reusing the model slug cannot inherit xAI billing.
- OrcaRouter is a first-class named provider: `ORCAROUTER_API_KEY`, default base
URL `https://api.orcarouter.ai/v1`, `deepseek/deepseek-v4-pro` default,
`orcarouter/auto` routing, CLI `--provider` selector, and TUI picker entries
(#5321).
### Changed
- Reasoning-effort normalization and the model picker read a model's published
`reasoning_options` list from the catalog instead of collapsing every route to
the historic Low/Medium ladder. Any catalog row that publishes an effort list
keeps its own vocabulary.
- Docs record DeepSeek's live `DeepSeek-V4-Pro-0813` backend label while the
callable API ID stays `deepseek-v4-pro`. No aliases are remapped and no
`deepseek-v4-pro[1m]` selector is sent.
### Fixed
- Copying a user or assistant message takes its canonical content instead of
reserialized transcript lines, keeping role glyphs, continuation rails, and
visual wrapping out of the clipboard while preserving authored Unicode,
Markdown, and hard line breaks. Tool and Thinking cells stay on the existing
full-transcript path (#5319).
- `load_session` no longer runs crash recovery on every read. Snapshot reads go
through a side-effect-free `load_session_snapshot` and recovery is explicit
via `recover_session_for_resume`, so an embedding host inspecting a durable
session while a tool is still running no longer gets a spurious crash repair
(#5320).
### Security
- `lru` moves to 0.18 to clear RUSTSEC-2026-0253, where `LruCache::pop()` was
not panic-safe and could leave dangling list pointers. The `ratatui-core`
`=0.1.0` pin that transitively forced `lru` ^0.16 is lifted, so
`ColorCompatBackend` now answers `get_cursor_position()` from tracked cursor
state — the upstream-recommended workaround for the startup CPR race
(ratatui/ratatui#2483, ratatui/ratatui#2640) that the pin originally worked
around. `ratatui` itself stays pinned at `=0.30.0`, so the API surface is
unchanged.
### Known issues
- The integration test
`exec_persistent_service::failed_exec_kills_pending_service_and_exits_nonzero`
is a confirmed flake under parallel load ("service pid file never appeared").
It passes in isolation and is unrelated to any v0.9.7 change.
## Contributors
- XhesicaFrost (@XhesicaFrost) — canonical message copy (#5319).
- h3c-hexin (@h3c-hexin) — session snapshot and crash-recovery split (#5320).
- XiaoHuo888-hue (@XiaoHuo888-hue) — OrcaRouter provider registration (#5321).
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.