release: v0.8.57 — sleep-resume turns, docker fix, one-command release prep, changelog diet
This commit is contained in:
+60
-1
@@ -7,6 +7,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.8.57] - 2026-06-10
|
||||
|
||||
### Added
|
||||
|
||||
- **Turns now survive system sleep.** When the host suspends mid-stream, the
|
||||
connection used to die on wake with `Stream read error: error decoding
|
||||
response body` and the turn was lost (#2990). The engine now stamps stream
|
||||
progress with both monotonic and wall-clock time; a large divergence on a
|
||||
stream error identifies a sleep/wake cycle, and the request is silently
|
||||
re-issued (up to the existing 3-retry budget) instead of failing the turn.
|
||||
- **One-command release prep.** `./scripts/release/prepare-release.sh X.Y.Z`
|
||||
bumps the workspace version, every internal crate dependency pin, the npm
|
||||
wrapper, and the README install-tag examples, refreshes `Cargo.lock`,
|
||||
regenerates the embedded TUI changelog slice and web facts, and runs
|
||||
`check-versions.sh` — the v0.8.56 release needed nine follow-up commits for
|
||||
exactly these sync points.
|
||||
- `.github/CODEOWNERS` and `.github/dependabot.yml` (weekly cargo +
|
||||
github-actions updates, monthly npm for `web/`).
|
||||
|
||||
### Changed
|
||||
|
||||
- **The changelog went on a diet.** Root `CHANGELOG.md` now carries recent
|
||||
releases (v0.8.40+); older entries moved to `docs/CHANGELOG_ARCHIVE.md`.
|
||||
`crates/tui/CHANGELOG.md` — embedded into every binary for `/change` — is a
|
||||
generated 15-release slice (`scripts/sync-changelog.sh`), no longer a
|
||||
357 KB manual byte-for-byte copy (~300 KB smaller binaries).
|
||||
- GitHub Release bodies are generated from the tagged version's changelog
|
||||
section (`scripts/release/generate-release-body.sh`) instead of a
|
||||
hardcoded workflow blob with a hand-pasted contributor list.
|
||||
- `check-versions.sh` now also gates `web/lib/facts.generated.ts` and the
|
||||
README install-tag examples; the CNB mirror pipeline validates the pushed
|
||||
tag against `Cargo.toml` before generating release notes.
|
||||
- Docs reorganized: internal design notes moved under `docs/rfcs/`; stale
|
||||
internal docs (old audits, handoffs, region-specific VM notes) removed.
|
||||
- Agent-facing polish: the system prompt environment block reports
|
||||
`codewhale_version` (was `deepseek_version`), the legacy
|
||||
`.deepseek/instructions.md` path is no longer advertised in the prompt
|
||||
(still honored for back-compat), and oversized instruction files are
|
||||
truncated with an explicit `[…truncated: N bytes omitted]` marker instead
|
||||
of a bare ellipsis.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Docker images build again.** The release `docker` job failed for v0.8.56
|
||||
because the Dockerfile still copied the pre-rebrand `deepseek` /
|
||||
`deepseek-tui` binaries; they are now symlinks to the codewhale binaries
|
||||
inside the image, so legacy container entrypoints keep working.
|
||||
- `.devcontainer/devcontainer.json` used the pre-rebrand container name,
|
||||
mount path, and `deepseek` remote user.
|
||||
- Stale `--bin deepseek` examples, `DeepSeek-TUI` strings in `/change`
|
||||
output, and pre-rebrand doc comments.
|
||||
|
||||
### Removed
|
||||
|
||||
- Unused dependencies: `tracing-appender` and `zeroize` (TUI crate),
|
||||
`rustls` (release crate); the orphaned `vendor/schemaui-0.12.0` lockfile
|
||||
leftover and a machine-specific one-off `scripts/verify_task.sh`.
|
||||
|
||||
## [0.8.56] - 2026-06-09
|
||||
|
||||
### Added
|
||||
@@ -1578,7 +1636,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.55...HEAD
|
||||
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.57...HEAD
|
||||
[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
|
||||
[0.8.54]: https://github.com/Hmbown/CodeWhale/compare/v0.8.53...v0.8.54
|
||||
|
||||
Generated
+16
-16
@@ -771,7 +771,7 @@ checksum = "e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21"
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-agent"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"codewhale-config",
|
||||
"serde",
|
||||
@@ -779,7 +779,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-app-server"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -806,7 +806,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-cli"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -834,7 +834,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-config"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"codewhale-execpolicy",
|
||||
@@ -848,7 +848,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-core"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -867,7 +867,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-execpolicy"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"codewhale-protocol",
|
||||
@@ -876,7 +876,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-hooks"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -890,7 +890,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-mcp"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
@@ -899,7 +899,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-protocol"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -907,7 +907,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-release"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"reqwest",
|
||||
@@ -918,7 +918,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-secrets"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"keyring",
|
||||
@@ -931,7 +931,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-state"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -943,7 +943,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-tools"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -957,7 +957,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-tui"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arboard",
|
||||
@@ -1027,11 +1027,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-tui-core"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-whaleflow"
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.8.56"
|
||||
version = "0.8.57"
|
||||
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
@@ -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.56 codewhale-cli --locked --force
|
||||
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-tui --locked --force
|
||||
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
|
||||
|
||||
# 旧 Homebrew 互換。formula はまだ deepseek-tui 名を使います。
|
||||
brew tap Hmbown/deepseek-tui
|
||||
|
||||
@@ -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.56 codewhale-cli --locked --force
|
||||
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-tui --locked --force
|
||||
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
|
||||
|
||||
# Legacy Homebrew compatibility while the formula is renamed
|
||||
brew tap Hmbown/deepseek-tui
|
||||
|
||||
+2
-2
@@ -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.56 codewhale-cli --locked --force
|
||||
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-tui --locked --force
|
||||
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
|
||||
|
||||
# Homebrew legacy trong lúc formula vẫn dùng tên deepseek-tui
|
||||
brew tap Hmbown/deepseek-tui
|
||||
|
||||
+2
-2
@@ -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.56 codewhale-cli --locked --force
|
||||
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.56 codewhale-tui --locked --force
|
||||
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
|
||||
|
||||
# 旧 Homebrew 兼容路径,formula 仍使用 deepseek-tui 名称
|
||||
brew tap Hmbown/deepseek-tui
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-config = { path = "../config", version = "0.8.57" }
|
||||
serde.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-config = { path = "../config", version = "0.8.56" }
|
||||
codewhale-core = { path = "../core", version = "0.8.56" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.56" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.8.56" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.8.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.56" }
|
||||
codewhale-state = { path = "../state", version = "0.8.56" }
|
||||
codewhale-tools = { path = "../tools", version = "0.8.56" }
|
||||
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" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
rustls.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-app-server = { path = "../app-server", version = "0.8.56" }
|
||||
codewhale-config = { path = "../config", version = "0.8.56" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.56" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.8.56" }
|
||||
codewhale-release = { path = "../release", version = "0.8.56" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.8.56" }
|
||||
codewhale-state = { path = "../state", version = "0.8.56" }
|
||||
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" }
|
||||
chrono.workspace = true
|
||||
dirs.workspace = true
|
||||
serde.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.8.56" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.57" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.8.57" }
|
||||
dirs.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-config = { path = "../config", version = "0.8.56" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.56" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.8.56" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.8.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.56" }
|
||||
codewhale-state = { path = "../state", version = "0.8.56" }
|
||||
codewhale-tools = { path = "../tools", version = "0.8.56" }
|
||||
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" }
|
||||
serde_json.workspace = true
|
||||
tracing.workspace = true
|
||||
uuid.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
|
||||
serde.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
|
||||
reqwest.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -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.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
thiserror.workspace = true
|
||||
|
||||
+58
-76
@@ -7,6 +7,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.8.57] - 2026-06-10
|
||||
|
||||
### Added
|
||||
|
||||
- **Turns now survive system sleep.** When the host suspends mid-stream, the
|
||||
connection used to die on wake with `Stream read error: error decoding
|
||||
response body` and the turn was lost (#2990). The engine now stamps stream
|
||||
progress with both monotonic and wall-clock time; a large divergence on a
|
||||
stream error identifies a sleep/wake cycle, and the request is silently
|
||||
re-issued (up to the existing 3-retry budget) instead of failing the turn.
|
||||
- **One-command release prep.** `./scripts/release/prepare-release.sh X.Y.Z`
|
||||
bumps the workspace version, every internal crate dependency pin, the npm
|
||||
wrapper, and the README install-tag examples, refreshes `Cargo.lock`,
|
||||
regenerates the embedded TUI changelog slice and web facts, and runs
|
||||
`check-versions.sh` — the v0.8.56 release needed nine follow-up commits for
|
||||
exactly these sync points.
|
||||
- `.github/CODEOWNERS` and `.github/dependabot.yml` (weekly cargo +
|
||||
github-actions updates, monthly npm for `web/`).
|
||||
|
||||
### Changed
|
||||
|
||||
- **The changelog went on a diet.** Root `CHANGELOG.md` now carries recent
|
||||
releases (v0.8.40+); older entries moved to `docs/CHANGELOG_ARCHIVE.md`.
|
||||
`crates/tui/CHANGELOG.md` — embedded into every binary for `/change` — is a
|
||||
generated 15-release slice (`scripts/sync-changelog.sh`), no longer a
|
||||
357 KB manual byte-for-byte copy (~300 KB smaller binaries).
|
||||
- GitHub Release bodies are generated from the tagged version's changelog
|
||||
section (`scripts/release/generate-release-body.sh`) instead of a
|
||||
hardcoded workflow blob with a hand-pasted contributor list.
|
||||
- `check-versions.sh` now also gates `web/lib/facts.generated.ts` and the
|
||||
README install-tag examples; the CNB mirror pipeline validates the pushed
|
||||
tag against `Cargo.toml` before generating release notes.
|
||||
- Docs reorganized: internal design notes moved under `docs/rfcs/`; stale
|
||||
internal docs (old audits, handoffs, region-specific VM notes) removed.
|
||||
- Agent-facing polish: the system prompt environment block reports
|
||||
`codewhale_version` (was `deepseek_version`), the legacy
|
||||
`.deepseek/instructions.md` path is no longer advertised in the prompt
|
||||
(still honored for back-compat), and oversized instruction files are
|
||||
truncated with an explicit `[…truncated: N bytes omitted]` marker instead
|
||||
of a bare ellipsis.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Docker images build again.** The release `docker` job failed for v0.8.56
|
||||
because the Dockerfile still copied the pre-rebrand `deepseek` /
|
||||
`deepseek-tui` binaries; they are now symlinks to the codewhale binaries
|
||||
inside the image, so legacy container entrypoints keep working.
|
||||
- `.devcontainer/devcontainer.json` used the pre-rebrand container name,
|
||||
mount path, and `deepseek` remote user.
|
||||
- Stale `--bin deepseek` examples, `DeepSeek-TUI` strings in `/change`
|
||||
output, and pre-rebrand doc comments.
|
||||
|
||||
### Removed
|
||||
|
||||
- Unused dependencies: `tracing-appender` and `zeroize` (TUI crate),
|
||||
`rustls` (release crate); the orphaned `vendor/schemaui-0.12.0` lockfile
|
||||
leftover and a machine-specific one-off `scripts/verify_task.sh`.
|
||||
|
||||
## [0.8.56] - 2026-06-09
|
||||
|
||||
### Added
|
||||
@@ -1203,82 +1261,6 @@ and continuing contributors **@reidliu41**, **@cyq1017**, **@idling11**,
|
||||
`checklist_update`, and `update_plan` tool calls, matching the existing
|
||||
`todo_write` behavior instead of relying on the 2.5s periodic poll (#1787).
|
||||
|
||||
## [0.8.43] - 2026-05-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`grep_files` now respects the cancellation token.** Long-running file
|
||||
searches cancel promptly instead of running to completion after the user
|
||||
aborts (#1839). Thanks @LING71671.
|
||||
- **npm installer stream-pause race condition fixed.** The install script now
|
||||
pauses HTTP response streams immediately, preventing early data loss that
|
||||
caused "Invalid checksum manifest line" errors (#1860). Thanks @jeoor.
|
||||
- **Ctrl+Z restores the last cleared composer draft.** Pressing Ctrl+Z in an
|
||||
empty composer recovers the text that was last cleared with Ctrl+U or
|
||||
Ctrl+S, matching the muscle memory users expect from other editors (#1911).
|
||||
Thanks @LING71671.
|
||||
- **Clipboard works on non-wlroots Wayland compositors.** The Linux clipboard
|
||||
path now tries `wl-copy` before `arboard`, fixing silent copy failures on
|
||||
niri, River, cosmic-comp, and GNOME mutter (#1938). Thanks @ousamabenyounes.
|
||||
|
||||
### Added
|
||||
|
||||
- **`/goal` remains the persistent objective surface.** Use `/goal <objective>`
|
||||
to set a goal and `/goal done` to mark it complete. Goal status appears in
|
||||
the Work sidebar with elapsed time, but it does not change Plan / Agent /
|
||||
YOLO mode or approval behavior. A tabbed Ralph-style Goal loop is deferred to
|
||||
v0.8.44 (#2007).
|
||||
- **Post-turn receipts cite evidence for every completed turn.** When a turn
|
||||
finishes, a receipt line shows in the transcript tail with a summary of
|
||||
tool calls, file changes, and evidence that supports the agent's claims.
|
||||
Tool evidence is collected per-turn and flushed on new dispatch.
|
||||
- **Stall reason classification.** When a turn has been running for more than
|
||||
30 seconds, the footer now appends a classified reason: "waiting for model",
|
||||
"tools executing", "sub-agents working", "compacting context", or "waiting —
|
||||
no recent activity".
|
||||
- **Decision card widget for structured user input.** When Brother Whale needs
|
||||
a choice, it surfaces a bordered card with numbered options, keyboard
|
||||
navigation (1-9 / j/k / arrows), and Enter/Esc to confirm or cancel.
|
||||
- **Tasks sidebar now shows fuller turn IDs and supports copy-to-clipboard.**
|
||||
Turn ID prefixes are widened from 12 to 16 characters for disambiguation,
|
||||
background job status is presented as "X running, Y completed" instead of
|
||||
ambiguous "X active (Y running)", and `y` / `Y` yank affordances copy the
|
||||
current turn ID or full status line to the system clipboard (#1975).
|
||||
|
||||
### Changed
|
||||
|
||||
- **Contributor count and acknowledgement surfaces refreshed.** The website
|
||||
fallback contributor count now reflects 98 live GitHub contributors (up from
|
||||
the stale 91). All three README translations (English, 中文, 日本語) now
|
||||
include 30+ previously unlisted contributors whose PRs were merged since
|
||||
April 2026.
|
||||
- **README and web surface rebrand refinements.** Crate descriptions, npm
|
||||
package text, and website copy now consistently position CodeWhale as
|
||||
open-model-first and provider-spanning, with DeepSeek V4 as the first-class
|
||||
path.
|
||||
- **New contributor names added to README acknowledgements.** Thanks to
|
||||
@Apeiron0w0, @aqilaziz, @ChaceLyee2101, @ComeFromTheMars, @CrepuscularIRIS,
|
||||
@dst1213, @eltociear, @fuleinist, @greyfreedom, @h3c-hexin, @heloanc,
|
||||
@hxy91819, @J3y0r, @JiarenWang, @jinpengxuan, @KhalidAlnujaidi, @laoye2020,
|
||||
@lbcheng888, @linzhiqin2003, @Liu-Vince, @lixiasky-back, @pengyou200902,
|
||||
@punkcanyang, @Rene-Kuhm, @SamhandsomeLee, @sockerch, @sternelee,
|
||||
@Wenjunyun123, @whtis, and @wuwuzhijing for the translations, typo fixes,
|
||||
docs polish, and small UX improvements that landed across the 0.8.42 →
|
||||
0.8.43 cycle.
|
||||
|
||||
### Security
|
||||
|
||||
- **Thinking blocks can be collapsed/expanded via keyboard.** Space on an
|
||||
empty composer toggles the focused thinking cell between collapsed and
|
||||
expanded, complementing the existing mouse right-click context menu (#1972).
|
||||
- **Sub-agent completion events no longer delayed to the next turn.** The turn
|
||||
loop now drains late-arriving sub-agent completions at the final checkpoint
|
||||
before breaking, so child-agent sentinels surface immediately instead of
|
||||
appearing in the following turn (#1961).
|
||||
- **`codewhale doctor` now referenced correctly in SSE timeout errors.**
|
||||
The error message shown when SSE streams fail to connect now points users to
|
||||
`codewhale doctor` (not the legacy `deepseek doctor`).
|
||||
|
||||
---
|
||||
|
||||
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).
|
||||
|
||||
@@ -20,11 +20,11 @@ path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
codewhale-config = { path = "../config", version = "0.8.56" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.8.56" }
|
||||
codewhale-release = { path = "../release", version = "0.8.56" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.8.56" }
|
||||
codewhale-tools = { path = "../tools", version = "0.8.56" }
|
||||
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" }
|
||||
schemaui = { version = "0.12.0", default-features = false, optional = true }
|
||||
async-stream = "0.3.6"
|
||||
async-trait = "0.1"
|
||||
|
||||
@@ -47,9 +47,7 @@ pub fn change(app: &mut App, version: Option<&str>) -> CommandResult {
|
||||
Expected a line starting with `## [`."
|
||||
.to_string()
|
||||
} else {
|
||||
format!(
|
||||
"Could not find version \"{ver}\" in the bundled CodeWhale changelog."
|
||||
)
|
||||
format!("Could not find version \"{ver}\" in the bundled CodeWhale changelog.")
|
||||
}
|
||||
} else {
|
||||
"Could not find a version section in the bundled CodeWhale changelog. \
|
||||
|
||||
@@ -82,10 +82,7 @@ pub(super) const SLEEP_GAP_THRESHOLD: Duration = Duration::from_secs(10);
|
||||
|
||||
/// True when the gap between wall-clock and monotonic elapsed time since the
|
||||
/// last stream progress says the host was suspended.
|
||||
pub(super) fn sleep_gap_detected(
|
||||
monotonic_elapsed: Duration,
|
||||
wallclock_elapsed: Duration,
|
||||
) -> bool {
|
||||
pub(super) fn sleep_gap_detected(monotonic_elapsed: Duration, wallclock_elapsed: Duration) -> bool {
|
||||
wallclock_elapsed.saturating_sub(monotonic_elapsed) > SLEEP_GAP_THRESHOLD
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "codewhale",
|
||||
"version": "0.8.56",
|
||||
"codewhaleBinaryVersion": "0.8.56",
|
||||
"version": "0.8.57",
|
||||
"codewhaleBinaryVersion": "0.8.57",
|
||||
"description": "Install and run CodeWhale, the agentic terminal for open-source and open-weight coding models, from GitHub release artifacts.",
|
||||
"author": "Hmbown",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -43,7 +43,7 @@ old_re = re.escape(old)
|
||||
def bump(path, pattern, repl, minimum):
|
||||
p = pathlib.Path(path)
|
||||
text = p.read_text()
|
||||
out, n = re.subn(pattern, repl, text)
|
||||
out, n = re.subn(pattern, repl, text, flags=re.MULTILINE)
|
||||
if n < minimum:
|
||||
sys.exit(f"error: expected >= {minimum} replacement(s) in {path}, made {n}")
|
||||
p.write_text(out)
|
||||
|
||||
@@ -18,8 +18,8 @@ export interface RepoFacts {
|
||||
}
|
||||
|
||||
export const FACTS: RepoFacts = {
|
||||
"generatedAt": "2026-06-10T05:10:57.383Z",
|
||||
"version": "0.8.56",
|
||||
"generatedAt": "2026-06-10T06:46:48.026Z",
|
||||
"version": "0.8.57",
|
||||
"crates": [
|
||||
"agent",
|
||||
"app-server",
|
||||
|
||||
Reference in New Issue
Block a user