diff --git a/CHANGELOG.md b/CHANGELOG.md index e5b029c8..12b10002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/Cargo.lock b/Cargo.lock index b60da19d..fc3c19c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index a860300d..7d75c363 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/README.md b/README.md index 332c632b..e261d78f 100644 --- a/README.md +++ b/README.md @@ -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 ``` diff --git a/README.zh-CN.md b/README.zh-CN.md index 9eadfc6d..c27d98fc 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -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 等镜像。 diff --git a/crates/agent/Cargo.toml b/crates/agent/Cargo.toml index d8506e98..0745d4b3 100644 --- a/crates/agent/Cargo.toml +++ b/crates/agent/Cargo.toml @@ -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 diff --git a/crates/app-server/Cargo.toml b/crates/app-server/Cargo.toml index 991dce75..d0e0623d 100644 --- a/crates/app-server/Cargo.toml +++ b/crates/app-server/Cargo.toml @@ -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 diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index fdf1b551..af286a6c 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -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 diff --git a/crates/config/Cargo.toml b/crates/config/Cargo.toml index d173c236..ea0c3151 100644 --- a/crates/config/Cargo.toml +++ b/crates/config/Cargo.toml @@ -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 diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index c734a9cf..c1aac52d 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -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 diff --git a/crates/execpolicy/Cargo.toml b/crates/execpolicy/Cargo.toml index df8a27a6..1891a5a6 100644 --- a/crates/execpolicy/Cargo.toml +++ b/crates/execpolicy/Cargo.toml @@ -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 diff --git a/crates/hooks/Cargo.toml b/crates/hooks/Cargo.toml index 8f44d8b2..0edef814 100644 --- a/crates/hooks/Cargo.toml +++ b/crates/hooks/Cargo.toml @@ -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 diff --git a/crates/mcp/Cargo.toml b/crates/mcp/Cargo.toml index 036c57a4..f05ce838 100644 --- a/crates/mcp/Cargo.toml +++ b/crates/mcp/Cargo.toml @@ -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 diff --git a/crates/tools/Cargo.toml b/crates/tools/Cargo.toml index fe3e0128..9edb91c8 100644 --- a/crates/tools/Cargo.toml +++ b/crates/tools/Cargo.toml @@ -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 diff --git a/crates/tui/Cargo.toml b/crates/tui/Cargo.toml index 926bb9c5..e880e936 100644 --- a/crates/tui/Cargo.toml +++ b/crates/tui/Cargo.toml @@ -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" diff --git a/npm/deepseek-tui/package.json b/npm/deepseek-tui/package.json index 57169b6c..1154b7ba 100644 --- a/npm/deepseek-tui/package.json +++ b/npm/deepseek-tui/package.json @@ -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",