chore: release v0.8.2 — Windows build fix, npm offline, model-visible skills, zh-CN README
Bumps workspace, all internal path-deps, and npm wrapper (version + deepseekBinaryVersion) from 0.8.1 → 0.8.2. Lockfile re-locked offline to keep the registry index untouched. Triggers auto-tag.yml on push, which creates v0.8.2 and fires release.yml to build cross-platform binaries and draft the GitHub Release. npm publish remains manual per CLAUDE.md release runbook. Note: npm registry already has 0.8.2 published (with binaryVersion 0.8.1 from an earlier checkpoint). That release keeps working unchanged because v0.8.1 binaries stay on GitHub. Repo state aligns to 0.8.2 so the version-drift gate passes; next npm publish (which will need to be 0.8.3 since 0.8.2 is taken) will pick up binaryVersion=0.8.2 and pull the new binaries. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.8.2] - 2026-05-01
|
||||
|
||||
### Fixed
|
||||
- **Windows release build (LNK1104)** — drop the `deepseek` shim binary in
|
||||
`crates/tui` that 0.8.1 introduced for the bundled `cargo install`. It
|
||||
produced a second `target/release/deepseek.exe` that collided with the
|
||||
`deepseek-tui-cli` artifact during workspace builds; the second linker
|
||||
invocation hit `LNK1104: cannot open file deepseek.exe` on Windows. The
|
||||
cli crate is now the single source of `deepseek`; workspace default
|
||||
members still produce both binaries (one per crate).
|
||||
- **npm wrapper offline robustness** — `bin/deepseek(-tui).js` no longer
|
||||
re-fetches the GitHub-hosted SHA-256 checksum manifest on every invocation.
|
||||
When the binary is already installed and its `.version` marker matches the
|
||||
package version, the wrapper trusts the local file. The manifest is fetched
|
||||
lazily on actual download (first install or `DEEPSEEK_TUI_FORCE_DOWNLOAD=1`),
|
||||
so GitHub flakes, captive portals, corporate proxies, and offline state no
|
||||
longer break every command.
|
||||
|
||||
### Added
|
||||
- **Model-visible skills block** — installed skills (name, description, file
|
||||
path) are now exposed in the agent's system prompt under a `## Skills`
|
||||
section, with progressive disclosure: bodies stay on disk, the model opens a
|
||||
specific `SKILL.md` only when it decides to use that skill. Capped at a 12k
|
||||
prompt budget with 512-char per-description truncation. Threaded through
|
||||
`EngineConfig.skills_dir` so the TUI app, exec agent, and runtime thread
|
||||
manager all populate it from `Config::skills_dir()`.
|
||||
- **Simplified Chinese README** (`README.zh-CN.md`) with cross-link from the
|
||||
English README.
|
||||
|
||||
### Changed
|
||||
- **`cargo install` UX** — to install the canonical `deepseek` command,
|
||||
`cargo install deepseek-tui-cli` (the historical path). The 0.8.1
|
||||
one-command flow (`cargo install deepseek-tui` providing both binaries) is
|
||||
reverted because it broke Windows release builds; install both packages
|
||||
separately if you want the TUI binary too.
|
||||
|
||||
## [0.8.1] - 2026-05-01
|
||||
|
||||
### Fixed
|
||||
|
||||
Generated
+14
-14
@@ -1011,7 +1011,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-agent"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"deepseek-config",
|
||||
"serde",
|
||||
@@ -1019,7 +1019,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-app-server"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -1042,7 +1042,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-config"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-secrets",
|
||||
@@ -1055,7 +1055,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-core"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1074,7 +1074,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-execpolicy"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-protocol",
|
||||
@@ -1083,7 +1083,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-hooks"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1097,7 +1097,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-mcp"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-protocol",
|
||||
@@ -1107,7 +1107,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-protocol"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -1115,7 +1115,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-secrets"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"keyring",
|
||||
@@ -1128,7 +1128,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-state"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1140,7 +1140,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tools"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1153,7 +1153,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arboard",
|
||||
@@ -1214,7 +1214,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui-cli"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1237,7 +1237,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui-core"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/Hmbown/DeepSeek-TUI"
|
||||
|
||||
@@ -59,10 +59,12 @@ replace-with = "tuna"
|
||||
registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
|
||||
```
|
||||
|
||||
Then install the shipped binaries from the main package:
|
||||
Then install the canonical `deepseek` dispatcher and (optionally) the
|
||||
companion TUI binary:
|
||||
|
||||
```bash
|
||||
cargo install deepseek-tui --locked
|
||||
cargo install deepseek-tui-cli --locked # provides `deepseek`
|
||||
cargo install deepseek-tui --locked # provides `deepseek-tui` (optional)
|
||||
deepseek --version
|
||||
```
|
||||
|
||||
|
||||
+5
-4
@@ -69,17 +69,18 @@ replace-with = "tuna"
|
||||
registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
|
||||
```
|
||||
|
||||
然后从主包安装已发布的两个二进制文件:
|
||||
然后从对应的包安装:
|
||||
|
||||
```bash
|
||||
cargo install deepseek-tui --locked
|
||||
cargo install deepseek-tui-cli --locked # 提供推荐入口 `deepseek`
|
||||
cargo install deepseek-tui --locked # 可选:提供 TUI 伴随二进制 `deepseek-tui`
|
||||
deepseek --version
|
||||
deepseek doctor --json
|
||||
```
|
||||
|
||||
从 `v0.8.1` 开始,`deepseek-tui` 这个主 Cargo 包会同时安装:
|
||||
从 `v0.8.2` 起回到分包安装:
|
||||
|
||||
- `deepseek`:推荐使用的调度器入口。
|
||||
- `deepseek-tui-cli`:推荐使用的调度器入口(`deepseek`)。
|
||||
- `deepseek-tui`:交互式 TUI 伴随二进制。
|
||||
|
||||
也可以直接从 [GitHub Releases](https://github.com/Hmbown/DeepSeek-TUI/releases) 下载预编译二进制。如果你有镜像后的 release 资产目录,也可以配合 `DEEPSEEK_TUI_RELEASE_BASE_URL` 使用 TUNA、rsproxy、腾讯云 COS 或阿里云 OSS 等镜像。
|
||||
|
||||
@@ -7,5 +7,5 @@ repository.workspace = true
|
||||
description = "Model/provider registry and fallback strategy for DeepSeek workspace architecture"
|
||||
|
||||
[dependencies]
|
||||
deepseek-config = { path = "../config", version = "0.8.1" }
|
||||
deepseek-config = { path = "../config", version = "0.8.2" }
|
||||
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
|
||||
deepseek-agent = { path = "../agent", version = "0.8.1" }
|
||||
deepseek-config = { path = "../config", version = "0.8.1" }
|
||||
deepseek-core = { path = "../core", version = "0.8.1" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.1" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.8.1" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-state = { path = "../state", version = "0.8.1" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.1" }
|
||||
deepseek-agent = { path = "../agent", version = "0.8.2" }
|
||||
deepseek-config = { path = "../config", version = "0.8.2" }
|
||||
deepseek-core = { path = "../core", version = "0.8.2" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.2" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.8.2" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.2" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
deepseek-state = { path = "../state", version = "0.8.2" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.2" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
tokio.workspace = true
|
||||
|
||||
@@ -14,13 +14,13 @@ path = "src/main.rs"
|
||||
anyhow.workspace = true
|
||||
clap.workspace = true
|
||||
clap_complete.workspace = true
|
||||
deepseek-agent = { path = "../agent", version = "0.8.1" }
|
||||
deepseek-app-server = { path = "../app-server", version = "0.8.1" }
|
||||
deepseek-config = { path = "../config", version = "0.8.1" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.1" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.1" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.1" }
|
||||
deepseek-state = { path = "../state", version = "0.8.1" }
|
||||
deepseek-agent = { path = "../agent", version = "0.8.2" }
|
||||
deepseek-app-server = { path = "../app-server", version = "0.8.2" }
|
||||
deepseek-config = { path = "../config", version = "0.8.2" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.2" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.2" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.2" }
|
||||
deepseek-state = { path = "../state", version = "0.8.2" }
|
||||
chrono.workspace = true
|
||||
dirs.workspace = true
|
||||
serde.workspace = true
|
||||
|
||||
@@ -8,7 +8,7 @@ description = "Config schema and precedence model for DeepSeek workspace archite
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.1" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.2" }
|
||||
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
|
||||
deepseek-agent = { path = "../agent", version = "0.8.1" }
|
||||
deepseek-config = { path = "../config", version = "0.8.1" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.1" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.8.1" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-state = { path = "../state", version = "0.8.1" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.1" }
|
||||
deepseek-agent = { path = "../agent", version = "0.8.2" }
|
||||
deepseek-config = { path = "../config", version = "0.8.2" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.8.2" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.8.2" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.8.2" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
deepseek-state = { path = "../state", version = "0.8.2" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.2" }
|
||||
serde_json.workspace = true
|
||||
tokio.workspace = true
|
||||
uuid.workspace = true
|
||||
|
||||
@@ -8,5 +8,5 @@ description = "Execution policy and approval model parity for DeepSeek workspace
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
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
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
reqwest.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -8,6 +8,6 @@ description = "MCP server lifecycle and tool proxy compatibility for DeepSeek wo
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
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
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.1" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.8.2" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
tokio.workspace = true
|
||||
|
||||
@@ -14,9 +14,9 @@ path = "src/main.rs"
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
arboard = "3.4"
|
||||
deepseek-tui-cli = { path = "../cli", version = "0.8.1" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.1" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.1" }
|
||||
deepseek-tui-cli = { path = "../cli", version = "0.8.2" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.8.2" }
|
||||
deepseek-tools = { path = "../tools", version = "0.8.2" }
|
||||
async-stream = "0.3.6"
|
||||
async-trait = "0.1"
|
||||
bytes = "1.11.0"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "deepseek-tui",
|
||||
"version": "0.8.2",
|
||||
"deepseekBinaryVersion": "0.8.1",
|
||||
"deepseekBinaryVersion": "0.8.2",
|
||||
"description": "Install and run deepseek and deepseek-tui binaries from GitHub release artifacts.",
|
||||
"author": "Hmbown",
|
||||
"license": "MIT",
|
||||
|
||||
Reference in New Issue
Block a user