Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 71 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,75 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.9.7] - 2026-08-12

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).

## [0.9.6] - 2026-08-11

Codewhale v0.9.6 is a subtractive release: fewer runtime guards, one stable
Expand Down Expand Up @@ -5445,7 +5514,8 @@ overflow report and `/theme` picker edge-wrapping patch in #1814.

Older releases (v0.8.39 and earlier) are archived in [docs/CHANGELOG_ARCHIVE.md](docs/CHANGELOG_ARCHIVE.md).

[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.9.6...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.9.7...HEAD
[0.9.7]: https://github.com/Hmbown/CodeWhale/compare/v0.9.6...v0.9.7
[0.9.6]: https://github.com/Hmbown/CodeWhale/compare/v0.9.5...v0.9.6
[0.9.5]: https://github.com/Hmbown/CodeWhale/compare/v0.9.4...v0.9.5
[0.9.4]: https://github.com/Hmbown/CodeWhale/compare/v0.9.3...v0.9.4
Expand Down
40 changes: 20 additions & 20 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ default-members = ["crates/cli"]
resolver = "2"

[workspace.package]
version = "0.9.6"
version = "0.9.7"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Align the install guide with the 0.9.7 candidate

After bumping the workspace to 0.9.7, the public install guide still identifies the branch and platform matrix as the “v0.9.6 source candidate” (docs/INSTALL.md:11, :31, :55, and :67). Users consulting the 0.9.7 source tree will therefore be told they are building or testing the previous candidate; update the current-candidate references while retaining genuinely historical v0.9.6 notes.

Useful? React with 👍 / 👎.

edition = "2024"
# Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the
# codebase relies on extensively. Cargo enforces this so users on older
Expand Down
9 changes: 6 additions & 3 deletions README.es-419.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- source: README.md sha256:4fb18fffb0fe -->
<!-- source: README.md sha256:3a759de92f8b -->
# Codewhale

Un agente de programación de código abierto para tu terminal — trae tu propio modelo.
Expand Down Expand Up @@ -69,8 +69,11 @@ aprobación.

- **Cualquier modelo, cualquier proveedor.** DeepSeek, Claude, GPT, Kimi, GLM y
más de 30 proveedores, además de tu propio vLLM, SGLang u Ollama sin key —
todo a través de un solo runtime y un solo conjunto de herramientas. Los
presupuestos de contexto y los precios vienen de la ruta real, y un precio
todo a través de un solo runtime y un solo conjunto de herramientas. El
catálogo sigue la alineación en vivo de cada proveedor: el backend V4 Pro de
DeepSeek (etiquetado `DeepSeek-V4-Pro-0813`) sigue siendo invocable como
`deepseek-v4-pro`, Grok 4.6 es el modelo predeterminado directo de xAI y
OrcaRouter enruta a través de `orcarouter/auto`. Los presupuestos de contexto y los precios vienen de la ruta real, y un precio
desconocido se muestra como desconocido en lugar de $0.
- **Un harness que tú escribes.** Los roles son archivos que puedes leer y
editar — un modelo, una postura de herramientas e instrucciones permanentes por
Expand Down
4 changes: 2 additions & 2 deletions README.id.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- source: README.md sha256:4fb18fffb0fe -->
<!-- source: README.md sha256:3a759de92f8b -->
# Codewhale

Sebuah coding agent sumber terbuka untuk terminal Anda — bawa model pilihan Anda sendiri.
Expand Down Expand Up @@ -42,7 +42,7 @@ Di dalam TUI: `/model` mengganti penyedia dan model sekaligus, `/fleet` menjalan

## Fitur & Kapabilitas

- **Model mana saja, penyedia apa saja.** DeepSeek, Claude, GPT, Kimi, GLM, dan 30+ penyedia lainnya, ditambah vLLM, SGLang, atau Ollama milik Anda sendiri tanpa memerlukan API key — semuanya melalui satu runtime dan satu kumpulan alat. Batas konteks dan harga diambil dari rute sebenarnya, dan harga yang tidak diketahui ditampilkan sebagai *unknown* daripada $0.
- **Model mana saja, penyedia apa saja.** DeepSeek, Claude, GPT, Kimi, GLM, dan 30+ penyedia lainnya, ditambah vLLM, SGLang, atau Ollama milik Anda sendiri tanpa memerlukan API key — semuanya melalui satu runtime dan satu kumpulan alat. Katalog melacak jajaran live setiap penyedia — backend V4 Pro DeepSeek (berlabel `DeepSeek-V4-Pro-0813`) tetap dapat dipanggil sebagai `deepseek-v4-pro`, Grok 4.6 adalah default langsung xAI, dan OrcaRouter melakukan routing melalui `orcarouter/auto`. Batas konteks dan harga diambil dari rute sebenarnya, dan harga yang tidak diketahui ditampilkan sebagai *unknown* daripada $0.
- **Harness yang Anda tulis sendiri.** Peran adalah berkas yang bisa Anda baca dan sunting — satu model, satu sikap perkakas, dan instruksi tetap untuk tiap peran — disimpan di dalam proyek agar tim berbagi, atau di samping pengaturan pribadi Anda agar ikut berpindah antar repo. Constitution mencatat bagaimana Anda ingin agen berperilaku di setiap sesi, sehingga harness mengikuti cara kerja Anda, bukan cara kami.
- **Read-only sampai Anda memberi izin lebih.** Mode Plan tidak dapat mengubah berkas, dan gerbang persetujuan memproteksi perintah berisiko. Ketika sandbox OS membungkus perintah, Codewhale akan menginformasikannya: Seatbelt pada macOS (jika tersedia), serta opsi bubblewrap di Linux. Berkas `constitution.json` repositori dikompilasi menjadi pembatas penulisan yang bahkan tidak dapat dilewati oleh mode Full Access.
- **Pekerjaan yang dapat dilanjutkan.** Fleet mencatat setiap langkah ke ledger bertipe append-only, sehingga `fleet resume` dapat melanjutkan pekerjaan tepat di mana Anda meninggalkannya.
Expand Down
4 changes: 2 additions & 2 deletions README.ja-JP.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- source: README.md sha256:4fb18fffb0fe -->
<!-- source: README.md sha256:3a759de92f8b -->
# Codewhale

ターミナルで動くオープンソースのコーディングエージェント — モデルはあなたが持ち込む。
Expand Down Expand Up @@ -42,7 +42,7 @@ TUI では、`/model` がプロバイダとモデルをまとめて切り替え

## できること

- **どのモデルでも、どのプロバイダでも、そしてどんな組み合わせでも。** DeepSeek、Claude、GPT、Kimi、GLM をはじめ 30 以上のプロバイダ、そしてキー不要のあなた自身の vLLM・SGLang・Ollama が、すべてひとつのランタイムとひとつのツール群を通って動きます。保存された役割は `provider`・`model`・推論ティアを明示的に記録するので、ひとつの実行の中で Fleet が複数のベンダーにまたがることができ、役割のルートはそのとき有効なプロバイダに左右されません。コンテキスト予算と価格は実際のルートに由来し、不明な価格は $0 ではなく不明と表示されます。
- **どのモデルでも、どのプロバイダでも、そしてどんな組み合わせでも。** DeepSeek、Claude、GPT、Kimi、GLM をはじめ 30 以上のプロバイダ、そしてキー不要のあなた自身の vLLM・SGLang・Ollama が、すべてひとつのランタイムとひとつのツール群を通って動きます。カタログは各プロバイダの最新ラインナップを追跡します——DeepSeek の V4 Pro バックエンド(ラベルは `DeepSeek-V4-Pro-0813`)は引き続き `deepseek-v4-pro` として呼び出せ、Grok 4.6 が xAI の直接デフォルト、OrcaRouter は `orcarouter/auto` でルーティングされます。保存された役割は `provider`・`model`・推論ティアを明示的に記録するので、ひとつの実行の中で Fleet が複数のベンダーにまたがることができ、役割のルートはそのとき有効なプロバイダに左右されません。コンテキスト予算と価格は実際のルートに由来し、不明な価格は $0 ではなく不明と表示されます。
- **あなたが書くハーネス。** 役割は読んで編集できるファイルです。役割ごとにモデル、ツールの姿勢、常設の指示を持ち、チームで共有するならプロジェクトに、リポジトリをまたいで持ち歩くなら個人設定の隣に置きます。constitution はすべてのセッションを通じてエージェントにどう振る舞ってほしいかを記録し、ハーネスを私たちのやり方ではなくあなたのやり方に合わせます。
- **許可するまでは読み取り専用。** Plan モードはファイルを変更せず、リスクのあるコマンドは承認でゲートされます。OS サンドボックスが実際にコマンドをラップするとき、Codewhale はそれを明示します。macOS では利用可能な Seatbelt、Linux ではオプトインの bubblewrap です。リポジトリの `constitution.json` は書き込みホールドへとコンパイルされ、Full Access でもスキップできません。
- **再開できる作業。** Fleet はすべてのステップを追記専用の台帳に記録するので、`fleet resume` で止めたところから再開できます。
Expand Down
4 changes: 2 additions & 2 deletions README.ko-KR.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- source: README.md sha256:4fb18fffb0fe -->
<!-- source: README.md sha256:3a759de92f8b -->
# Codewhale

터미널에서 쓰는 오픈소스 코딩 에이전트 — 모델은 당신이 가져옵니다.
Expand Down Expand Up @@ -42,7 +42,7 @@ TUI 안에서: `/model`은 프로바이더와 모델을 함께 전환하고, `/f

## 기능

- **어떤 모델이든, 어떤 프로바이더든, 그리고 어떤 조합이든.** DeepSeek, Claude, GPT, Kimi, GLM 등 30개 이상의 프로바이더와 키 없이 쓰는 자체 vLLM, SGLang, Ollama가 모두 하나의 런타임과 하나의 도구 세트를 통해 동작합니다. 저장된 역할은 `provider`, `model`, 추론 등급을 명시적으로 기록하므로 하나의 실행 안에서 Fleet이 여러 벤더에 걸칠 수 있고, 역할의 라우트는 그때 활성화된 프로바이더에 좌우되지 않습니다. 컨텍스트 예산과 가격은 실제 라우트에서 가져오며, 알 수 없는 가격은 $0이 아니라 알 수 없음으로 표시됩니다.
- **어떤 모델이든, 어떤 프로바이더든, 그리고 어떤 조합이든.** DeepSeek, Claude, GPT, Kimi, GLM 등 30개 이상의 프로바이더와 키 없이 쓰는 자체 vLLM, SGLang, Ollama가 모두 하나의 런타임과 하나의 도구 세트를 통해 동작합니다. 카탈로그는 각 프로바이더의 최신 라인업을 추적합니다 — DeepSeek의 V4 Pro 백엔드(`DeepSeek-V4-Pro-0813` 라벨)는 계속 `deepseek-v4-pro`로 호출할 수 있고, Grok 4.6은 xAI의 기본값이며, OrcaRouter는 `orcarouter/auto`로 라우팅됩니다. 저장된 역할은 `provider`, `model`, 추론 등급을 명시적으로 기록하므로 하나의 실행 안에서 Fleet이 여러 벤더에 걸칠 수 있고, 역할의 라우트는 그때 활성화된 프로바이더에 좌우되지 않습니다. 컨텍스트 예산과 가격은 실제 라우트에서 가져오며, 알 수 없는 가격은 $0이 아니라 알 수 없음으로 표시됩니다.
- **당신이 직접 쓰는 하네스.** 역할은 읽고 수정할 수 있는 파일입니다. 역할마다 모델, 도구 태세, 상시 지시를 담아 팀과 공유하려면 프로젝트에, 저장소를 옮겨 다니며 쓰려면 개인 설정 옆에 둡니다. constitution은 모든 세션에서 에이전트가 어떻게 행동하기를 바라는지 기록해, 하네스가 우리 방식이 아니라 당신의 방식에 맞도록 합니다.
- **허용하기 전까지는 읽기 전용.** Plan 모드는 파일을 바꾸지 않고, 위험한 명령은 승인을 거칩니다. OS 샌드박스가 실제로 명령을 래핑할 때 Codewhale은 이를 그대로 표시합니다. macOS에서는 사용 가능한 Seatbelt, Linux에서는 옵트인 bubblewrap입니다. 저장소의 `constitution.json`은 Full Access조차 건너뛸 수 없는 쓰기 홀드로 컴파일됩니다.
- **이어서 할 수 있는 작업.** Fleet은 모든 단계를 추가 전용 원장에 기록하므로, `fleet resume`으로 멈춘 지점부터 이어갈 수 있습니다.
Expand Down
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,14 @@ shell command through the normal approval path.

- **Any model, any provider — and any mix of them.** DeepSeek, Claude, GPT,
Kimi, GLM, and 30+ providers, plus your own vLLM, SGLang, or Ollama with no
key, all through one runtime and one toolset. A saved role records its
`provider`, `model`, and reasoning tier explicitly, so a fleet can span
vendors in a single run and a role's route never depends on whichever
provider happens to be active. Context limits and prices come from the real
route, and an unknown price shows as unknown rather than $0.
key, all through one runtime and one toolset. The catalog tracks each
provider's live lineup — DeepSeek's V4 Pro backend (labeled
`DeepSeek-V4-Pro-0813`) stays callable as `deepseek-v4-pro`, Grok 4.6 is the
direct xAI default, and OrcaRouter routes through `orcarouter/auto`. A saved
role records its `provider`, `model`, and reasoning tier explicitly, so a
fleet can span vendors in a single run and a role's route never depends on
whichever provider happens to be active. Context limits and prices come from
the real route, and an unknown price shows as unknown rather than $0.
- **A harness you author.** Roles are files you can read and edit — a model, a
tool posture, and standing instructions per role — kept in the project so the
team shares them, or beside your other personal settings so they follow you
Expand Down
4 changes: 2 additions & 2 deletions README.pt-BR.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- source: README.md sha256:4fb18fffb0fe -->
<!-- source: README.md sha256:3a759de92f8b -->
# Codewhale

Um agente de programação de código aberto para o seu terminal — traga o seu próprio modelo.
Expand Down Expand Up @@ -68,7 +68,7 @@ executa um comando de shell pelo caminho normal de aprovação.

- **Qualquer modelo, qualquer provedor.** DeepSeek, Claude, GPT, Kimi, GLM e
mais de 30 provedores, além do seu próprio vLLM, SGLang ou Ollama sem key —
tudo por um único runtime e um único conjunto de ferramentas. Orçamentos de
tudo por um único runtime e um único conjunto de ferramentas. O catálogo acompanha a linha atual de cada provedor — o backend V4 Pro da DeepSeek (rotulado `DeepSeek-V4-Pro-0813`) continua chamável como `deepseek-v4-pro`, Grok 4.6 é o padrão direto da xAI e o OrcaRouter roteia por `orcarouter/auto`. Orçamentos de
contexto e preços vêm da rota real, e um preço desconhecido aparece como
desconhecido em vez de $0.
- **Um harness escrito por você.** Papéis são arquivos que você pode ler e
Expand Down
Loading
Loading