Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
c863634
feat: read global AGENTS.md from ~/.agents/ as vendor-neutral fallback
mvanhorn May 27, 2026
f2b0292
fix: remove WHALE.md from vendor-neutral ~/.agents/ directory
Hmbown May 27, 2026
a448a8a
feat(v0.8.47): closed-loop verification, all-tools-loaded, response_f…
Hmbown May 27, 2026
96be850
Merge branch 'fix/2156-codewhale-global-agents-md-fallback' into inte…
Hmbown May 27, 2026
690acec
chore: bump version to 0.8.47
Hmbown May 27, 2026
dcc5bdb
chore: merge PRs #1937, #2237, #1852, #1910 for v0.8.47
Hmbown May 27, 2026
623d56c
feat: add Xiaomi MiMo provider support (PR #2240)
Hmbown May 27, 2026
969931a
fix: remove DEEPSEEK.md from project context files
Hmbown May 27, 2026
793db1f
Merge PR #2241: fix(provider): keep picker selection visible
Hmbown May 27, 2026
e8ee93d
chore(release): prepare v0.8.47 — CHANGELOG, READMEs, contributors
Hmbown May 27, 2026
76b4c05
Merge remote-tracking branch 'origin/main' into integration/v0.8.47-u…
Hmbown May 27, 2026
f266be5
chore(release): finalize v0.8.47 — PR #2235 merge, README polish
Hmbown May 27, 2026
1cc8460
fix: MiMo model reset, remove cache-savings display, CHANGELOG symlink
Hmbown May 27, 2026
a3a8723
feat(verify): auto-retry on verification failure
Hmbown May 27, 2026
64f97bd
feat(verify): fuzzy edit_file search correction (Option A)
Hmbown May 27, 2026
503b82b
feat(verify): Fin Flash inner-loop for edit_file correction (Option B)
Hmbown May 27, 2026
7074399
chore(release): finalize v0.8.47 — clippy fixes, npm bumps, contribut…
Hmbown May 27, 2026
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
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@
# NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1
# NVIDIA_NIM_MODEL=deepseek-ai/deepseek-v4-pro

# Xiaomi MiMo Token Plan (https://platform.xiaomimimo.com/docs/zh-CN/price/tokenplan/quick-access)
# DEEPSEEK_PROVIDER=xiaomi
# MIMO_API_KEY=tp-YOUR_TOKEN_PLAN_KEY # Token Plan key format: tp-xxxxx
# MIMO_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1 # cn / sgp / ams cluster
# MIMO_MODEL=mimo-v2.5-pro # mimo-v2.5-pro | mimo-v2.5

# Logging
# `DEEPSEEK_LOG_LEVEL` is forwarded by the facade; `RUST_LOG` enables the
# TUI's lightweight verbose logs for info/debug/trace directives.
Expand Down
72 changes: 69 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [0.8.47] - 2026-05-26

### Added

- **Closed-loop verification gate.** After every side-effect tool call
(write, edit, apply_patch, exec_shell), the engine re-checks the claim.
Results annotated with `[VERIFY PASS]` or `[VERIFY FAIL]` enter the
session verification ledger. Enabled by default; configurable via
`[verification]` in `config.toml`.
- **All native tools loaded upfront.** Removed deferred loading policy.
Every tool is visible from turn one instead of requiring `tool_search`
discovery. 80+ tools in catalog with ~1% context overhead.
- **`response_format` field on MessageRequest.** Supports DeepSeek JSON
Output mode for structured responses when needed.
- **Runtime goal tools.** `create_goal`, `get_goal`, and `update_goal`
provide bounded continuation gates with objective tracking, token
budgets, and LLM-as-judge completion verification (#2199).
- **Session failure classifier.** A redacted synthetic classifier
diagnoses session failures for faster triage (#2022).
- **DuckDuckGo as default web search backend.** Switched from Bing to
DuckDuckGo as the default search provider (#2132).
- **Composer text selection with copy/cut.** Mouse drag and Shift+Arrow
selection in the composer input box, with Ctrl+C copy and Ctrl+X cut
support. Home, End, Ctrl+A, and Ctrl+E now clear the selection (#2228).
Expand All @@ -22,28 +39,68 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
both npm install scripts and Rust self-updater (#2222).
- **[✓] completion markers.** Checklist, plan, and tool completion
markers now render as `[✓]` instead of `[x]` (#1935).
- **Xiaomi MiMo provider support.** MiMo is now a first-class provider
with API-key auth and secret-store integration (#2240).
- **Global AGENTS.md fallback.** CodeWhale now reads `~/.agents/AGENTS.md`
as a vendor-neutral project instructions fallback (#2156).
- **DeepSeek V4 Pro pricing permanent.** The 75% discount is now
permanent, reflected in the pricing model (#1937).
- **`/new` session command.** `/new [--force]` starts a fresh saved session
from inside the TUI, distinct from `/clear`. Respects active work
blockers; `--force` discards unsaved input (#2235).
- **Docker toolbox contract docs.** Added custom-image contract,
examples, and toolbox documentation (#2217).

### Changed

- **Constitution: 'begin with an A' clarified.** Article I now frames
this as a grade metaphor — the A+ is awarded in advance, and the duty
is to be worthy of a grade already given.
- **Article V updated with structural verification note.** The
verification gate is now a structural part of the Constitution.
- **Project context loading now logs the source file.** (#2227)
- **macOS onboarding and empty-state layout pinned to top** instead
of vertically centered (#1837).
- **State-root migration continues.** Migrated 15+ storage paths to
prefer `~/.codewhale` with `~/.deepseek` fallback (#2231).
- **READMEs updated for the CodeWhale rename.** All three READMEs now
reference canonical `~/.codewhale` paths.
- **Reasoning content stays English regardless of locale.** Hidden
`reasoning_content` blocks now respect the English-only policy
regardless of the UI locale setting (#1842/#1843).

### Fixed

- **Deadlock when spawning multiple concurrent sub-agents.** Replaced
`RwLock`-based serialisation with a `Semaphore(1)` (#1856).
- **Provider picker scroll visibility.** The `/provider` modal now
sizes dynamically, scrolls to keep the selected row visible, and
wraps Up/Down navigation between first and last providers (#2241).
- **Auto model state restored on session load.** The auto model
selection survives session save/restore cycles (#1797).
- **Cache-inspect prefix hashing includes tool catalog.** Fixes
prefix-cache misses when tools change between turns (#1818).
- **Insecure HTTP guard for LAN providers.** Added
`DEEPSEEK_ALLOW_INSECURE_HTTP` env var for local vLLM endpoints
on `http://` (#1656).
- **Large tool outputs compacted to artifact receipts on persist.**
Prevents session bloat from large stdout/stderr payloads (#2021).
- **Steered/queued messages now render in correct transcript order.**
`steer_user_message` now flushes the active cell before inserting (#2225).
- **Session save test updated for managed sessions directory.** (#2223).
- **Loop guard reports Failed on halt.** Turn outcome correctly reports
`Failed` instead of `Completed` when the loop guard trips (#1859).
- **DEEPSEEK_YOLO env honoured on startup.** The `--yolo` flag is now
correctly merged with the `DEEPSEEK_YOLO` environment variable (#1870).
- **Clippy warnings resolved.** (#2237).
- **Windows alt-screen logging suppressed.** Verbose CLI logging no
longer leaks into the TUI on Windows alt-screen (#1910).
- **PDF and OCR reads no longer block the async runtime.** `read_file`
on PDF and image files now runs extraction inside `spawn_blocking`,
preventing the tokio worker pool from stalling on large documents.
- **Sidebar hover tooltip contrast fixed.** Tooltip foreground changed
from pale gray (`TEXT_MUTED`) to deep navy (`DEEPSEEK_INK`) for
readable contrast against the amber warning background.

### Community

Expand All @@ -55,7 +112,15 @@ Thanks to contributors whose PRs landed in this release:
**@IIzzaya** (#1935),
**@PurplePulse** (#1837),
**@cyq1017** (#1967),
**@knqiufan** (#1906).
**@knqiufan** (#1906),
**@Colorful-glassblock** (#1937),
**@hongqitai** (#2237),
**@EmiyaKiritsugu3** (#1852),
**@aboimpinto** (#1910),
**@HUQIANTAO** (#2240),
**@mvanhorn** (#2156),
**@LING71671** (#1797),
and **@reidliu41** (#2241, #2235).

## [0.8.46] - 2026-05-26

Expand Down Expand Up @@ -5018,7 +5083,8 @@ Welcome — and thank you.
- Hooks system and config profiles
- Example skills and launch assets

[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.46...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.47...HEAD
[0.8.47]: https://github.com/Hmbown/CodeWhale/compare/v0.8.46...v0.8.47
[0.8.46]: https://github.com/Hmbown/CodeWhale/compare/v0.8.45...v0.8.46
[0.8.45]: https://github.com/Hmbown/CodeWhale/compare/v0.8.44...v0.8.45
[0.8.44]: https://github.com/Hmbown/CodeWhale/compare/v0.8.43...v0.8.44
Expand Down
28 changes: 14 additions & 14 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 @@ -19,7 +19,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
resolver = "2"

[workspace.package]
version = "0.8.46"
version = "0.8.47"
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
13 changes: 13 additions & 0 deletions README.ja-JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,19 @@ description: DeepSeek にカスタムワークフローを実行させたいと
- **Hafeez Pizofreude** — `fetch_url` の SSRF 保護と Star History チャート
- **Unic (YuniqueUnic)** — スキーマ駆動の設定 UI(TUI + Web)
- **Jason** — SSRF セキュリティの強化
- **[Fire-dtx](https://github.com/Fire-dtx)** — 並行サブエージェントのデッドロック修正 (#1856)
- **[imkingjh999](https://github.com/imkingjh999)** — コンポーザーのテキスト選択とコピー/カット (#2228)
- **[harvey2011888](https://github.com/harvey2011888)** — ループガード停止結果の修正 (#1859)
- **[victorcheng2333](https://github.com/victorcheng2333)** — DEEPSEEK_YOLO 環境変数マージ修正 (#1870)
- **[IIzzaya](https://github.com/IIzzaya)** — [✓] 完了マーカー (#1935)
- **[PurplePulse](https://github.com/PurplePulse)** — macOS オンボーディングレイアウト修正 (#1837)
- **[cyq1017](https://github.com/cyq1017)** — /config ビューでのベース URL 表示 (#1967)
- **[knqiufan](https://github.com/knqiufan)** — 文字折り返しなしのトランスクリプトコピー (#1906)
- **[Colorful-glassblock](https://github.com/Colorful-glassblock)** — DeepSeek V4 Pro 価格の恒久化 (#1937)
- **[hongqitai](https://github.com/hongqitai)** — Clippy 警告の修正 (#2237)
- **[EmiyaKiritsugu3](https://github.com/EmiyaKiritsugu3)** — DEEPSEEK.md プロジェクトコンテキスト (#1852)
- **[HUQIANTAO](https://github.com/HUQIANTAO)** — Xiaomi MiMo プロバイダーサポート (#2240)
- **[mvanhorn](https://github.com/mvanhorn)** — グローバル AGENTS.md ベンダーニュートラルフォールバック (#2156)

---

Expand Down
28 changes: 25 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ evidence, never declare success on faith), a coordination legacy (Article
VI — leave the workspace legible for the next intelligence), and a
primacy-of-truth clause (Article II — no lower rule may override it).

Article V is now structural. A closed-loop verification gate runs after every
side-effect tool call — write, edit, patch, shell — and re-checks the claim
before the result enters the session stream. Results carry `[VERIFY PASS]` or
`[VERIFY FAIL]` annotations. No more taking the model's word for it.

DeepSeek V4's prefix caching makes this practical. The Constitution is long
and detailed, but once cached it costs roughly 100× less per turn than a
cold read. The model references it recursively — peeking, scanning, and
Expand Down Expand Up @@ -331,6 +336,10 @@ VLLM_BASE_URL="http://localhost:8000/v1" codewhale --provider vllm --model deeps
# Trusted LAN vLLM over HTTP
DEEPSEEK_ALLOW_INSECURE_HTTP=1 VLLM_BASE_URL="http://192.168.0.110:8000/v1" codewhale --provider vllm --model deepseek-v4-flash

# Xiaomi MiMo
codewhale auth set --provider xiaomi --api-key "YOUR_MIMO_API_KEY"
codewhale --provider xiaomi --model deepseek-v4-pro

# Self-hosted Ollama
ollama pull codewhale-coder:1.3b
codewhale --provider ollama --model codewhale-coder:1.3b
Expand Down Expand Up @@ -477,7 +486,7 @@ Key environment variables:
| `DEEPSEEK_HTTP_HEADERS` | Optional custom model request headers, e.g. `X-Model-Provider-Id=your-model-provider` |
| `DEEPSEEK_MODEL` | Default model |
| `DEEPSEEK_STREAM_IDLE_TIMEOUT_SECS` | Stream idle timeout in seconds, default `300`, clamped to `1..=3600` |
| `CODEWHALE_PROVIDER` / `DEEPSEEK_PROVIDER` | `deepseek` (default), `nvidia-nim`, `openai`, `atlascloud`, `wanjie-ark`, `openrouter`, `novita`, `fireworks`, `moonshot`, `sglang`, `vllm`, `ollama` |
| `CODEWHALE_PROVIDER` / `DEEPSEEK_PROVIDER` | `deepseek` (default), `nvidia-nim`, `openai`, `atlascloud`, `wanjie-ark`, `openrouter`, `novita`, `fireworks`, `moonshot`, `xiaomi`, `sglang`, `vllm`, `ollama` |
| `DEEPSEEK_PROFILE` | Config profile name |
| `DEEPSEEK_MEMORY` | Set to `on` to enable user memory |
| `DEEPSEEK_ALLOW_INSECURE_HTTP=1` | Allow non-local `http://` API base URLs on trusted networks |
Expand Down Expand Up @@ -600,7 +609,7 @@ This project ships with help from a growing community of contributors:
- **[zichen0116](https://github.com/zichen0116)** — CODE_OF_CONDUCT.md (#686)
- **[dfwqdyl-ui](https://github.com/dfwqdyl-ui)** — model ID case-sensitivity compatibility report (#729)
- **[Oliver-ZPLiu](https://github.com/Oliver-ZPLiu)** — stale `working...` state bug report, Windows clipboard fallback, MCP Streamable HTTP session fixes, and Homebrew tap automation (#738, #850, #1643, #1631)
- **[reidliu41](https://github.com/reidliu41)** — resume hint, workspace trust persistence, Ollama provider support, thinking-block stream finalization, CI cache hardening, streaming wrap, and DeepSeek model completions (#863, #870, #921, #1078, #1603, #1628, #1601)
- **[reidliu41](https://github.com/reidliu41)** — resume hint, workspace trust persistence, Ollama provider support, thinking-block stream finalization, CI cache hardening, streaming wrap, DeepSeek model completions, approval flow simplification, model picker Esc fix, user message highlighting, provider picker scroll, and `/new` session command (#863, #870, #921, #1078, #1603, #1628, #1601, #2143, #2056, #1995, #2241, #2235)
- **[xieshutao](https://github.com/xieshutao)** — plain Markdown skill fallback (#869)
- **[GK012](https://github.com/GK012)** — npm wrapper `--version` fallback (#885)
- **[y0sif](https://github.com/y0sif)** — parent turn-loop wakeup after direct child sub-agent completion (#901)
Expand Down Expand Up @@ -633,7 +642,7 @@ This project ships with help from a growing community of contributors:
- **[Aitensa](https://github.com/Aitensa)** — CJK wrapping propagation for diff and pager output (#1622)
- **[qiyan233](https://github.com/qiyan233)** — legacy DeepSeek CN provider alias compatibility (#1645)
- **[zlh124](https://github.com/zlh124)** — WSL2/headless startup report and clipboard-init fix (#1772, #1773)
- **[aboimpinto](https://github.com/aboimpinto)** — Windows alt-screen logging, Home/End composer, and runtime log follow-ups (#1774, #1776, #1748, #1749, #1782, #1783)
- **[aboimpinto](https://github.com/aboimpinto)** — Windows alt-screen logging, Home/End composer, runtime log follow-ups, taskbar progress, animated title spinner, and configurable completion sound (#1774, #1776, #1748, #1749, #1782, #1783, #1871, #1910)
- **[LeoLin990405](https://github.com/LeoLin990405)** — provider model passthrough, reasoning replay, thinking-only turn, and Windows quoting fixes (#1740, #1743, #1742, #1744)
- **[nightt5879](https://github.com/nightt5879)** — Ctrl+C prompt restore fix (#1764)
- **[donglovejava](https://github.com/donglovejava)** — paste @file consolidation, CJK panic fix, user feedback, RLM routing, edit_file retry (#2154–#2168)
Expand All @@ -646,6 +655,19 @@ This project ships with help from a growing community of contributors:
- **[mrluanma](https://github.com/mrluanma)** — Metaso search provider (#2059)
- **[Lellansin](https://github.com/Lellansin)** — skip config merge at home dir (#2055)
- **[zhuangbiaowei](https://github.com/zhuangbiaowei)** — update release channels (#2145)
- **[Fire-dtx](https://github.com/Fire-dtx)** — deadlock fix for concurrent sub-agents (#1856)
- **[imkingjh999](https://github.com/imkingjh999)** — composer text selection with copy/cut (#2228)
- **[harvey2011888](https://github.com/harvey2011888)** — loop guard halt outcome fix (#1859)
- **[victorcheng2333](https://github.com/victorcheng2333)** — DEEPSEEK_YOLO env merge fix (#1870)
- **[IIzzaya](https://github.com/IIzzaya)** — [✓] completion markers (#1935)
- **[PurplePulse](https://github.com/PurplePulse)** — macOS onboarding layout pinning (#1837)
- **[cyq1017](https://github.com/cyq1017)** — configurable base URL in /config view (#1967)
- **[knqiufan](https://github.com/knqiufan)** — copy transcript without visual-wrap newlines (#1906)
- **[Colorful-glassblock](https://github.com/Colorful-glassblock)** — DeepSeek V4 Pro pricing permanent (#1937)
- **[hongqitai](https://github.com/hongqitai)** — clippy warnings fix (#2237)
- **[EmiyaKiritsugu3](https://github.com/EmiyaKiritsugu3)** — DEEPSEEK.md project context (#1852)
- **[HUQIANTAO](https://github.com/HUQIANTAO)** — Xiaomi MiMo provider support (#2240)
- **[mvanhorn](https://github.com/mvanhorn)** — global AGENTS.md vendor-neutral fallback (#2156)

---

Expand Down
Loading
Loading