chore(release): v0.7.0
This commit is contained in:
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.7.0] - 2026-04-28
|
||||
|
||||
### Added
|
||||
- OS keyring-backed auth storage with `deepseek auth` subcommands, migration from plaintext config, provider-aware key resolution, and doctor visibility. (#134)
|
||||
- Egress network policy with allow/deny/prompt decisions, deny-wins matching, audit logging, and enforcement hooks for network-capable tools. (#135)
|
||||
- Side-git workspace snapshots, `/restore`, and `revert_turn` so agent edits can be rolled back without moving the user's repository HEAD. (#137)
|
||||
- Esc-Esc backtrack over prior user turns, desktop turn-complete notifications, Alt+V tool-details access, safer command-prefix auto-allow matching, bundled `skill-creator`, and `/skill install` management for community skills. (#131, #132, #133, #138, #139, #140)
|
||||
|
||||
### Changed
|
||||
- Split more engine/tool primitives into focused modules and workspace crates, including shared tool result primitives and extracted turn/capacity flow. (#67, #74)
|
||||
|
||||
### Tests
|
||||
- Added mock LLM and skill-install integration coverage for streaming turns, reasoning replay, tool-call loops, network policy, and skill validation. (#69, #140)
|
||||
|
||||
## [0.6.5] - 2026-04-27
|
||||
|
||||
### Added
|
||||
|
||||
Generated
+14
-14
@@ -1011,7 +1011,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-agent"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"deepseek-config",
|
||||
"serde",
|
||||
@@ -1019,7 +1019,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-app-server"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -1042,7 +1042,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-config"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-secrets",
|
||||
@@ -1055,7 +1055,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-core"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1074,7 +1074,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-execpolicy"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-protocol",
|
||||
@@ -1083,7 +1083,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-hooks"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1097,7 +1097,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-mcp"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"deepseek-protocol",
|
||||
@@ -1107,7 +1107,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-protocol"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -1115,7 +1115,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-secrets"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"keyring",
|
||||
@@ -1128,7 +1128,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-state"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1140,7 +1140,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tools"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1153,7 +1153,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arboard",
|
||||
@@ -1213,7 +1213,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui-cli"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1236,7 +1236,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deepseek-tui-core"
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.6.7"
|
||||
version = "0.7.0"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://github.com/Hmbown/DeepSeek-TUI"
|
||||
|
||||
@@ -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.6.0" }
|
||||
deepseek-config = { path = "../config", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-config = { path = "../config", version = "0.6.0" }
|
||||
deepseek-core = { path = "../core", version = "0.6.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.6.0" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.6.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.6.0" }
|
||||
deepseek-state = { path = "../state", version = "0.6.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.6.0" }
|
||||
deepseek-agent = { path = "../agent", version = "0.7.0" }
|
||||
deepseek-config = { path = "../config", version = "0.7.0" }
|
||||
deepseek-core = { path = "../core", version = "0.7.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.7.0" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.7.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.7.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
deepseek-state = { path = "../state", version = "0.7.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-app-server = { path = "../app-server", version = "0.6.0" }
|
||||
deepseek-config = { path = "../config", version = "0.6.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.6.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.6.0" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.6.0" }
|
||||
deepseek-state = { path = "../state", version = "0.6.0" }
|
||||
deepseek-agent = { path = "../agent", version = "0.7.0" }
|
||||
deepseek-app-server = { path = "../app-server", version = "0.7.0" }
|
||||
deepseek-config = { path = "../config", version = "0.7.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.7.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.7.0" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.7.0" }
|
||||
deepseek-state = { path = "../state", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-config = { path = "../config", version = "0.6.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.6.0" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.6.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.6.0" }
|
||||
deepseek-state = { path = "../state", version = "0.6.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.6.0" }
|
||||
deepseek-agent = { path = "../agent", version = "0.7.0" }
|
||||
deepseek-config = { path = "../config", version = "0.7.0" }
|
||||
deepseek-execpolicy = { path = "../execpolicy", version = "0.7.0" }
|
||||
deepseek-hooks = { path = "../hooks", version = "0.7.0" }
|
||||
deepseek-mcp = { path = "../mcp", version = "0.7.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
deepseek-state = { path = "../state", version = "0.7.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
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.6.0" }
|
||||
deepseek-protocol = { path = "../protocol", version = "0.7.0" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
tokio.workspace = true
|
||||
|
||||
@@ -13,8 +13,8 @@ path = "src/main.rs"
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
arboard = "3.4"
|
||||
deepseek-secrets = { path = "../secrets", version = "0.6.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.6.0" }
|
||||
deepseek-secrets = { path = "../secrets", version = "0.7.0" }
|
||||
deepseek-tools = { path = "../tools", version = "0.7.0" }
|
||||
async-stream = "0.3.6"
|
||||
async-trait = "0.1"
|
||||
bytes = "1.11.0"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "deepseek-tui",
|
||||
"version": "0.6.7",
|
||||
"deepseekBinaryVersion": "0.6.7",
|
||||
"version": "0.7.0",
|
||||
"deepseekBinaryVersion": "0.7.0",
|
||||
"description": "Install and run deepseek and deepseek-tui binaries from GitHub release artifacts.",
|
||||
"author": "Hmbown",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
# crate must inherit `version.workspace = true`.
|
||||
# 2. `npm/deepseek-tui/package.json` `version` matches the workspace
|
||||
# `version` in the root `Cargo.toml`.
|
||||
# 3. `Cargo.lock` is in sync with the manifests (`cargo metadata --locked`
|
||||
# 3. Internal `deepseek-*` path dependency pins match the workspace version.
|
||||
# 4. `Cargo.lock` is in sync with the manifests (`cargo metadata --locked`
|
||||
# fails if not).
|
||||
set -euo pipefail
|
||||
|
||||
@@ -31,7 +32,18 @@ if [[ "${workspace_version}" != "${npm_version}" ]]; then
|
||||
fail=1
|
||||
fi
|
||||
|
||||
# 3) Cargo.lock in sync.
|
||||
# 3) Internal path dependency pins.
|
||||
internal_dep_drift="$(
|
||||
grep -nE 'deepseek-[a-z-]+[[:space:]]*=[[:space:]]*\{[^}]*version[[:space:]]*=[[:space:]]*"' crates/*/Cargo.toml \
|
||||
| grep -v "version[[:space:]]*=[[:space:]]*\"${workspace_version}\"" || true
|
||||
)"
|
||||
if [[ -n "${internal_dep_drift}" ]]; then
|
||||
echo "::error::Internal deepseek-* path dependency versions must match workspace version ${workspace_version}:" >&2
|
||||
echo "${internal_dep_drift}" >&2
|
||||
fail=1
|
||||
fi
|
||||
|
||||
# 4) Cargo.lock in sync.
|
||||
if ! cargo metadata --locked --format-version 1 --no-deps >/dev/null 2>&1; then
|
||||
echo "::error::Cargo.lock is out of sync with the manifests. Run 'cargo update -p deepseek-tui' or 'cargo build' and commit the result." >&2
|
||||
fail=1
|
||||
|
||||
Reference in New Issue
Block a user