Skip to content
Merged
Show file tree
Hide file tree
Changes from 73 commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
b76a11b
fix(state): stabilize fork migration parent links
cyq1017 May 31, 2026
1855033
test(state): cover same-second migration idempotency
Hmbown Jun 1, 2026
3df0189
feat(config): load typed ask permissions file
greyfreedom May 31, 2026
69cff93
docs(config): use exact path in permissions example
Hmbown Jun 1, 2026
4979190
feat(tools): add byte-level schema canonicalize for prefix-cache stab…
Jun 1, 2026
cb4f660
fix(tui): contain Windows shell process trees
aboimpinto Jun 1, 2026
382635e
fix(tui): harden Windows job cleanup
aboimpinto Jun 1, 2026
998af56
chore(release): harden deepseek-tui deprecation path
Hmbown Jun 1, 2026
bc34cd1
fix(tui): hold subagent cap until status reconciles
cyq1017 Jun 1, 2026
a09af20
feat(web_search): enable parallel execution for read-only search tool
Implementist Jun 1, 2026
14ea072
fix(tui): close Windows job before output joins
aboimpinto Jun 1, 2026
54a9399
test(tui): cover Windows job cleanup fallbacks
aboimpinto Jun 1, 2026
2c256d7
fix(tui): close Windows job before foreground joins
aboimpinto Jun 1, 2026
242899d
feat: run ToolCallBefore hooks before tool execution
aboimpinto May 27, 2026
796e95c
fix: address PR #2511 review comments
aboimpinto Jun 1, 2026
2622db4
fix: cargo fmt formatting for lint compliance
aboimpinto Jun 1, 2026
cc923d6
fix: address greptile review comments — remove double-firing, wrap bl…
aboimpinto Jun 1, 2026
77b57bd
fix: initialize hook_executor for fresh sessions to fix greptile P1 r…
aboimpinto Jun 1, 2026
2ca2927
fix: clippy needless_return and fmt compliance
aboimpinto Jun 1, 2026
bb64018
feat(tui): add configurable auto-compact threshold
Hmbown Jun 1, 2026
472cd44
fix(tui): expose auto-compact threshold in config view
Hmbown Jun 1, 2026
4ff9bba
fix(tui): keep config scope column visible
Hmbown Jun 1, 2026
7dfec0e
fix(config): honor workspace shell opt-in
cyq1017 Jun 1, 2026
1d8cbbd
fix(config): normalize windows workspace paths
cyq1017 Jun 1, 2026
3d5edfe
test(config): cover legacy workspace shell opt-in
Hmbown Jun 1, 2026
588e54f
fix(mcp): surface invalid stdio output
cyq1017 Jun 1, 2026
c81d1c2
test(mcp): cover invalid stdio preview redaction
Hmbown Jun 1, 2026
a976758
fix(tui): hint mention depth cap on misses
cyq1017 Jun 1, 2026
29f5766
fix(tui): narrow mention depth hint
cyq1017 Jun 1, 2026
e2201b8
fix(tui): read Wayland clipboard via wl-paste
cyq1017 Jun 1, 2026
9f33c4d
fix(tui): suppress wl-paste trailing newline
Hmbown Jun 1, 2026
1605d8d
fix(sandbox): allow tty device in seatbelt profile
cyq1017 Jun 1, 2026
46de1a9
fix(tui): refresh prompt on model switch
cyq1017 Jun 1, 2026
bc7f98a
fix(tui): refresh prompt on mode changes
Hmbown Jun 1, 2026
3b5727f
fix(tui): prefer codewhale settings path
cyq1017 Jun 1, 2026
0eb2ff5
fix(tui): isolate settings path fallback tests
cyq1017 Jun 1, 2026
91c5bb6
fix(tui): keep tui prefs under codewhale home
Hmbown Jun 1, 2026
c52769e
feat(tools): add parallel verifier ensemble
Hmbown Jun 1, 2026
57c10c7
fix(tui): compact tool-call UI and context
Hmbown Jun 1, 2026
d71cba6
test(tui): wait for background shell completion
cyq1017 Jun 1, 2026
eba019a
test(tui): align activity labels with semantic tools
Hmbown Jun 2, 2026
7c06cf5
fix(tui): guide bug reports toward failure causes
cyq1017 Jun 1, 2026
5a909ee
docs(providers): clarify local model tool calls
cyq1017 Jun 1, 2026
5f3cc3c
docs(rebrand): clarify state migration paths
cyq1017 Jun 1, 2026
3db7b40
docs(rebrand): address migration review notes
cyq1017 Jun 1, 2026
9bd08c2
docs(tui): document statusline footer items
cyq1017 Jun 1, 2026
ae2000b
docs(tui): align statusline customization limits
Hmbown Jun 2, 2026
fda2141
docs: clarify shell tool mode availability
cyq1017 Jun 1, 2026
9e93269
docs: polish mode availability table
cyq1017 Jun 1, 2026
cbd6239
docs: mark agent shell tools approval-gated
Hmbown Jun 2, 2026
908a25d
test(mcp): close stale-session mock responses cleanly
cyq1017 Jun 2, 2026
73cd721
feat(tui): add mention browser completions
cyq1017 Jun 1, 2026
f185d46
fix(tui): expose mention behavior in config
cyq1017 Jun 1, 2026
c81cdab
feat(tui): add bang shell command shortcut
reidliu41 Jun 2, 2026
5becfda
fix(tui): use effective model window in context inspector
cyq1017 Jun 1, 2026
c148b00
fix(npm): prefer binary version output
cyq1017 Jun 2, 2026
650d1a6
fix(subagent): guard truncated tool calls
cyq1017 Jun 1, 2026
537afcf
fix(subagent): cap truncated response retries
cyq1017 Jun 2, 2026
6144d64
fix(config): report legacy config migration
cyq1017 Jun 2, 2026
eff4e99
test(config): stabilize migration home on windows
cyq1017 Jun 2, 2026
0842b3f
test(config): use real legacy home on windows
cyq1017 Jun 2, 2026
556e0b4
fix(tui): use theme colors in sidebar panels instead of hardcoded pal…
Jun 1, 2026
b1cc344
fix(tui): force full repaint on theme switch to prevent stale sidebar…
Jun 1, 2026
baba81c
fix(tui): show session timestamps in listings
cyq1017 Jun 2, 2026
a41a382
docs(runtime): outline receipt export boundary
cyq1017 Jun 2, 2026
c92f3c3
feat(tui): expose current model in turn metadata
cyq1017 Jun 1, 2026
c2c36cc
feat: add NSIS installer and classroom admin checklist
May 25, 2026
e6de6f4
fix: address Gemini code review feedback
May 25, 2026
63b7c18
fix(release): ship NSIS installer artifact
Hmbown Jun 2, 2026
41edcd5
chore(release): bump local version to 0.8.50
Hmbown Jun 2, 2026
88f34fc
fix(tui): protect multiline drafts on arrow navigation
Hmbown Jun 2, 2026
eedeb52
fix(agent): pass through explicit AtlasCloud model ids
Hmbown Jun 2, 2026
4a09197
fix(tui): bound foreground shell reader drains
Hmbown Jun 2, 2026
b122b58
refs(#2264): Phase 2 — wire FrozenPrefix::verify() into turn_loop
encyc Jun 1, 2026
c9e4c8b
fix: clarify comment, avoid per-turn tool clone on happy path
encyc Jun 1, 2026
d58613a
test(client): add plan mode toggle byte-stability invariant test
Jun 1, 2026
139b542
test(ci): add Cache Guard CI test for prefix-cache stability
Jun 1, 2026
8532dcc
feat: add Xiaomi MiMo speech support
xyuai Jun 2, 2026
5f497e0
fix: harden Xiaomi MiMo speech flow
xyuai Jun 2, 2026
e763b44
docs(changelog): credit new harvests for v0.8.50 (#2514, #2519, #2503…
Hmbown Jun 2, 2026
e99ee5e
chore(release): sync tui crate CHANGELOG for version drift gate
Hmbown Jun 2, 2026
ddae758
fix: resolve clippy warnings in harvested PRs (needless-borrow, is_mu…
Hmbown Jun 2, 2026
6ab77ea
feat(i18n): localize all queue command messages across 7 locales
gordonlu Jun 2, 2026
19d5579
fix: avoid Instant overflow in turn_liveness tests on Windows
gordonlu Jun 2, 2026
478d45f
fmt: cargo fmt
gordonlu Jun 2, 2026
2501709
fix: restore two-line draft header layout
gordonlu Jun 2, 2026
cc60129
feat(i18n): add FanoutCounts MessageId, wire into FanoutCard stats line
gordonlu Jun 2, 2026
f48e398
Revert "fix: restore two-line draft header layout"
gordonlu Jun 2, 2026
97c615c
chore: add contribution gate workflows
nightt5879 Jun 2, 2026
dcf8350
fix: harden contribution gate bypasses
nightt5879 Jun 2, 2026
5059076
fix: read contribution allowlist from default branch
nightt5879 Jun 2, 2026
c8c20e0
fix: remove dead issue gate guard
nightt5879 Jun 2, 2026
dfe1884
fix: add contribution gate dry run mode
nightt5879 Jun 2, 2026
ea7fc47
fix: paginate pending allowlist PR lookup
nightt5879 Jun 2, 2026
b819423
docs(changelog): credit i18n and CI workflow harvests (#2568, #2566, …
Hmbown Jun 2, 2026
471a58f
chore(release): sync tui CHANGELOG after i18n/CI harvests
Hmbown Jun 2, 2026
9a3c545
fix(tui): move Paste to first position in right-click context menu
Hmbown Jun 2, 2026
f2df1d5
docs(changelog): note paste-first context menu fix
Hmbown Jun 2, 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
1 change: 0 additions & 1 deletion .github/workflows/auto-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ on:
paths:
- 'Cargo.toml'
- 'npm/codewhale/package.json'
- 'npm/deepseek-tui/package.json'
workflow_dispatch:

permissions:
Expand Down
61 changes: 53 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,48 @@ jobs:
path: bundles/*
if-no-files-found: error

windows-installer:
needs: [build, resolve]
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.resolve.outputs.source_ref }}
- uses: actions/download-artifact@v4
with:
path: artifacts
pattern: 'codewhale*-windows-x64.exe'
- name: Install NSIS
shell: pwsh
run: choco install nsis -y --no-progress
- name: Build NSIS installer
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$version = "${{ needs.resolve.outputs.tag }}".TrimStart("v")
Copy-Item "artifacts\codewhale-windows-x64.exe\codewhale-windows-x64.exe" "scripts\installer\codewhale.exe"
Copy-Item "artifacts\codewhale-tui-windows-x64.exe\codewhale-tui-windows-x64.exe" "scripts\installer\codewhale-tui.exe"
$makensis = "${env:ProgramFiles(x86)}\NSIS\makensis.exe"
if (!(Test-Path $makensis)) {
$makensis = "${env:ProgramFiles}\NSIS\makensis.exe"
}
if (!(Test-Path $makensis)) {
throw "makensis.exe not found after NSIS install"
}
Push-Location scripts\installer
& $makensis "/DVERSION=$version" "codewhale.nsi"
Pop-Location
if (!(Test-Path "scripts\installer\CodeWhaleSetup.exe")) {
throw "CodeWhaleSetup.exe was not produced"
}
- name: Upload installer artifact
uses: actions/upload-artifact@v4
with:
name: CodeWhaleSetup.exe
path: scripts/installer/CodeWhaleSetup.exe
if-no-files-found: error

docker:
needs: [build, resolve]
if: ${{ !cancelled() && needs.build.result == 'success' }}
Expand Down Expand Up @@ -451,8 +493,8 @@ jobs:
cache-to: type=gha,mode=max

release:
needs: [build, bundle, docker, resolve]
if: ${{ !cancelled() && needs.build.result == 'success' && needs.bundle.result == 'success' && needs.docker.result == 'success' }}
needs: [build, bundle, windows-installer, docker, resolve]
if: ${{ !cancelled() && needs.build.result == 'success' && needs.bundle.result == 'success' && needs.windows-installer.result == 'success' && needs.docker.result == 'success' }}
runs-on: ubuntu-latest
permissions:
contents: write
Expand Down Expand Up @@ -506,10 +548,11 @@ jobs:
body: |
> This release renames the project to **CodeWhale**. The legacy
> `deepseek` and `deepseek-tui` binaries continue to ship as
> deprecation shims for one release cycle; they print a one-line
> warning and forward to `codewhale` / `codewhale-tui`. They will
> be removed in v0.9.0. See `docs/REBRAND.md` for the full
> migration story.
> compatibility-only deprecation shims during v0.8.x; they print a
> one-line warning and forward to `codewhale` / `codewhale-tui`.
> They will be removed in v0.9.0. The legacy npm package
> `deepseek-tui` is deprecated and receives no further releases.
> See `docs/REBRAND.md` for the full migration story.

## Install

Expand Down Expand Up @@ -551,6 +594,7 @@ jobs:
| Linux RISC-V | `codewhale-linux-riscv64.tar.gz` | `install.sh` |
| macOS x64 | `codewhale-macos-x64.tar.gz` | `install.sh` |
| macOS ARM | `codewhale-macos-arm64.tar.gz` | `install.sh` |
| Windows x64 (installer) | `CodeWhaleSetup.exe` | NSIS setup |
| Windows x64 | `codewhale-windows-x64.zip` | `install.bat` |
| Windows x64 (portable) | `codewhale-windows-x64-portable.zip` | — |

Expand All @@ -562,13 +606,14 @@ jobs:
```

**Windows:**
- For the installer path, run `CodeWhaleSetup.exe`; it installs both binaries under `%LOCALAPPDATA%\Programs\CodeWhale\bin` and adds that directory to the current-user PATH.
- Extract `codewhale-windows-x64.zip`
- Run `install.bat` (copies to `%USERPROFILE%\bin`)
- Add `%USERPROFILE%\bin` to your PATH

The **portable** Windows archive skips the install script — extract and run from any directory.
The **portable** Windows archive skips the install script — extract and run from any directory. The NSIS installer is currently unsigned and may trigger Windows SmartScreen until a signing certificate is wired into the release pipeline.

Individual binaries are also attached below for scripting and the npm wrapper. Legacy `deepseek-*` and `deepseek-tui-*` assets ship for one release cycle so that existing `deepseek update` invocations on v0.8.40 keep working; they install the deprecation shims, which forward to the canonical binaries.
Individual binaries are also attached below for scripting and the npm wrapper. Legacy `deepseek-*` and `deepseek-tui-*` assets are compatibility-only deprecation shims for v0.8.x so that existing `deepseek update` invocations on v0.8.40 keep working; they forward to the canonical binaries. The legacy npm package `deepseek-tui` is deprecated and is not republished.

### Verify (recommended)

Expand Down
51 changes: 50 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.8.50] - 2026-06-02

### Added

- Added a Windows NSIS installer release artifact and classroom/lab deployment
checklist, harvested from #2045 for #1987. The release workflow now builds
`CodeWhaleSetup.exe` from the canonical Windows binaries, and the installer
adds/removes only the exact current-user PATH entry.
- Added deterministic session timestamps in session listings, receipt-export
boundary docs, and current-model turn metadata for routed/auto sessions.
- Added exact AtlasCloud provider-hinted model ID pass-through for explicit
`vendor/model-id` selections, harvested from #2569 without freezing a
brittle provider catalog.

### Changed

- Hardened theme repainting and sidebar color use so theme switches do not
leave stale Whale-dark panel colors behind.
- Made legacy config migration visible when CodeWhale copies old DeepSeek-era
config into the CodeWhale config path.

### Fixed

- Fixed `/context` to use the effective routed model for context-window
budgeting, so DeepSeek V4 routes report the 1M-token window and legacy
DeepSeek routes keep the 128K fallback.
- Fixed npm wrapper version output so `--version` prefers the installed binary
version instead of stale package metadata when both are available.
- Fixed multiline composer arrow navigation so holding Up/Down at the first or
last line no longer replaces the current draft with prompt history.
- Fixed foreground `exec_shell` output collection so timeout and inherited-pipe
cleanup cannot wedge later tool calls behind the global tool lock.
- Clarified the English DeepSeek account-balance footer chip from `bal` to
`balance` so it is less likely to be mistaken for session spend.
- Fixed truncated subagent tool calls and repeated truncated subagent responses
so they return model-visible errors instead of silently failing.

### Community

Thanks to **@ZhulongNT** (#2045), **@cyq1017** (#2521, #2536, #2537, #2559,
#2562, #2563, #2564), **@HUQIANTAO** (#2527), **@lucaszhu-hue** (#2569), and
**@idling11** (#2573) for the work harvested into this release pass. Thanks
also to issue reporters and verification helpers including **@New2Niu**
(#2561), **@buko** (#2533, #2369), **@wywsoor** (#2494), **@ctxyao** (#2556),
**@Dr3259** (#2380), **@caiyilian** (#2567), and **@chinaqy110** (#2571) for
reports and acceptance details that shaped these fixes, plus the WeChat/Chinese
UX reports relayed during the final triage pass.

## [0.8.49] - 2026-06-01

### Added
Expand Down Expand Up @@ -5162,7 +5210,8 @@ Welcome — and thank you.
- Hooks system and config profiles
- Example skills and launch assets

[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.49...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.50...HEAD
[0.8.50]: https://github.com/Hmbown/CodeWhale/compare/v0.8.49...v0.8.50
[0.8.49]: https://github.com/Hmbown/CodeWhale/compare/v0.8.48...v0.8.49
[0.8.48]: https://github.com/Hmbown/CodeWhale/compare/v0.8.47...v0.8.48
[0.8.47]: https://github.com/Hmbown/CodeWhale/compare/v0.8.46...v0.8.47
Expand Down
31 changes: 16 additions & 15 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 @@ -20,7 +20,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
resolver = "2"

[workspace.package]
version = "0.8.49"
version = "0.8.50"
edition = "2024"
# Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the
# codebase relies on extensively. Cargo enforces this so users on older
Expand Down
9 changes: 5 additions & 4 deletions README.ja-JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

## インストール

`codewhale` は自己完結型の Rust リリースバイナリのペアとしてインストールされます。`codewhale` はディスパッチャーで、同じ場所にある `codewhale-tui` ランタイムを起動して対話セッションを実行します。npm、Homebrew、Docker は両方を自動でインストールします。Cargo や手動インストールでは、両方を同じディレクトリ(通常は `PATH` 上のディレクトリ)に置いてください。実行に Node.js や Python のランタイムは不要です。
`codewhale` は自己完結型の Rust リリースバイナリのペアとしてインストールされます。`codewhale` はディスパッチャーで、同じ場所にある `codewhale-tui` ランタイムを起動して対話セッションを実行します。npmDocker は両方を自動でインストールします。Cargo や手動インストールでは、両方を同じディレクトリ(通常は `PATH` 上のディレクトリ)に置いてください。実行に Node.js や Python のランタイムは不要です。

```bash
# 1. npm — すでに Node を使っているなら最も簡単。npm パッケージは
Expand All @@ -21,8 +21,9 @@ npm install -g codewhale
cargo install codewhale-cli --locked # `codewhale` (エントリーポイント)
cargo install codewhale-tui --locked # `codewhale-tui` (TUI バイナリ)

# 3. Homebrew — macOS パッケージマネージャ。
# tap/formula 名は旧名のままですが、codewhale と codewhale-tui をインストールします。
# 3. Homebrew — 旧インストールとの互換用です。
# tap/formula はまだ旧 deepseek-tui 名を使っています。新規インストールでは、
# formula が改名されるまで npm、Cargo、Docker、直接ダウンロードを優先してください。
brew tap Hmbown/deepseek-tui
brew install deepseek-tui

Expand All @@ -48,7 +49,7 @@ docker run --rm -it \
```bash
codewhale update
npm install -g codewhale@latest
brew update && brew upgrade deepseek-tui
brew update && brew upgrade deepseek-tui # 旧 Homebrew インストールのみ
cargo install codewhale-cli --locked --force
cargo install codewhale-tui --locked --force
```
Expand Down
Loading
Loading