Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
5c45232
fix: defer clipboard init to avoid blocking TUI startup on X11-less h…
zlh124 May 18, 2026
1874359
fix: stop RUST_LOG from leaking tracing messages into TUI alt-screen …
aboimpinto May 18, 2026
b156d7d
fix(config): honor explicit custom model for non-DeepSeek providers (…
LeoLin990405 May 17, 2026
3adc05d
style(config): mark unreachable DeepSeek match arms (review #1740)
LeoLin990405 May 17, 2026
1a5ee2f
fix(client): replay reasoning_content for DeepSeek models on openai p…
LeoLin990405 May 17, 2026
323f43d
fix(client): align stream reasoning classification with replay (revie…
LeoLin990405 May 17, 2026
4ab7c53
fix(tui): surface thinking-only turns instead of silently ending (#1727)
LeoLin990405 May 17, 2026
351898d
fix(tui): emit thinking-only notice only at true turn end (review #1742)
LeoLin990405 May 17, 2026
b3223cd
fix(shell): preserve quoted args on Windows cmd /C invocation (#1691)
LeoLin990405 May 17, 2026
0ce4150
fix(shell): robust cmd detection + stronger test assertion (review #1…
LeoLin990405 May 17, 2026
f77a07e
feat: Home/End jump to line start/end in multiline composer
aboimpinto May 17, 2026
ba8b4b7
fix: remove skip-past-newline from move_cursor_line_end
aboimpinto May 17, 2026
4a03f83
fix(tui): restore cancelled prompt on ctrl-c
nightt5879 May 18, 2026
710505d
fix(tui): stop rendering after cancel restore
nightt5879 May 18, 2026
4144fc6
test(tui): cover steer prompt restore state
nightt5879 May 18, 2026
912da38
chore(release): prepare v0.8.40
Hmbown May 18, 2026
d106773
test(shell): stabilize Windows background helper
Hmbown May 20, 2026
938d681
ci(cnb): preflight stability release branches
Hmbown May 20, 2026
8597afc
feat(provider): add Wanjie Ark support
Hmbown May 20, 2026
e63a4ba
fix(tui): preserve drafts around mouse reports
Hmbown May 20, 2026
a595edd
fix(logging): rotate TUI logs per process
Hmbown May 20, 2026
eed4c2d
fix(eval): preserve quoted shell payloads
Hmbown May 20, 2026
0e222ed
fix(review): parse encoded JSON output
Hmbown May 20, 2026
f8aa5b9
docs(subagents): clarify detached session lifecycle
Hmbown May 20, 2026
57958dd
fix(feishu): reattach active turns on restart
Hmbown May 20, 2026
ae1bb9d
fix(tui): avoid grayscale luma overflow
Hmbown May 20, 2026
6821f29
fix(rlm): decode stdout lossily
Hmbown May 20, 2026
d065241
fix(tui): clear all displayed cost state
Hmbown May 20, 2026
2c642ec
feat(session): fork conversations inside the TUI
Hmbown May 20, 2026
ad122fd
feat(subagents): make step API timeout configurable
Hmbown May 20, 2026
9f0ff4b
fix(subagents): allow explicit write-role edits
Hmbown May 20, 2026
66b4a5f
fix(tui): rank exact slash aliases first
Hmbown May 20, 2026
b639740
chore: bump CHANGELOG date to 2026-05-21 for v0.8.40 release
Hmbown May 20, 2026
67fb788
fix(tui): harvest final v0.8.40 polish
Hmbown May 21, 2026
26c6607
fix(tui): persist selected model mode
Hmbown May 21, 2026
396b0e8
fix(tui): persist model picker effort
Hmbown May 21, 2026
3c95ead
test(tui): satisfy model picker lint
Hmbown May 21, 2026
faf5e07
feat(tui): add Fin tool-agent and screenshot OCR
Hmbown May 21, 2026
a5501e6
fix(client): keep mutation-tool result confirmations off wire dedup (…
LeoLin990405 May 21, 2026
1ca495f
style: cargo fmt
Hmbown May 21, 2026
c6d73d9
refactor(crates): rename workspace members to codewhale-*
Hmbown May 23, 2026
3efa6aa
feat(cli): rename binaries to codewhale; keep deepseek aliases
Hmbown May 23, 2026
8da9fb7
test(qa-pty): retarget harness at codewhale-tui binary
Hmbown May 23, 2026
23daefb
feat(npm): publish as codewhale; keep deepseek-tui as deprecation shim
Hmbown May 23, 2026
a3acdbe
docs(brand): rename to codewhale across READMEs and docs
Hmbown May 23, 2026
903e453
refactor(strings): rebrand user-facing strings to codewhale
Hmbown May 23, 2026
32ce14d
test(rebrand): residual brand-string cleanup across source and assets
Hmbown May 23, 2026
e132ff1
ci: use codewhale package selectors
Hmbown May 23, 2026
b7e31a7
test: isolate tool-result spillover tests
Hmbown May 23, 2026
ac6fdf4
Merge branch 'main' into rebrand/r1-cargo-workspace
Hmbown May 23, 2026
c09f5bf
fix(subagent): keep agent_eval recoverable after child termination
Hmbown May 23, 2026
d9fb21c
fix(tui): avoid blocking on bare separator mentions
Hmbown May 23, 2026
7a87aeb
fix(tui): move composer history persistence off UI thread
Hmbown May 23, 2026
c675fe6
fix(tui): offload offline queue persistence
Hmbown May 23, 2026
4143409
fix(tui): detach clipboard fallback waits
Hmbown May 23, 2026
ee47d64
fix(tui): quiet animations under tmux
Hmbown May 23, 2026
1777891
docs(readme): mark V4 Pro rates as permanent
Hmbown May 23, 2026
6356a81
fix(tui): launch feedback urls asynchronously
Hmbown May 23, 2026
96b903a
fix(tui): filter terminal control sequence fragments from composer
Hmbown May 23, 2026
9e822a3
fix(tui): hide stale completed tasks from Work sidebar
Hmbown May 23, 2026
cd84ede
Merge remote-tracking branch 'origin/rebrand/r1-cargo-workspace' into…
Hmbown May 23, 2026
3a60a28
Merge remote-tracking branch 'origin/rebrand/r2-binary-names' into wo…
Hmbown May 23, 2026
29f8913
Merge remote-tracking branch 'origin/rebrand/r3-npm-wrapper' into wor…
Hmbown May 23, 2026
cc76f5d
Merge remote-tracking branch 'origin/rebrand/r4-docs-readme' into wor…
Hmbown May 23, 2026
0f03c72
Merge remote-tracking branch 'origin/rebrand/r5-prompts-strings' into…
Hmbown May 23, 2026
f10e8de
Merge remote-tracking branch 'origin/rebrand/r6-tests' into work/v0.8…
Hmbown May 23, 2026
6de8ba3
chore(release): prepare codewhale v0.8.41 test build
Hmbown May 23, 2026
ddaabbf
chore(rebrand): finish codewhale release surfaces
Hmbown May 23, 2026
5fa2473
chore(rebrand): update repository links for CodeWhale
Hmbown May 23, 2026
668c700
ci(release): suppress docker build record artifact
Hmbown May 23, 2026
bb9b26d
fix git status unicode paths
cyq1017 May 23, 2026
8c2235d
Merge PR #1953: Fix git_status output for unicode paths
Hmbown May 23, 2026
41590ed
feat(tools): github_close_pr, handle_read redirection, shell/sidebar …
Hmbown May 23, 2026
cb70daf
fix: include configured and workspace skills in slash menu discovery
cyq1017 May 23, 2026
79151da
Merge PR #1956: Fix local + configured skills discovery in slash menu
Hmbown May 23, 2026
453be36
Fix mode-switch toast dedupe during tab cycling
cyq1017 May 23, 2026
0883643
Merge PR #1957: Fix mode-switch toast stacking on repeated Tab cycles
Hmbown May 23, 2026
393e2ef
fix(help): keep selected row visible while scrolling
reidliu41 May 24, 2026
b7bc877
fix(tui): fail stuck stream turns and smooth RLM handles
Hmbown May 24, 2026
825df6a
chore(release): prepare v0.8.42
Hmbown May 24, 2026
86fda27
test(tui): satisfy configured skills clippy
Hmbown May 24, 2026
90a9dfb
fix(tui): preserve user message formatting
Hmbown May 24, 2026
d1ecb25
fix(tui): preserve CR paste line breaks
Hmbown May 24, 2026
17569c6
feat(tui): add Brother Whale agent identity
Hmbown May 24, 2026
898cf2d
docs(config): add missing openrouter and novita provider sections
Hmbown May 24, 2026
3711517
fix(tui): send xhigh reasoning_effort for OpenRouter and Novita
Hmbown May 24, 2026
c85b692
fix(tui): correct reasoning_effort mapping for OpenRouter and Novita
Hmbown May 24, 2026
e8eaa5d
style(tui): format reasoning effort mapping
Hmbown May 24, 2026
3487945
fix(tui): show reasoning preview inline
Hmbown May 24, 2026
d757505
fix(tui): keep English turns from drifting after localized context
Hmbown May 24, 2026
8a0c875
docs: clarify Fin and model auto-routing
Hmbown May 24, 2026
93c525a
fix(ci): use POSIX shell prologues in CNB
Hmbown May 24, 2026
2947eff
fix(ci): satisfy Rust 1.88 clippy gate
Hmbown May 24, 2026
77432a2
fix(ci): make CNB shim smoke find release binaries
Hmbown May 24, 2026
8878ac0
fix(tui): harvest v0.8.43 candidate fixes
Hmbown May 24, 2026
b94ccd3
fix(installer): pause response streams to prevent checksum manifest r…
Hmbown May 24, 2026
04d2e4a
chore(release): sync 0.8.43 version pins
Hmbown May 24, 2026
3dfc7fb
docs(readme): refresh contributor count and acknowledgements
Hmbown May 24, 2026
92e48ce
docs(release): add v0.8.43 CHANGELOG entry with contributor credits
Hmbown May 24, 2026
e1218e3
docs: clarify sponsor links
Hmbown May 24, 2026
6306feb
fix(build): restore compatible Cargo.lock dependency resolution
Hmbown May 24, 2026
701257e
feat(tui): improve Tasks sidebar inspectability (#1975)
Hmbown May 24, 2026
b773690
docs(release): add Tasks sidebar feature to v0.8.43 CHANGELOG
Hmbown May 24, 2026
3e89ccf
style: cargo fmt
Hmbown May 24, 2026
cf08a1e
docs(web): track FAQ route and ignore generated artifacts
Hmbown May 24, 2026
94426f0
feat(tui): classify and display stall reason in footer
Hmbown May 24, 2026
cdafc37
feat(tui): add decision card widget with keyboard navigation
Hmbown May 24, 2026
243cfe5
fix(tui): reference codewhale doctor in SSE timeout error message
Hmbown May 24, 2026
cc7c4a2
feat(tui): add Goal mode and post-turn receipts
Hmbown May 24, 2026
078fa45
docs(release): update v0.8.43 CHANGELOG with Goal mode, receipts, sta…
Hmbown May 24, 2026
805ec66
feat(tui): add keyboard toggle for thinking block collapse (#1972)
Hmbown May 24, 2026
af59f7a
fix(engine): drain late sub-agent completions before turn break (#1961)
Hmbown May 24, 2026
78d7284
docs(release): add thinking block toggle and sub-agent fix to CHANGELOG
Hmbown May 24, 2026
5469884
fix(docs): refresh stale references and wire decision card rendering
Hmbown May 24, 2026
b0d48d8
style: use clamp() instead of min().max() pattern
Hmbown May 24, 2026
22c2c4b
fix(tui): drop thinking from cell_has_detail_target; credit README co…
Hmbown May 24, 2026
8e4d5b4
Merge pull request #1988 — v0.8.43 release
Hmbown May 24, 2026
8ba573e
fix(tui): remove unused WLCOPY_BIN constant causing dead-code warning…
Hmbown May 24, 2026
7778736
feat: RuntimeTool trait + dotnet execution backend (#1822)
aboimpinto May 24, 2026
14e6898
feat: RuntimeTool trait + dotnet execution backend (#1822)
aboimpinto May 24, 2026
5e2f7ae
fix: LF line endings for dependencies.rs
aboimpinto May 24, 2026
c698f9f
fix: add ExternalTool trait back, revert probe_executable to use --ve…
aboimpinto May 24, 2026
73496e0
fix: add ExternalTool trait impls for all runtime backends
aboimpinto May 24, 2026
0cc36f1
fix: add TypeScript::resolve() method
aboimpinto May 24, 2026
96554bd
fix: replace tokio_command/available with ExternalTool::command
aboimpinto May 24, 2026
e17bfe9
fix: restore correct dependencies.rs with ExternalTool trait
aboimpinto May 24, 2026
84fef72
fix: replace from_std with Into::into for newer tokio versions
aboimpinto May 24, 2026
5a84d60
fix: add type annotation for Into conversion to tokio::process::Command
aboimpinto May 24, 2026
e90621d
fix: add #[allow(dead_code)] to RuntimeTool items not yet wired into …
aboimpinto May 24, 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
152 changes: 128 additions & 24 deletions .cnb.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,114 @@
# CNB is a one-way mirror from GitHub. Keep this file source-controlled here;
# CNB-side edits will be overwritten by the GitHub -> CNB sync workflow.

.feishu_bridge_tests: &feishu_bridge_tests
name: feishu bridge tests
runner:
tags: cnb:arch:amd64
cpus: 8
docker:
image: node:22-bookworm
stages:
- name: feishu bridge tests
script: |
set -eu
cd integrations/feishu-bridge
npm ci
npm run check
npm test

.linux_rust_gates: &linux_rust_gates
name: linux rust gates
runner:
tags: cnb:arch:amd64
cpus: 16
docker:
image: rust:1.88-bookworm
stages:
- name: install linux dependencies
script: |
set -eu
apt-get update
apt-get install -y git libdbus-1-dev nodejs npm pkg-config
if command -v rustup >/dev/null 2>&1; then
rustup component add rustfmt clippy
fi

- name: rust workspace gates
script: |
set -eu
./scripts/release/check-versions.sh
cargo fmt --all -- --check
cargo check --workspace --all-targets --locked
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
cargo test --workspace --all-features --locked

- name: linux npm wrapper smoke
script: |
set -eu
cargo build --release --locked -p codewhale-cli -p codewhale-tui
export PATH="$PWD/target/release:$PATH"
node scripts/release/npm-wrapper-smoke.js
./target/release/codewhale --version
./target/release/codewhale-tui --version
./target/release/deepseek --version
./target/release/deepseek-tui --version

.linux_release_preflight: &linux_release_preflight
name: linux release preflight
runner:
tags: cnb:arch:amd64
cpus: 16
docker:
image: rust:1.88-bookworm
stages:
- name: install release dependencies
script: |
set -eu
apt-get update
apt-get install -y curl git libdbus-1-dev nodejs npm pkg-config
if command -v rustup >/dev/null 2>&1; then
rustup component add rustfmt clippy
fi

- name: rust workspace gates
script: |
set -eu
./scripts/release/check-versions.sh
cargo fmt --all -- --check
cargo check --workspace --all-targets --locked
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
cargo test --workspace --all-features --locked

- name: crate publish dry-run
script: |
set -eu
./scripts/release/publish-crates.sh dry-run

- name: release binary smoke
script: |
set -eu
cargo build --release --locked -p codewhale-cli -p codewhale-tui
export PATH="$PWD/target/release:$PATH"
node scripts/release/npm-wrapper-smoke.js
./target/release/codewhale --version
./target/release/codewhale-tui --version
./target/release/deepseek --version
./target/release/deepseek-tui --version

main:
push:
- docker:
image: node:22-bookworm
stages:
- name: feishu bridge tests
script: |
set -euo pipefail
cd integrations/feishu-bridge
npm ci
npm run check
npm test
- *feishu_bridge_tests
- *linux_rust_gates

- docker:
image: rust:1.88-bookworm
stages:
- name: release version check
script: |
set -euo pipefail
apt-get update
apt-get install -y git libdbus-1-dev nodejs pkg-config
./scripts/release/check-versions.sh
"(fix/*|rebrand/*)":
push:
- *linux_rust_gates

"work/v*":
push:
- *feishu_bridge_tests
- *linux_release_preflight

$:
tag_push:
Expand All @@ -31,23 +117,35 @@ $:
stages:
- name: build linux x64 release assets
script: |
set -euo pipefail
set -eu

apt-get update
apt-get install -y git libdbus-1-dev nodejs pkg-config

./scripts/release/check-versions.sh
cargo build --release --locked -p deepseek-tui-cli -p deepseek-tui
cargo build --release --locked -p codewhale-cli -p codewhale-tui

mkdir -p target/cnb-release
cp target/release/codewhale target/cnb-release/codewhale-linux-x64
cp target/release/codewhale-tui target/cnb-release/codewhale-tui-linux-x64
cp target/release/deepseek target/cnb-release/deepseek-linux-x64
cp target/release/deepseek-tui target/cnb-release/deepseek-tui-linux-x64
strip target/cnb-release/deepseek-linux-x64 target/cnb-release/deepseek-tui-linux-x64 || true
strip \
target/cnb-release/codewhale-linux-x64 \
target/cnb-release/codewhale-tui-linux-x64 \
target/cnb-release/deepseek-linux-x64 \
target/cnb-release/deepseek-tui-linux-x64 \
|| true

(
cd target/cnb-release
sha256sum deepseek-linux-x64 deepseek-tui-linux-x64 \
> deepseek-artifacts-sha256.txt
sha256sum \
codewhale-linux-x64 \
codewhale-tui-linux-x64 \
deepseek-linux-x64 \
deepseek-tui-linux-x64 \
> codewhale-artifacts-sha256.txt
cp codewhale-artifacts-sha256.txt deepseek-artifacts-sha256.txt
)

tag_name="${CNB_BRANCH:-}"
Expand All @@ -68,6 +166,9 @@ $:
echo "Built by CNB from ${commit_sha}."
echo
echo "Assets:"
echo "- codewhale-linux-x64"
echo "- codewhale-tui-linux-x64"
echo "- codewhale-artifacts-sha256.txt"
echo "- deepseek-linux-x64"
echo "- deepseek-tui-linux-x64"
echo "- deepseek-artifacts-sha256.txt"
Expand All @@ -83,6 +184,9 @@ $:
image: cnbcool/attachments:latest
settings:
attachments:
- target/cnb-release/codewhale-linux-x64
- target/cnb-release/codewhale-tui-linux-x64
- target/cnb-release/codewhale-artifacts-sha256.txt
- target/cnb-release/deepseek-linux-x64
- target/cnb-release/deepseek-tui-linux-x64
- target/cnb-release/deepseek-artifacts-sha256.txt
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
crates/tui/src/dependencies.rs text eol=lf
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
github: [Hmbown]
buy_me_a_coffee: hmbown
6 changes: 4 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,18 @@ labels: bug
## Environment

- OS:
- DeepSeek CLI version:
- codewhale version:
- Install method:
- `codewhale doctor` summary:
- Model/provider:
- Terminal app:
- Shell:

<!-- Hints:
OS: Windows 11 / Ubuntu 22.04 / macOS 14
DeepSeek CLI version: run `deepseek --version`
codewhale version: run `codewhale --version`
Install method: cargo install / release binary / source build
codewhale doctor summary: paste only the relevant lines, and redact secrets
Model/provider: deepseek-v4-pro / DeepSeek, or qwen2.5-coder / Ollama
Terminal app: iTerm2 / Windows Terminal / GNOME Terminal / VS Code terminal
Shell: bash / zsh / fish / PowerShell
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ labels: enhancement

## Proposed solution

<!-- What should DeepSeek TUI do differently? Include commands, UI behavior, or config shape if relevant. -->
<!-- What should codewhale do differently? Include commands, UI behavior, or config shape if relevant. -->

## Use case

Expand Down
4 changes: 2 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

## Testing

- [ ] `cargo test --all-features`
- [ ] `cargo fmt --all -- --check`
- [ ] `cargo clippy --all-targets --all-features`
- [ ] `cargo clippy --workspace --all-targets --all-features`
- [ ] `cargo test --workspace --all-features`

## Checklist

Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/update-homebrew-tap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ trap 'rm -rf "${TAP_DIR}" "${FORMULA_FILE}"' EXIT

# --- generate formula --------------------------------------------------

readonly BASE_URL="https://github.com/Hmbown/DeepSeek-TUI/releases/download/${TAG}"
readonly BASE_URL="https://github.com/Hmbown/CodeWhale/releases/download/${TAG}"

cat > "${FORMULA_FILE}" << EOF
class DeepseekTui < Formula
desc "Terminal-native coding agent for DeepSeek V4"
homepage "https://github.com/Hmbown/DeepSeek-TUI"
homepage "https://github.com/Hmbown/CodeWhale"
version "${VERSION}"
license "MIT"

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/auto-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ on:
branches: [main]
paths:
- 'Cargo.toml'
- 'npm/codewhale/package.json'
- 'npm/deepseek-tui/package.json'
workflow_dispatch:

Expand Down
73 changes: 25 additions & 48 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
for i in 1 2 3 4 5; do
sudo apt-get update && break
echo "apt-get update failed (attempt $i); retrying in 15s"
sleep 15
done
sudo apt-get install -y libdbus-1-dev pkg-config
- uses: actions/setup-node@v4
with:
node-version: 20
Expand All @@ -44,55 +35,41 @@ jobs:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
for i in 1 2 3 4 5; do
sudo apt-get update && break
echo "apt-get update failed (attempt $i); retrying in 15s"
sleep 15
done
sudo apt-get install -y libdbus-1-dev pkg-config
- uses: Swatinem/rust-cache@v2
with:
cache-bin: false
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
# Mirror the release-workflow `parity` gate exactly. Anything that
# would fail there must fail here so we never push a `v*` tag that
# the npm publish pipeline can't ship. The Release job runs with
# `--locked` + `-D warnings`; we do the same.
- name: Clippy (release-strict)
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: Linux clippy location
run: echo "Linux clippy/test gates run on CNB for mirrored fix/*, rebrand/*, work/v*, and main branches."

test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Linux workspace tests moved to CNB; GitHub keeps the platform
# coverage CNB cannot provide.
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
if: runner.os != 'Linux'
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
for i in 1 2 3 4 5; do
sudo apt-get update && break
echo "apt-get update failed (attempt $i); retrying in 15s"
sleep 15
done
sudo apt-get install -y libdbus-1-dev pkg-config
if: runner.os != 'Linux'
- uses: Swatinem/rust-cache@v2
if: runner.os != 'Linux'
with:
cache-bin: false
- name: Run tests
if: runner.os != 'Linux'
run: cargo test --workspace --all-features --locked
- name: Lockfile drift guard
if: runner.os != 'Linux'
run: git diff --exit-code -- Cargo.lock
- name: Run Offline Eval Harness
run: cargo run -p deepseek-tui --all-features -- eval
if: runner.os != 'Linux'
run: cargo run -p codewhale-tui --all-features -- eval
- name: Linux test location
if: runner.os == 'Linux'
run: echo "Linux workspace tests run on CNB for mirrored first-party branches."

npm-wrapper-smoke:
name: npm wrapper smoke
Expand All @@ -103,26 +80,26 @@ jobs:
os: ${{ fromJSON(github.event_name == 'pull_request' && '["ubuntu-latest"]' || '["ubuntu-latest","macos-latest","windows-latest"]') }}
steps:
- uses: actions/checkout@v4
if: runner.os != 'Linux'
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
for i in 1 2 3 4 5; do
sudo apt-get update && break
echo "apt-get update failed (attempt $i); retrying in 15s"
sleep 15
done
sudo apt-get install -y libdbus-1-dev pkg-config
if: runner.os != 'Linux'
- uses: actions/setup-node@v4
if: runner.os != 'Linux'
with:
node-version: 20
- uses: Swatinem/rust-cache@v2
if: runner.os != 'Linux'
with:
cache-bin: false
- name: Build wrapper binaries
run: cargo build --release --locked -p deepseek-tui-cli -p deepseek-tui
if: runner.os != 'Linux'
run: cargo build --release --locked -p codewhale-cli -p codewhale-tui
- name: Smoke wrapper install and delegated entrypoints
if: runner.os != 'Linux'
run: node scripts/release/npm-wrapper-smoke.js
- name: Linux smoke location
if: runner.os == 'Linux'
run: echo "Linux npm wrapper smoke runs on CNB for mirrored first-party branches."

# Check documentation builds without warnings
docs:
Expand Down
Loading