release: v0.8.57 — sleep-resume turns, docker fix, one-command release prep, changelog diet

This commit is contained in:
Hunter B
2026-06-10 00:02:51 -07:00
parent f9c9764265
commit b23067bacd
22 changed files with 186 additions and 150 deletions
+60 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
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.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
+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.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
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.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
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.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
+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.56" }
codewhale-config = { path = "../config", version = "0.8.57" }
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.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
+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.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
+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.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
+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.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
+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.56" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
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.56" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
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.56" }
codewhale-protocol = { path = "../protocol", version = "0.8.57" }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
+58 -76
View File
@@ -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).
+5 -5
View File
@@ -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"
+1 -3
View File
@@ -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. \
+1 -4
View File
@@ -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
}
+2 -2
View File
@@ -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",
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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",