Releases: liangwythu/deepseek-harness-vscode
Releases · liangwythu/deepseek-harness-vscode
Release list
v0.0.2 — Conversation UX & Architecture Baseline
Conversation UX & Architecture Baseline.
The "main-branch last direct-push release": hardens structure, rendering correctness, and interaction UX so that v0.0.3+ can be developed entirely via feature PRs onto stable boundaries.
Architecture (structural boundary hardening)
- AppController owns all orchestration. extension.ts stays as pure wiring.
- ConversationModel replaces flat SessionModel. Events project into conversation-semantic ConversationItem[].
- Workspace creation split into findHarnessWorkspace() and ensureHarnessWorkspace().
- View split: provider.ts joined by styles.ts, html.ts, client.ts, toolPresentation.ts.
UX fixes
- Lazy workspace + session on first Send — no confirmation modals.
- Tool cards merged: tool/call + tool/result → single ToolItem with collapsed header.
- System messages are their own item kind (SystemItem, not UserItem.system).
- Assistant Markdown rendering via markdown-it inside the webview.
- Streaming text always re-renders via monotonic renderVersion.
Test coverage
- Integration test upgraded to exercise ConversationModel.
- renderVersion strictly increases (1 → 19).
- No tool-call/tool-result kinds leak into ConversationItem.
- systemMessageCount tracked separately.
Discipline
- NOT in v0.0.2: Diff review, approval/respond, inline completion, context injection, filesystem provider, terminal integration, LSP/ACP/SDK abstractions. All start as feature branches/PRs from v0.0.3.
v0.0.1
The first public release. This version proves one thing: VS Code and the browser share the same DeepSeek Harness session.
Browser ─────┐
│
▼
DeepSeek Harness
▲
│
VS Code ─────┘
Same Workspace. Same Session. Same Agent Runtime.
Added
- Connect to a local
dsh webinstance viaHTTP /api/*+WebSocket /api/events.mux. Loopback-only trust fence (127.0.0.1/localhost/::1); other hosts refused. - Workspace mapping — match the active VS Code folder to an existing Harness workspace; offer to create one if absent.
- Session list filtered by the resolved workspace, with
+ New Session. - Session history loaded from the Harness (single source of truth — no local session DB).
- Plain-text prompt sent to the active session.
- Live streaming of
assistant/chunkdeltas + tool activity, coalesced every ~30 ms by EventBuffer (no per-token re-render). - Stop / cancel the active turn.
- Reconnect — on WS close→open, stream reopens + history refetched.
- Open Web UI and Show Logs commands.
- Sidebar webview (vanilla JS, no React).
- Right-side docking (⇲ button) moves view to secondary side bar (like Chat panel).
- System-message hiding — plugin-injected
user/messageframes (e.g.@deepseek-ai/dsh-system-prompt) hidden by default;SYStoggle reveals them. - Brand icon — 128×128 PNG (Marketplace + webview header); SVG activity-bar icon uses
currentColorto adapt to theme. - Protocol fixtures (
test/fixtures/) — sanitized wire-format snapshots for protocol drift detection. - Protocol spike + Integration test — standalone Node validation against a running
dsh web(11/11 checks pass). - Bilingual docs (English / 简体中文): README, ARCHITECTURE, CHANGELOG, RELEASE.
Security
- Method allowlist: only
host.describe,workspace.{list,create},session.{list,history,create,prompt,cancel}. - Never calls
/api/respond,settings.*,credentials.*,commands.*, or any approval/permission mutation. approval/requestedandquestion/requestedframes surface an informational banner only — never auto-respond.
Verified against
- DeepSeek Harness host
v0.0.1(@deepseek-ai/dsh-root), defaultdsh webport3080. - Wire contract source:
packages/host/apiproxy/src/api/(authoritative). - Integration test: 11/11 checks.
Install
code --install-extension deepseek-harness-vscode-0.0.1.vsix