release: v0.8.58 — native Anthropic provider, hooks v2 JSON decisions, clickable sidebar, provider-aware subagent routing, model-fact prompt templating

Co-Authored-By: Claude <noreply@anthropic.com>
https://claude.ai/code/session_018zaP8vUfTAsrE38L6h6fw5
This commit is contained in:
Claude
2026-06-11 06:04:32 +00:00
committed by Hunter Bown
parent ce39b111cd
commit 0181493c79
19 changed files with 219 additions and 135 deletions
+78 -1
View File
@@ -7,6 +7,82 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.8.58] - 2026-06-11
### Added
- **Native Anthropic provider.** A dedicated Messages API adapter
(`/v1/messages` with `x-api-key` auth) replaces OpenAI-dialect shims for
Claude models: adaptive thinking with `output_config.effort` shaping,
prompt-cache breakpoints (capped at 4, earliest dropped), signed-thinking
replay via `signature_delta`, normalized cache-hit/miss usage telemetry,
and SSE error envelopes. `claude-opus-4-8`, `claude-sonnet-4-6`, and
`claude-haiku-4-5` join the model registry; configure with
`ANTHROPIC_API_KEY` (#3014).
- **Hooks v2.** `tool_call_before` hooks can now return a JSON decision —
`{"decision": "allow"|"deny"|"ask", "reason", "updatedInput",
"additionalContext"}` — with deny > ask > allow precedence across multiple
hooks, last-writer-wins input rewriting, and concatenated context. Exit
code 2 remains a legacy hard deny. Hooks support glob matchers and
project-local `.codewhale/hooks.toml` (#3026).
- **Clickable sidebar.** Background-job rows show/cancel on click, the
Ctrl+K hint row runs `/jobs cancel-all`, and agent rows open `/subagents`;
row actions are built in the same pass as the rendered lines so a click
can never target the wrong job (#3028).
- OSC 8 out-of-band hyperlink infrastructure with per-region open/close
sequences that survive partial redraws (#3029).
- `codewhale exec` gains `--allowed-tools`, `--disallowed-tools` (deny wins),
`--max-turns`, and `--append-system-prompt` (#3027).
- Constitution prompt source: YAML source-of-truth plus Python renderer for
the system prompt, with the active prompt now served from
`constitution.md` (#3015, renderer reconciliation still tracked).
- Agent-task issue template, labels, and runner protocol (#3021); remote
smoke-test droplet loop hardening — gh CLI, swapfile, agent sessions
(#3022).
### Changed
- **Sub-agent routing is provider-aware.** DeepSeek ids are no longer
hardcoded into model validation; routing works from per-provider
big/cheap candidates, the network router is skipped when a provider has
no cheap tier, and spawn-time model requests are validated against the
active provider (#3018).
- Model-specific facts in the system prompt (context window, sub-agent
pricing, thinking notes, architecture characteristics) are now templated
per-model instead of hardcoded DeepSeek V4 claims, in both `base.md` and
`constitution.md` (#3025).
- Provider capability lookups for Moonshot/OpenAI/Atlascloud resolve from
per-model registry rows (bare and vendor-prefixed ids) instead of
hardcoded 64K-era floors (#3023).
- Reasoning-effort now reaches Atlascloud (DeepSeek dialect), Moonshot
(`thinking` enable/disable), and Ollama (`think` param) (#3024); Moonshot/
Kimi models joined the reasoning-content provider and model gates (#3016).
- Transcript polish: compact tool-call cells without boilerplate (#3031),
internal turn/agent ids hidden behind stable labels (#3030), and Ctrl+B
now backgrounds the running foreground shell directly instead of opening
a menu (#3032).
- The Tasks sidebar separates "Model reasoning" from "Background commands",
and `auth list` reports the same active-credential source as
`auth status` for openai-codex.
### Fixed
- **TUI freeze under sub-agent load.** Rapid `AgentProgress` events
saturated the render loop and starved terminal input; progress-driven
repaints are now throttled to one per 100ms (#3033).
- **Hooks on Windows.** Hook commands were passed to `cmd /C` through
CRT-style argument quoting, which injected literal `\"` sequences that
cmd.exe never unescapes — JSON decisions could not parse. Commands now
reach cmd.exe verbatim via `raw_arg`.
- Codex Responses: assistant tool results are converted to
`function_call_output` items (multi-turn tool calling previously broke),
tool schemas are sanitized for the Responses API, and `maximum` effort
maps to `xhigh` (#3019, #3017 — both partially; retry/backoff and
per-tool strict mode remain open).
- Better tool-denial and provider error messages harvested from PR #2933
(#3020).
## [0.8.57] - 2026-06-10
### Added
@@ -1636,7 +1712,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.8.57...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.58...HEAD
[0.8.58]: https://github.com/Hmbown/CodeWhale/compare/v0.8.57...v0.8.58
[0.8.57]: https://github.com/Hmbown/CodeWhale/compare/v0.8.56...v0.8.57
[0.8.56]: https://github.com/Hmbown/CodeWhale/compare/v0.8.55...v0.8.56
[0.8.55]: https://github.com/Hmbown/CodeWhale/compare/v0.8.54...v0.8.55
Generated
+16 -16
View File
@@ -771,7 +771,7 @@ checksum = "e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21"
[[package]]
name = "codewhale-agent"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"codewhale-config",
"serde",
@@ -779,7 +779,7 @@ dependencies = [
[[package]]
name = "codewhale-app-server"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"axum",
@@ -806,7 +806,7 @@ dependencies = [
[[package]]
name = "codewhale-cli"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"chrono",
@@ -834,7 +834,7 @@ dependencies = [
[[package]]
name = "codewhale-config"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"codewhale-execpolicy",
@@ -848,7 +848,7 @@ dependencies = [
[[package]]
name = "codewhale-core"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"chrono",
@@ -867,7 +867,7 @@ dependencies = [
[[package]]
name = "codewhale-execpolicy"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"codewhale-protocol",
@@ -876,7 +876,7 @@ dependencies = [
[[package]]
name = "codewhale-hooks"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"async-trait",
@@ -890,7 +890,7 @@ dependencies = [
[[package]]
name = "codewhale-mcp"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"serde",
@@ -899,7 +899,7 @@ dependencies = [
[[package]]
name = "codewhale-protocol"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"serde",
"serde_json",
@@ -907,7 +907,7 @@ dependencies = [
[[package]]
name = "codewhale-release"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"reqwest",
@@ -918,7 +918,7 @@ dependencies = [
[[package]]
name = "codewhale-secrets"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"dirs",
"keyring",
@@ -931,7 +931,7 @@ dependencies = [
[[package]]
name = "codewhale-state"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"chrono",
@@ -943,7 +943,7 @@ dependencies = [
[[package]]
name = "codewhale-tools"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"async-trait",
@@ -957,7 +957,7 @@ dependencies = [
[[package]]
name = "codewhale-tui"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"arboard",
@@ -1027,11 +1027,11 @@ dependencies = [
[[package]]
name = "codewhale-tui-core"
version = "0.8.57"
version = "0.8.58"
[[package]]
name = "codewhale-whaleflow"
version = "0.8.57"
version = "0.8.58"
dependencies = [
"anyhow",
"serde",
+1 -1
View File
@@ -21,7 +21,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
resolver = "2"
[workspace.package]
version = "0.8.57"
version = "0.8.58"
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
+2 -2
View File
@@ -43,8 +43,8 @@ codewhale --model auto
# https://github.com/Hmbown/CodeWhale/releases
# GitHub に安定して到達できない場合は CNB mirror を使えます:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
# 旧 Homebrew 互換。formula はまだ deepseek-tui 名を使います。
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -77,8 +77,8 @@ Other install paths are supported:
# https://github.com/Hmbown/CodeWhale/releases
# CNB mirror path for users who cannot reliably reach GitHub:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
# Legacy Homebrew compatibility while the formula is renamed
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ Các đường khác:
# https://github.com/Hmbown/CodeWhale/releases
# Nếu GitHub không ổn định, dùng CNB mirror:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
# Homebrew legacy trong lúc formula vẫn dùng tên deepseek-tui
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ codewhale --model auto
# https://github.com/Hmbown/CodeWhale/releases
# 如果 GitHub 访问不稳定,可以使用 CNB 镜像:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.57 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
# 旧 Homebrew 兼容路径,formula 仍使用 deepseek-tui 名称
brew tap Hmbown/deepseek-tui
+1 -1
View File
@@ -7,5 +7,5 @@ repository.workspace = true
description = "Model/provider registry and fallback strategy for DeepSeek workspace architecture"
[dependencies]
codewhale-config = { path = "../config", version = "0.8.57" }
codewhale-config = { path = "../config", version = "0.8.58" }
serde.workspace = true
+9 -9
View File
@@ -10,15 +10,15 @@ description = "Codex-style app-server transport for DeepSeek workspace architect
anyhow.workspace = true
axum.workspace = true
clap.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.57" }
codewhale-config = { path = "../config", version = "0.8.57" }
codewhale-core = { path = "../core", version = "0.8.57" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.57" }
codewhale-hooks = { path = "../hooks", version = "0.8.57" }
codewhale-mcp = { path = "../mcp", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-state = { path = "../state", version = "0.8.57" }
codewhale-tools = { path = "../tools", version = "0.8.57" }
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-core = { path = "../core", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-hooks = { path = "../hooks", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
serde.workspace = true
serde_json.workspace = true
rustls.workspace = true
+8 -8
View File
@@ -19,14 +19,14 @@ path = "src/bin/codew_legacy_shim.rs"
anyhow.workspace = true
clap.workspace = true
clap_complete.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.57" }
codewhale-app-server = { path = "../app-server", version = "0.8.57" }
codewhale-config = { path = "../config", version = "0.8.57" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.57" }
codewhale-mcp = { path = "../mcp", version = "0.8.57" }
codewhale-release = { path = "../release", version = "0.8.57" }
codewhale-secrets = { path = "../secrets", version = "0.8.57" }
codewhale-state = { path = "../state", version = "0.8.57" }
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-app-server = { path = "../app-server", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-release = { path = "../release", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
chrono.workspace = true
dirs.workspace = true
serde.workspace = true
+2 -2
View File
@@ -8,8 +8,8 @@ description = "Config schema and precedence model for DeepSeek workspace archite
[dependencies]
anyhow.workspace = true
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.57" }
codewhale-secrets = { path = "../secrets", version = "0.8.57" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
dirs.workspace = true
serde.workspace = true
serde_json.workspace = true
+8 -8
View File
@@ -9,14 +9,14 @@ description = "Core runtime boundaries for DeepSeek workspace architecture"
[dependencies]
anyhow.workspace = true
chrono.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.57" }
codewhale-config = { path = "../config", version = "0.8.57" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.57" }
codewhale-hooks = { path = "../hooks", version = "0.8.57" }
codewhale-mcp = { path = "../mcp", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-state = { path = "../state", version = "0.8.57" }
codewhale-tools = { path = "../tools", version = "0.8.57" }
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-hooks = { path = "../hooks", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
serde_json.workspace = true
tracing.workspace = true
uuid.workspace = true
+1 -1
View File
@@ -8,5 +8,5 @@ description = "Execution policy and approval model parity for DeepSeek workspace
[dependencies]
anyhow.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
serde.workspace = true
+1 -1
View File
@@ -10,7 +10,7 @@ description = "Hook dispatch and notifications parity for DeepSeek workspace arc
anyhow.workspace = true
async-trait.workspace = true
chrono.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
reqwest.workspace = true
serde.workspace = true
serde_json.workspace = true
+1 -1
View File
@@ -9,7 +9,7 @@ description = "Tool invocation lifecycle, schema validation, and scheduler paral
[dependencies]
anyhow.workspace = true
async-trait.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
+76 -69
View File
@@ -7,6 +7,82 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.8.58] - 2026-06-11
### Added
- **Native Anthropic provider.** A dedicated Messages API adapter
(`/v1/messages` with `x-api-key` auth) replaces OpenAI-dialect shims for
Claude models: adaptive thinking with `output_config.effort` shaping,
prompt-cache breakpoints (capped at 4, earliest dropped), signed-thinking
replay via `signature_delta`, normalized cache-hit/miss usage telemetry,
and SSE error envelopes. `claude-opus-4-8`, `claude-sonnet-4-6`, and
`claude-haiku-4-5` join the model registry; configure with
`ANTHROPIC_API_KEY` (#3014).
- **Hooks v2.** `tool_call_before` hooks can now return a JSON decision —
`{"decision": "allow"|"deny"|"ask", "reason", "updatedInput",
"additionalContext"}` — with deny > ask > allow precedence across multiple
hooks, last-writer-wins input rewriting, and concatenated context. Exit
code 2 remains a legacy hard deny. Hooks support glob matchers and
project-local `.codewhale/hooks.toml` (#3026).
- **Clickable sidebar.** Background-job rows show/cancel on click, the
Ctrl+K hint row runs `/jobs cancel-all`, and agent rows open `/subagents`;
row actions are built in the same pass as the rendered lines so a click
can never target the wrong job (#3028).
- OSC 8 out-of-band hyperlink infrastructure with per-region open/close
sequences that survive partial redraws (#3029).
- `codewhale exec` gains `--allowed-tools`, `--disallowed-tools` (deny wins),
`--max-turns`, and `--append-system-prompt` (#3027).
- Constitution prompt source: YAML source-of-truth plus Python renderer for
the system prompt, with the active prompt now served from
`constitution.md` (#3015, renderer reconciliation still tracked).
- Agent-task issue template, labels, and runner protocol (#3021); remote
smoke-test droplet loop hardening — gh CLI, swapfile, agent sessions
(#3022).
### Changed
- **Sub-agent routing is provider-aware.** DeepSeek ids are no longer
hardcoded into model validation; routing works from per-provider
big/cheap candidates, the network router is skipped when a provider has
no cheap tier, and spawn-time model requests are validated against the
active provider (#3018).
- Model-specific facts in the system prompt (context window, sub-agent
pricing, thinking notes, architecture characteristics) are now templated
per-model instead of hardcoded DeepSeek V4 claims, in both `base.md` and
`constitution.md` (#3025).
- Provider capability lookups for Moonshot/OpenAI/Atlascloud resolve from
per-model registry rows (bare and vendor-prefixed ids) instead of
hardcoded 64K-era floors (#3023).
- Reasoning-effort now reaches Atlascloud (DeepSeek dialect), Moonshot
(`thinking` enable/disable), and Ollama (`think` param) (#3024); Moonshot/
Kimi models joined the reasoning-content provider and model gates (#3016).
- Transcript polish: compact tool-call cells without boilerplate (#3031),
internal turn/agent ids hidden behind stable labels (#3030), and Ctrl+B
now backgrounds the running foreground shell directly instead of opening
a menu (#3032).
- The Tasks sidebar separates "Model reasoning" from "Background commands",
and `auth list` reports the same active-credential source as
`auth status` for openai-codex.
### Fixed
- **TUI freeze under sub-agent load.** Rapid `AgentProgress` events
saturated the render loop and starved terminal input; progress-driven
repaints are now throttled to one per 100ms (#3033).
- **Hooks on Windows.** Hook commands were passed to `cmd /C` through
CRT-style argument quoting, which injected literal `\"` sequences that
cmd.exe never unescapes — JSON decisions could not parse. Commands now
reach cmd.exe verbatim via `raw_arg`.
- Codex Responses: assistant tool results are converted to
`function_call_output` items (multi-turn tool calling previously broke),
tool schemas are sanitized for the Responses API, and `maximum` effort
maps to `xhigh` (#3019, #3017 — both partially; retry/backoff and
per-tool strict mode remain open).
- Better tool-denial and provider error messages harvested from PR #2933
(#3020).
## [0.8.57] - 2026-06-10
### Added
@@ -1192,75 +1268,6 @@ and continuing contributors **@reidliu41**, **@cyq1017**, **@idling11**,
@Lellansin, and @zhuangbiaowei, while preserving the existing @jeoor
acknowledgement in the consolidated list.
## [0.8.44] - 2026-05-24
### Added
- **`codew` convenience alias.** `codew` is a short-form command that silently
forwards to `codewhale`. Six fewer keystrokes, same binary. Ships with the
Rust `codewhale-cli` crate and the npm `codewhale` package (#2013).
- **Session picker inline rename.** Press `r` in the session picker (Ctrl+R)
to rename the selected session inline. Type the new title, Enter to confirm,
Esc to cancel (#1600).
- **Plan detail display.** The \"Plan Confirmation\" modal now shows the plan
explanation and step list from `update_plan` so you can review what was
proposed before accepting (#834).
- **Agent team UX.** Delegate cards in the transcript now show human-readable
roles (scout, builder, reviewer, verifier, executor) and the completion
summary instead of raw `agent_xxx` IDs (#1981).
- **`--continue` / `-c` CLI flag.** `codewhale --continue` resumes your most
recent interactive session for the current workspace.
### Changed
- **App state migrates to `~/.codewhale/`.** New installs write product-owned
state (config, sessions, tasks, skills, logs, etc.) under `~/.codewhale/`.
`~/.deepseek/` continues to work as a compatibility fallback — no data loss,
no forced migration. `CODEWHALE_HOME` and `CODEWHALE_CONFIG_PATH` env vars
are now supported alongside existing `DEEPSEEK_*` vars (#2011).
- **Project config overlay prefers `.codewhale/config.toml`** before
`.deepseek/config.toml`. Both are read; the CodeWhale root takes precedence.
- **Doctor reports active state root** and whether legacy `~/.deepseek/`
state is also present.
- **README contributor acknowledgements are current for this release.**
Thanks @jeoor, @LING71671, and @ousamabenyounes for the fixes and reports
now reflected in the public credits.
- **Harvested-contribution credit audit completed.** The README Thanks list now
includes previously missed community helpers whose code, reports, or review
notes were already credited in older changelog entries but not in the public
contributor surface: @mvanhorn, @krisclarkdev, @tdccccc, @LittleBlacky,
@AnaheimEX, @THatch26, @alvin1, @knqiufan, @IIzzaya, @duanchao-lab,
@imkingjh999, @eng2007, @chennest, @kunpeng-ai-lab, @asdfg314284230,
@maker316, @lalala-233, @muyuliyan, @czf0718, @MeAiRobot, @tiger-dog,
@MMMarcinho, @lucaszhu-hue, @sandofree, @zhuangbiaowei, @NorethSea,
@Jianfengwu2024, @Fire-dtx, @oooyuy92, @qinxianyuzou, @tyouter,
@xulongzhe, @YaYII, @47Cid, and @JafarAkhondali.
- **Harvest guidance now requires GitHub-visible attribution.** Maintainer
harvests should preserve the original commit author where possible or add
`Co-authored-by` trailers from the original PR commits, in addition to the
existing `Harvested from PR #N by @handle` trailer and changelog credit.
- **Enter now steers when busy-waiting.** When the model is busy but not
actively streaming (waiting on tool results, sub-agents, or shell
commands), pressing Enter tries to steer your message into the current
turn instead of silently queueing it. During active streaming, Enter
still queues to avoid interrupting in-flight reasoning (#2009).
### Fixed
- **`/save` no longer creates repo-local `session_*.json`.** Default saves
now go to the managed sessions directory instead of the current workspace.
Explicit `/save path/to/file.json` exports still work as before (#2010).
- **Boot-time session prune** caps managed sessions at 50 on every startup,
preventing unbounded growth of `~/.codewhale/sessions/`.
- **Checkpoint path resolution** no longer hardcodes `~/.deepseek/` — uses
the resolved session directory instead.
- **Plain startup no longer auto-opens the session picker.** `codewhale` and
`codew` start in a fresh composer again even when saved sessions exist.
Use `/sessions`, Ctrl+R, `--resume`, or `--continue` when you want to resume.
- **Work sidebar now refreshes immediately** after `checklist_write`,
`checklist_update`, and `update_plan` tool calls, matching the existing
`todo_write` behavior instead of relying on the 2.5s periodic poll (#1787).
---
Older releases: [CHANGELOG.md](https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md) and [docs/CHANGELOG_ARCHIVE.md](https://github.com/Hmbown/CodeWhale/blob/main/docs/CHANGELOG_ARCHIVE.md).
+5 -5
View File
@@ -20,11 +20,11 @@ path = "src/main.rs"
[dependencies]
anyhow = "1.0.100"
codewhale-config = { path = "../config", version = "0.8.57" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
codewhale-release = { path = "../release", version = "0.8.57" }
codewhale-secrets = { path = "../secrets", version = "0.8.57" }
codewhale-tools = { path = "../tools", version = "0.8.57" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-release = { path = "../release", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
schemaui = { version = "0.12.0", default-features = false, optional = true }
async-stream = "0.3.6"
async-trait = "0.1"
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "codewhale",
"version": "0.8.57",
"codewhaleBinaryVersion": "0.8.57",
"version": "0.8.58",
"codewhaleBinaryVersion": "0.8.58",
"description": "Install and run CodeWhale, the agentic terminal for open-source and open-weight coding models, from GitHub release artifacts.",
"author": "Hmbown",
"license": "MIT",
+2 -2
View File
@@ -18,8 +18,8 @@ export interface RepoFacts {
}
export const FACTS: RepoFacts = {
"generatedAt": "2026-06-10T06:46:48.026Z",
"version": "0.8.57",
"generatedAt": "2026-06-11T05:54:56.679Z",
"version": "0.8.58",
"crates": [
"agent",
"app-server",