Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 29 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.8.67] - 2026-07-05

### Added

- Added Meituan LongCat as a first-class OpenAI-compatible provider (`longcat`
with `long-cat`/`meituan-longcat`/`meituan` aliases), `LONGCAT_API_KEY`
discovery, the `LongCat-2.0` default model and the
`https://api.longcat.chat/openai/v1` endpoint, with provider-picker wiring,
model completions, and provider docs.
- Surfaced every shipped UI locale in the first-run language picker: `es-419`
and `vi` are now offered (options 7–8) and the footer range is corrected to
"1-8", with guard tests that keep the picker in sync with `Locale::shipped()`
(#3929).
- Added a website localization matrix with a locale registry and drift checks.
Harvested from #3763 by @idling11.

Expand All @@ -19,6 +30,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- Persisted `/plugin enable|disable` overrides across restarts so a disabled
(or enabled) plugin no longer resets on the next launch (#3918).
- Unified the terminal display-width contract on a single helper, fixing the
pending-input preview's word-wrap on tab/control characters (#3924).
- Made skill-name lookup reachable and warned on shadowing: discovered skill
names are normalized/slugified for dispatch, and duplicate normalized names —
across roots and within a single root — now warn instead of silently
shadowing (#3919).
- Removed the unenforced skills trust / `allowed-tools` copy that implied
sandboxing that is not applied (#3920).
- Repaired the onboarding Trust step so `Enter` no longer silently grants
workspace trust (it guides to the explicit keys), and fixed the API-key
step's `Esc` navigation (#3926, #3927).
- Surfaced a visible notice when a gated custom Constitution override is
present but the opt-in flag is unset, instead of only a `tracing::warn`
(#3928).
- Raised the streamed model-response idle timeout and matched the TUI stall
watchdog to the configured stream budget so long reasoning pauses are not
recovered as stalled turns (#2487).
Expand Down Expand Up @@ -2626,7 +2653,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.66...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.67...HEAD
[0.8.67]: https://github.com/Hmbown/CodeWhale/compare/v0.8.66...v0.8.67
[0.8.66]: https://github.com/Hmbown/CodeWhale/compare/v0.8.65...v0.8.66
[0.8.65]: https://github.com/Hmbown/CodeWhale/compare/v0.8.64...v0.8.65
[0.8.64]: https://github.com/Hmbown/CodeWhale/compare/v0.8.63...v0.8.64
Expand Down
30 changes: 15 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.66"
version = "0.8.67"
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
6 changes: 3 additions & 3 deletions README.ja-JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Rust 製の TUI と CLI、25 のプロバイダ。DeepSeek、OpenRouter、Huggin

```bash
npm install -g codewhale
codewhale --version # 0.8.66
codewhale --version # 0.8.67
```

npm wrapper(Node 18+)は GitHub Releases から SHA-256 検証済みのバイナリをダウンロードし、`codewhale`、`codew`、`codewhale-tui` をインストールします。ソースからビルドしたい場合は cargo(Rust 1.88+)で:
Expand All @@ -44,8 +44,8 @@ nix run github:Hmbown/CodeWhale
scoop install codewhale # または GitHub Releases の NSIS インストーラ

# GitHub に安定して到達できない場合の CNB ミラー
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-tui --locked --force

# 旧 Homebrew 互換。formula の改名が完了するまで deepseek-tui 名のままです
brew tap Hmbown/deepseek-tui
Expand Down
6 changes: 3 additions & 3 deletions README.ko-KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ CodeWhale이 실제 라우트를 해석해 실행합니다.

```bash
npm install -g codewhale
codewhale --version # 0.8.66
codewhale --version # 0.8.67
```

npm 래퍼(Node 18+)는 GitHub Releases에서 SHA-256으로 검증된 바이너리를
Expand Down Expand Up @@ -64,8 +64,8 @@ nix run github:Hmbown/CodeWhale
scoop install codewhale # or the NSIS installer from GitHub Releases

# CNB mirror for users who cannot reliably reach GitHub
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-tui --locked --force

# Legacy Homebrew compatibility while the formula is renamed
brew tap Hmbown/deepseek-tui
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ open an issue — that's how the project grows.

```bash
npm install -g codewhale
codewhale --version # 0.8.66
codewhale --version # 0.8.67
```

The npm wrapper (Node 18+) downloads SHA-256-verified binaries from GitHub
Expand Down Expand Up @@ -62,8 +62,8 @@ nix run github:Hmbown/CodeWhale
scoop install codewhale # or the NSIS installer from GitHub Releases

# CNB mirror for users who cannot reliably reach GitHub
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-tui --locked --force

# Legacy Homebrew compatibility while the formula is renamed
brew tap Hmbown/deepseek-tui
Expand Down
6 changes: 3 additions & 3 deletions README.vi.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ bằng `/restore` cho mọi lượt.

```bash
npm install -g codewhale
codewhale --version # 0.8.66
codewhale --version # 0.8.67
```

Wrapper npm (Node 18+) tải binary đã xác minh SHA-256 từ GitHub Releases và
Expand Down Expand Up @@ -50,8 +50,8 @@ nix run github:Hmbown/CodeWhale
scoop install codewhale # hoặc trình cài NSIS từ GitHub Releases

# CNB mirror cho người dùng khó truy cập GitHub ổn định
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-tui --locked --force

# Homebrew legacy trong lúc formula đang được đổi tên
brew tap Hmbown/deepseek-tui
Expand Down
6 changes: 3 additions & 3 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ DeepInfra 以及本地 vLLM/SGLang/Ollama 都是一等路由;当你手里是 A

```bash
npm install -g codewhale
codewhale --version # 0.8.66
codewhale --version # 0.8.67
```

npm wrapper(Node 18+)会从 GitHub Releases 下载经 SHA-256 校验的二进制,并安装
Expand Down Expand Up @@ -49,8 +49,8 @@ nix run github:Hmbown/CodeWhale
scoop install codewhale # 或使用 GitHub Releases 中的 NSIS 安装包

# CNB 镜像:适合无法稳定访问 GitHub 的用户
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.66 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.67 codewhale-tui --locked --force

# 旧 Homebrew 兼容路径:formula 改名期间仍沿用 deepseek-tui
brew tap Hmbown/deepseek-tui
Expand Down
11 changes: 10 additions & 1 deletion config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# `api_key` / `base_url` are
# still read as DeepSeek defaults when `[providers.deepseek]` is absent
# (backward compatibility).
provider = "deepseek" # deepseek | deepseek-cn | deepseek-anthropic | nvidia-nim | openai | atlascloud | wanjie-ark | volcengine | openrouter | xiaomi-mimo | novita | fireworks | siliconflow | siliconflow-CN | arcee | moonshot | zai | stepfun | minimax | sglang | vllm | ollama | huggingface | together | qianfan | openai-codex | anthropic | openmodel | deepinfra | sakana
provider = "deepseek" # deepseek | deepseek-cn | deepseek-anthropic | nvidia-nim | openai | atlascloud | wanjie-ark | volcengine | openrouter | xiaomi-mimo | novita | fireworks | siliconflow | siliconflow-CN | arcee | moonshot | zai | stepfun | minimax | sglang | vllm | ollama | huggingface | together | qianfan | openai-codex | anthropic | openmodel | deepinfra | sakana | longcat
api_key = "YOUR_DEEPSEEK_API_KEY" # must be non-empty
base_url = "https://api.deepseek.com/beta"
# provider = "deepseek-cn" # legacy alias (official host is still https://api.deepseek.com)
Expand Down Expand Up @@ -553,6 +553,15 @@ max_subagents = 10 # optional (1-20)
# base_url = "https://api.sakana.ai/v1"
# model = "fugu" # or fugu-ultra-20260615

# Meituan LongCat Provider (https://longcat.chat/platform)
# OpenAI-compatible curated gateway for Meituan's LongCat models.
# Provider aliases: longcat, long-cat, meituan-longcat, meituan
# Env var aliases: LONGCAT_API_KEY
[providers.longcat]
# api_key = "YOUR_LONGCAT_API_KEY"
# base_url = "https://api.longcat.chat/openai/v1"
# model = "LongCat-2.0"

# ─────────────────────────────────────────────────────────────────────────────────
# Together AI Provider (https://www.together.ai/)
# Env var aliases: TOGETHER_API_KEY, TOGETHER_BASE_URL, TOGETHER_MODEL
Expand Down
2 changes: 1 addition & 1 deletion crates/agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ repository.workspace = true
description = "Model/provider registry and fallback strategy for CodeWhale"

[dependencies]
codewhale-config = { path = "../config", version = "0.8.66" }
codewhale-config = { path = "../config", version = "0.8.67" }
serde.workspace = true
8 changes: 8 additions & 0 deletions crates/agent/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,14 @@ impl Default for ModelRegistry {
supports_tools: true,
supports_reasoning: true,
},
// Meituan LongCat (https://longcat.chat/platform)
ModelInfo {
id: "LongCat-2.0".to_string(),
provider: ProviderKind::LongCat,
aliases: vec!["longcat".to_string(), "longcat-2.0".to_string()],
supports_tools: true,
supports_reasoning: true,
},
];
Self::new(models)
}
Expand Down
18 changes: 9 additions & 9 deletions crates/app-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ autobins = false
anyhow.workspace = true
axum.workspace = true
clap.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.66" }
codewhale-config = { path = "../config", version = "0.8.66" }
codewhale-core = { path = "../core", version = "0.8.66" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.66" }
codewhale-hooks = { path = "../hooks", version = "0.8.66" }
codewhale-mcp = { path = "../mcp", version = "0.8.66" }
codewhale-protocol = { path = "../protocol", version = "0.8.66" }
codewhale-state = { path = "../state", version = "0.8.66" }
codewhale-tools = { path = "../tools", version = "0.8.66" }
codewhale-agent = { path = "../agent", version = "0.8.67" }
codewhale-config = { path = "../config", version = "0.8.67" }
codewhale-core = { path = "../core", version = "0.8.67" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.67" }
codewhale-hooks = { path = "../hooks", version = "0.8.67" }
codewhale-mcp = { path = "../mcp", version = "0.8.67" }
codewhale-protocol = { path = "../protocol", version = "0.8.67" }
codewhale-state = { path = "../state", version = "0.8.67" }
codewhale-tools = { path = "../tools", version = "0.8.67" }
serde.workspace = true
serde_json.workspace = true
rustls.workspace = true
Expand Down
16 changes: 8 additions & 8 deletions crates/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.66" }
codewhale-app-server = { path = "../app-server", version = "0.8.66" }
codewhale-config = { path = "../config", version = "0.8.66" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.66" }
codewhale-mcp = { path = "../mcp", version = "0.8.66" }
codewhale-release = { path = "../release", version = "0.8.66" }
codewhale-secrets = { path = "../secrets", version = "0.8.66" }
codewhale-state = { path = "../state", version = "0.8.66" }
codewhale-agent = { path = "../agent", version = "0.8.67" }
codewhale-app-server = { path = "../app-server", version = "0.8.67" }
codewhale-config = { path = "../config", version = "0.8.67" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.67" }
codewhale-mcp = { path = "../mcp", version = "0.8.67" }
codewhale-release = { path = "../release", version = "0.8.67" }
codewhale-secrets = { path = "../secrets", version = "0.8.67" }
codewhale-state = { path = "../state", version = "0.8.67" }
chrono.workspace = true
dirs.workspace = true
serde.workspace = true
Expand Down
Loading
Loading