dsh-super-kanban 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,193 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.0] - 2026-11-08
11
+
12
+ ### Added
13
+
14
+ - **AI analysis through the DSH native model service**: analysis requests now go
15
+ through DSH's `llm` service instead of the plugin's built-in DeepSeek API
16
+ client. Model catalogue, default model, third-party providers and credentials
17
+ are all managed by DSH; the plugin no longer reads `.credentials.yaml` or
18
+ hard-codes a model endpoint, and old DSH builds without the service fall back
19
+ to the rules engine with an explicit scan message.
20
+ - **AI model selection**: new board settings `aiProvider`/`aiModel` (empty =
21
+ follow the DSH default model, which is a live reference), an “AI 研判模型”
22
+ block in the settings dialog with a native grouped select and a refresh
23
+ button, and support for models configured in **DSH Settings → Models**
24
+ (catalogue providers or custom OpenAI/Anthropic-compatible endpoints), which
25
+ become selectable without restarting the board.
26
+ - **Model catalogue endpoint** `GET /super-kanban/api/ai/models` (flat
27
+ `{ok, catalogAvailable, default, providers, models, failures, fetchedAt}`,
28
+ owner-only, 30s host cache, per-provider failure isolation) and
29
+ `task.ai.provider` for the drawer (“provider / model”; rules results now carry
30
+ `model:""`, `provider:null`).
31
+ - **Automatic AI budget**: new `settings.aiBudgetMode` (`"auto"` default =
32
+ min(sessions due this scan, daily remainder) or `"fixed"`); the per-scan limit
33
+ `maxAiCallsPerScan` can now be set up to **150** (5–150, fixed mode only), the
34
+ daily limit stays 150 budget units, and a 10-minute AI-phase wall clock plus a
35
+ 5-minute per-session failure cooldown keep long scans bounded.
36
+ - **Budget observability and continuation**: new optional scan fields
37
+ `aiDue/aiBudget/aiAttempts/aiPending/aiDeferredReason`; scans prioritise
38
+ never-analysed sessions, then changed, then most recently active; messages
39
+ such as “剩余 N 个会话下次扫描继续” / “今日 AI 预算已用完(150/150)· 剩余 N 个会话明日继续”
40
+ explain deferred work, and the settings page shows used/limit/remaining,
41
+ tokens and the last scan.
42
+
43
+ - **Task-level AI review and re-analysis**: the drawer shows an “AI 研判 / 规则推断”
44
+ block (engine, model, confidence, last-analysis time, one-line reason) and a
45
+ “重新研判” action in the ⋯ menu that reruns `task.analyze` for a single card.
46
+ “可能已过期” appears only when the source session has activity newer than the
47
+ analysis; re-analysis reports engine/calls/tokens in a toast.
48
+ - **Persistent scan outcome** in the board header: the last-scan line keeps the
49
+ host message (sessions processed, AI calls/tokens, “本次无 AI 调用”, budget
50
+ fallback, cancellation, failure + retry), and the scan button reads
51
+ “扫描(仅规则)” when AI is disabled.
52
+ - **Accessibility and keyboard support**: dialogs/drawer use `role="dialog"` +
53
+ `aria-modal` + `aria-labelledby` with a focus trap and focus restore; cards are
54
+ keyboard-openable with visible focus rings; icon-only buttons have
55
+ `aria-label`s; subtask rows are real toggle + delete buttons; toasts and scan
56
+ state are announced via `aria-live`; Esc closes the topmost layer.
57
+ - **Board and drawer usability**: backlog/archived counts in the summary (zero
58
+ values hidden), expand-all for issues/next steps, draft edits survive
59
+ background polls (with a quiet “后台已更新” note), the continue prompt keeps
60
+ user edits when the target changes, search covers goal/key facts/issues/next
61
+ steps, completed cards no longer draw the coloured progress line, archived
62
+ cards get a “已归档” marker, and the right-sidebar workspace filter stays
63
+ visible at every width.
64
+ - **Backend**: new test-covered modules `server/auth.mjs`, `server/http.mjs` and
65
+ `server/titles.mjs`; the host test suite grew from 55 to 177 tests
66
+ (`sessions`, `service`, `store-robustness`, `http`, `auth`, `titles`,
67
+ `host-entry`, `analyzer-llm`); `server/sessions.mjs` now parses session-event
68
+ payloads from `event.data` (lineage/cwd had silently fallen back to the
69
+ projection cache).
70
+ - **CI/CD**: `scripts/check-docs.mjs` and `scripts/check-version.mjs` with
71
+ `npm run check` / `check:docs` / `check:version` aggregates wired into CI and
72
+ the release workflow; non-blocking coverage report; stricter `npm pack`
73
+ contents assertions; Dependabot for GitHub Actions.
74
+ - Maintainer documentation for the git-ignored `dev/` and
75
+ `internal/docs-internal/` trees, plus reproducible dev scripts.
76
+
77
+ ### Changed
78
+
79
+ - **AI budget default behaviour change**: upgrading from 0.4.x switches the AI
80
+ budget from a fixed 40 calls to “auto” (up to the daily remainder). The daily
81
+ limit (150), the local-day rollover and the rules-engine fallback are
82
+ unchanged; pick “固定 40 次” in settings to restore the old behaviour.
83
+ - **Analysis results record the provider**: the drawer shows provider / model
84
+ for new analyses; `task.ai.model` is empty and `task.ai.provider` is `null`
85
+ for rules results (the rules engine no longer copies the deprecated
86
+ `settings.model`). Existing tasks are not rewritten and keep rendering with
87
+ the model they show today.
88
+ - **Old clients stay compatible**: a `settings.update` whose patch contains
89
+ only the budget keys (`maxAiCallsPerScan`/`dailyAiCallLimit`, no
90
+ `aiBudgetMode`) is treated as `"fixed"` for that update; a legacy page saving
91
+ its full settings form no longer silently switches an auto budget to fixed.
92
+ Loading an old `state.json` still defaults to `"auto"`.
93
+ - `settings.model` is deprecated and no longer used for analysis; it is kept
94
+ only for old-state / old-client compatibility and will be removed in v0.6.
95
+ - README (zh/en), SECURITY, CONTRACT, ARCHITECTURE, DESIGN, INSTALL, MARKET and
96
+ TROUBLESHOOTING now describe the DSH-native model path, third-party data
97
+ recipients, the new budget semantics and the 0.5 upgrade notes.
98
+ - Text limits are now a single source of truth (`TEXT_LIMITS` in
99
+ `server/store.mjs`): title 80, goal 280, tags 4×12, subtasks 12×60,
100
+ issues/next steps 5×160, milestones 20×120, key facts 6×60, evidence 8
101
+ (text 200 / quote 160), artifact name 80; client forms use the same maxima so
102
+ edits are no longer silently truncated.
103
+ - Evidence/issue/key-fact/subtask/milestone `seq` may be `null` when a citation
104
+ cannot be resolved against the session timeline (never a misleading `#0`); the
105
+ UI hides unresolved `#N` badges.
106
+ - “今日” AI usage and the daily budget roll over at the user’s local midnight
107
+ instead of UTC.
108
+ - AI/rules “done” is kept as `in_progress` (with a history note) while unfinished
109
+ manual or locked subtasks remain; locked status always wins; generated
110
+ subtasks still auto-close on done.
111
+ - HTTP edge validation: malformed command bodies, unknown/prototype-inherited
112
+ ops, malformed session ids and oversized bodies now return 400 instead of 500;
113
+ routes and successful response shapes are unchanged.
114
+ - README.zh/README.en, INSTALL, CONTRACT, DESIGN, ARCHITECTURE, DEVELOPMENT,
115
+ TROUBLESHOOTING and the market landing page were re-checked against the code
116
+ (export filenames, `/ping`, `/session` limits, `TEXT_LIMITS`, nullable `seq`,
117
+ trust rule, local-day budget, the real re-analysis path, and an explicit
118
+ roadmap for features that are not available yet). `docs/screenshots/*.png`
119
+ were regenerated from the synthetic demo dataset and pass the demo privacy
120
+ audit (no forbidden strings in visible text).
121
+
122
+ ### Fixed
123
+
124
+ - The budget-exhausted scan message no longer reports pre-scan “used/limit”
125
+ numbers (it could show e.g. 23/24 while the scan had actually used 24/24);
126
+ all counters in the scan message are now post-scan.
127
+ - A failed analysis no longer leaves the session to be retried on every scan:
128
+ failures write `llmError`/`aiErrorAt` and honour the 5-minute cooldown, while
129
+ a cancelled scan no longer records a failure.
130
+ - `task.analyze` now counts analyses that decide “no card needed” (ignore/empty)
131
+ against the budget and reports the consumption honestly.
132
+ - The “budget used up” flag is now set for mixed success/failure batches too, so
133
+ the scan message no longer silently omits that the budget ran out.
134
+ - Clicking “锁定字段” in the task drawer no longer throws (`EDITABLE_FIELDS` was
135
+ referenced but never defined).
136
+ - Scan finalization can no longer leave the scan mutex locked (and emit an
137
+ unhandled rejection) when the host logger or persistence throws.
138
+ - Corrupt/partially written session logs no longer force a full re-parse on
139
+ every scan; unchanged sessions are not re-parsed just because AI is enabled
140
+ without credentials.
141
+ - Single-task “AI 润色” reports failure honestly instead of claiming success when
142
+ AI is disabled/unavailable.
143
+ - Background polling no longer discards unsaved drawer edits or continue-prompt
144
+ edits.
145
+ - Search matches goal text again (it previously compared against
146
+ `[object Object]`).
147
+ - SSE clients that half-close are dropped (plus a client cap), request bodies
148
+ have byte/time limits, and store loading sanitizes hostile-but-valid JSON;
149
+ backup retention also prunes `.migrate-failed` files.
150
+ - Duplicate-title merge helpers were consolidated (a duplicate `dedupeByText`
151
+ definition silently overrode the first).
152
+ - Privacy scanner no longer flags long kebab-case `sk-*` UI ids as API keys.
153
+ - `scripts/release.mjs` regenerates the market index before running checks.
154
+ - The new-task dialog no longer claims sessions can be linked from the drawer
155
+ (relinking is a documented roadmap item).
156
+ - **AI commands and scans are now mutually exclusive**: `task.analyze` and
157
+ `task.polishPrompt` share one in-process mutex with scans, so a long
158
+ re-analysis can no longer race an automatic scan, overwrite the shared
159
+ analyzer budget or skew daily usage; concurrent explicit commands return 409
160
+ with a specific message, and auto scans simply defer to the next tick.
161
+ - **“重新研判” re-judges exactly one session**: it now targets the card's
162
+ `primarySessionId` (falling back to the first linked session), consuming at
163
+ most one budget unit; previously a multi-session/relinked card ran up to 12
164
+ analyses and kept only the last result. A broken source log now returns
165
+ `400 session-parse-failed` instead of silently producing a rules result.
166
+ - SSE clients that stop reading are dropped on backpressure (1MB buffer or a
167
+ failed write) instead of growing the host buffer without bound.
168
+ - The legacy-client budget inference is now limited to budget-only patches
169
+ (see “Changed”); unrelated saves from an old page keep the current mode.
170
+ - Token accounting falls back to input+output+cache tokens when a provider
171
+ omits `totalTokens`.
172
+ - Host logs no longer print the DSH home path or task titles; merge/build logs
173
+ use ids and the ready line only reports counts.
174
+ - The bundle patch no longer carries an unused `config:` block (settings live in
175
+ the board state), and the validator now requires `server/native-llm.mjs` in
176
+ the shipped server files; CI's `npm pack` assertions also cover it.
177
+ - README.md/README.en.md were rewritten to a ~110-line user-first quick start
178
+ (install → first steps → features → model/privacy → FAQ), and public docs
179
+ were corrected after a pre-release accuracy/privacy review (third-party data
180
+ recipients, polling vs SSE, `/session` status enum, workspace source enum,
181
+ release flow, settings order and version examples).
182
+
183
+ ### Security
184
+
185
+ - **Third-party model disclosure**: the compressed session digest (≤1.5KB per
186
+ session, including session excerpts) is sent to the model provider selected
187
+ through DSH; explicitly choosing a third-party provider sends it to that
188
+ provider. The settings dialog, README and SECURITY document this, and the
189
+ previous “nothing is sent to third-party servers” wording has been removed.
190
+ - **Credential handling moved to DSH**: the plugin no longer reads or parses
191
+ `.credentials.yaml`, no longer holds a DeepSeek token and no longer
192
+ hard-codes an API endpoint; requests go through DSH's native model service
193
+ and its credentials seam, so the plugin never sees provider credentials.
194
+ - **No session-log upload**: analysis requests do not pass a `sessionId`, so
195
+ DSH's official session-log extension is not attached to model requests.
196
+
10
197
  ## [0.4.1] - 2026-11-05
11
198
 
12
199
  Documentation-only patch release: the plugin code is unchanged from 0.4.0.
@@ -106,7 +293,8 @@ workspace into a maintainable task board.
106
293
  with the local DSH account token; tokens are never logged or persisted by the
107
294
  plugin. See [SECURITY.md](./SECURITY.md).
108
295
 
109
- [Unreleased]: https://github.com/topmindspace/dsh-super-kanban/compare/v0.4.1...HEAD
296
+ [Unreleased]: https://github.com/topmindspace/dsh-super-kanban/compare/v0.5.0...HEAD
110
297
  [0.3.0]: https://github.com/topmindspace/dsh-super-kanban/releases/tag/v0.3.0
111
298
  [0.4.0]: https://github.com/topmindspace/dsh-super-kanban/releases/tag/v0.4.0
112
299
  [0.4.1]: https://github.com/topmindspace/dsh-super-kanban/releases/tag/v0.4.1
300
+ [0.5.0]: https://github.com/topmindspace/dsh-super-kanban/releases/tag/v0.5.0
package/README.en.md CHANGED
@@ -1,303 +1,108 @@
1
1
  # Super Kanban · AI Task Command Center
2
2
 
3
+ **Turns your DSH sessions into a task board that keeps itself up to date.** It reads the real sessions across your local workspaces and infers each task's goal, progress, completion and blockers — or you can manage everything by hand. Every card traces back to a specific session and a specific sentence.
4
+
3
5
  [![CI](https://github.com/topmindspace/dsh-super-kanban/actions/workflows/ci.yml/badge.svg)](https://github.com/topmindspace/dsh-super-kanban/actions/workflows/ci.yml)
4
6
  [![npm](https://img.shields.io/npm/v/dsh-super-kanban.svg)](https://www.npmjs.com/package/dsh-super-kanban)
5
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/topmindspace/dsh-super-kanban/blob/main/LICENSE)
6
8
 
7
- An AI task board that **lives inside the DeepSeek Harness UI**. It reads the real DSH sessions across your workspaces and infers each task's goal, progress, completion state and open issues — and you can also maintain the board entirely by hand. Every card can be traced back to a specific session and a specific sentence.
8
-
9
- - **Where it lives**: "任务看板" (Task board) in the DSH sidebar, or the compact form in the right sidebar of a conversation.
10
- - **Data**: sessions are scanned read-only on your machine; board data stays on your machine.
11
- - **Intelligence**: reuses the model quota of the DSH account already signed in on this machine — zero configuration. Turn AI off and it falls back to local rule-based analysis.
12
-
13
9
  **English** | [简体中文](https://github.com/topmindspace/dsh-super-kanban/blob/main/README.md)
14
10
 
15
- ![Task board (light)](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-light.png)
16
-
17
- ![Board → task details → continue task demo](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/demo.gif)
18
-
19
- ## Contents
20
-
21
- - [Why Super Kanban](#why-super-kanban)
22
- - [Features](#features)
23
- - [Two layouts](#two-layouts)
24
- - [Installation](#installation)
25
- - [Usage](#usage)
26
- - [AI and privacy](#ai-and-privacy)
27
- - [Screenshots](#screenshots)
28
- - [Compatibility](#compatibility)
29
- - [FAQ](#faq)
30
- - [Troubleshooting](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md)
31
- - [Development and contributing](#development-and-contributing)
32
- - [License](#license)
33
-
34
- ## Why Super Kanban
35
-
36
- You keep several workspaces and many sessions going in DSH at the same time, and task state is scattered across conversations: how far did this get? Where is it stuck? Was anything delivered? Did it quietly die?
37
-
38
- Super Kanban turns those conversations into a maintainable board:
39
-
40
- | Capability | Description |
41
- | --- | --- |
42
- | 🎯 Goal extraction | Derives the task title and goal from the real request in a session instead of using the whole prompt as a title |
43
- | 📈 Progress estimation | Prefers todo completion inside the session, combined with deliverables and turn state |
44
- | ✅ Completion detection | Combines the last assistant reply, deliverables (present / file writes) and whether the user asked for more changes |
45
- | ⚠️ Issue detection | Tool errors, user corrections and unresolved questions are attached to the card as "issues" |
46
- | 🔗 Traceability | Every card carries its source workspace / session / evidence timeline, with a jump back to the session |
47
- | 🤝 Session hand-off | "Continue this task" builds a structured prompt and (after your confirmation) puts it in the original or a new session input — never sends automatically |
48
- | ✅ Subtasks and goals | Subtask checklists (importable from session todos, writes back progress), task goal, and DSH Session Goal tracking |
49
- | 📦 Artifact tracking | Collects deliverables and written files; click to open them in the DSH document preview |
50
- | 🧾 Key facts first | Cards keep only title / meta / progress; the drawer leads with 3–6 key facts and keeps raw evidence collapsed |
51
- | ✍️ Manual control | Create, edit, drag between columns, archive, delete, lock fields — AI never overwrites what you locked |
52
- | 🔄 Continuous maintenance | First scan in seconds, then incremental scans; new sessions join automatically and old tasks keep updating |
53
- | 🧠 Explainable | Every inference carries a confidence and a one-line reason — no black-box status changes |
54
-
55
- ## Features
56
-
57
- ### Two analysis engines: better with AI, always usable offline
58
-
59
- 1. **Collect (local)**: reads `workspace.json` and each session's `session.v4.jsonl.zstd`, parsing user requests, assistant replies, tool calls, todo snapshots, deliverables, errors and turn-end reasons.
60
- 2. **Rules engine (always available, zero tokens)**: local heuristics derive status, progress, issues and evidence. When you are signed out, offline, or AI is disabled, the board keeps working.
61
- 3. **LLM analysis (optional, online)**: sends a compressed session digest to the DeepSeek inference API and receives structured JSON (tasks, status, progress, issues, evidence, confidence, reason).
62
- 4. **Merge (local)**: merges results back by session anchor; locked fields are never overwritten; every change is recorded in task history.
63
-
64
- ### Token efficiency
65
-
66
- - Session digests sent to the model are capped at **≤1.5KB per session**, containing only recent changes and key signals.
67
- - Structured output is bounded: ≤6 key facts, ≤8 evidence items, `max_tokens` ≤ 2200, with per-session limits.
68
- - **Incremental gating**: the model is called only when user messages increase, a turn ends, or the session is analyzed for the first time. Live turns are never re-analyzed, and there is a minimum interval per session.
69
- - **Controllable budget**: per-scan and daily AI call limits are configurable; exceeding them automatically falls back to the rules engine. The settings page shows today's calls and tokens.
70
- - Re-scanning already analyzed sessions results in **zero AI calls**.
71
-
72
- ### Data and privacy
73
-
74
- - Board data is written only to `~/.dsh/storages/super-kanban/` on your machine. No third-party servers, no telemetry.
75
- - Online analysis sends **compressed digests only**: never full session text, never file contents, never account credentials.
76
- - All AI features can be disabled in settings and take effect immediately, falling back to local rules.
77
-
78
- ### Interface (v0.4)
79
-
80
- - DSH-native light/dark themes, typography and spacing; "monochrome first with restrained accents": color only appears in status dots, thin progress lines, priority text and type icons.
81
- - The header keeps frequent actions visible (search / scan / settings / open in right sidebar / new task); the "⋯" menu only contains "Export JSON".
82
- - Full visual and interaction rules: [DESIGN.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/DESIGN.md).
83
-
84
- ## Two layouts
85
-
86
- The same board can be opened in two ways:
87
-
88
- | Layout | How to open | Characteristics |
89
- | --- | --- | --- |
90
- | **Full-page panel** | "任务看板" in the left sidebar | Full four-column board + filters + stats line, best for focused review |
91
- | **Right sidebar** | Board icon in the conversation header, or "任务看板" in the right sidebar's "+" tools list | Board next to the chat; width-adaptive: narrow (single column + status segments) / medium / wide (four columns) |
92
-
93
- - **Right sidebar fullscreen**: the fullscreen control on the right sidebar header expands the board to the whole viewport; you can leave it at any time.
94
- - **Switching**: the "open in right sidebar" icon in the full-page header, or the "open as full page" icon in the right sidebar board.
95
- - **Entry preferences**: board settings → "Display and entry" offers "Both (default) / Full page only / Right sidebar only"; refresh the window after changing.
96
-
97
- ## Installation
98
-
99
- > Prerequisites: DSH desktop installed and opened at least once (`~/.dsh/profiles/desktop` exists); DSH version `>= 0.2.1-rc.5 < 0.3.0`.
100
-
101
- ### Option A: Plugin market index (recommended)
102
-
103
- > "Discover" comes from DSH's experimental plugin market capability: first enable **Plugin market** under **Plugins → Experimental plugins** and reload DSH as prompted. If your DSH build does not offer it, use Option B/C/D.
104
-
105
- 1. DSH → **Plugins** → **Discover**
106
- 2. **Add index source** and paste:
107
- `https://topmindspace.github.io/dsh-super-kanban/index.json`
108
- 3. Find **Super Kanban** in the list → open its page (the index lists every available version) → **Install** the version you want → enable
109
- 4. Press `Cmd+R` in the DSH window (restart DSH if needed)
110
-
111
- > The market index becomes available after the first release is published to GitHub Pages; its content comes from this repository's `docs/`.
112
-
113
- ### Option B: npm package
114
-
115
- DSH → Plugins → Add plugin → enter the package name — `dsh-super-kanban` for npm latest, or an **exact version** such as `dsh-super-kanban@0.4.1` (recommended when upgrading) → install → enable → reload the window.
11
+ > Requires DSH `>= 0.2.1-rc.5 < 0.3.0` · Node.js `>= 22.19.0` · zero third-party dependencies · no telemetry
116
12
 
117
- > The npm package is published: `dsh-super-kanban` (https://www.npmjs.com/package/dsh-super-kanban). See [docs/MARKET.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/MARKET.md) for the release and index-refresh flow.
118
-
119
- ### Option C: Git repository
120
-
121
- Plugins → Add plugin → paste `https://github.com/topmindspace/dsh-super-kanban` → install (DSH pins the source to a commit) → enable → reload the window.
122
-
123
- ### Option D: Local directory / source install
124
-
125
- For developers and users who want to track the source:
126
-
127
- ```bash
128
- git clone https://github.com/topmindspace/dsh-super-kanban.git
129
- cd dsh-super-kanban
130
- ./install.sh -y # link into the default desktop profile and register the plugin
131
- ```
132
-
133
- Or choose "local directory" in the DSH plugin page and point it at this repository root. After installing, reload the window and "任务看板" appears in the left sidebar.
134
-
135
- ### Updating the plugin (important)
136
-
137
- Third-party plugins have **no automatic upgrade**: updating means **uninstall the old version → install the target version**, then reload DSH (fully quit and reopen if the UI still looks stale).
138
-
139
- - **Cross-minor upgrades need an exact version**: going from `0.3.x` to `0.4.x` requires an exact install such as `dsh-super-kanban@0.4.1`. An old range such as `^0.3.0` **never** resolves to 0.4.x under semantic versioning — the most common cause of "updated but the UI is still old".
140
- - **Within 0.4.x**: if the profile dependency is `^0.4.0`, patch releases (0.4.1, 0.4.2, …) resolve normally; plugin-page installs record an exact version, so those still require uninstall + reinstall.
141
- - After updating press `Cmd+R`; if nothing changed, **fully quit and reopen DSH**, then verify the real installed version as described in [INSTALL.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/INSTALL.md#2-验证安装与版本).
142
-
143
- ### Uninstall
144
-
145
- - **Uninstall**: remove it from the plugin page, or run `./uninstall.sh -y` in the source directory.
146
- - Uninstalling **does not delete** board data; to wipe it, delete `~/.dsh/storages/super-kanban/`.
147
-
148
- Detailed install / update / verification / rollback steps are in [docs/INSTALL.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/INSTALL.md); if something breaks see [docs/TROUBLESHOOTING.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md).
149
-
150
- ## Usage
151
-
152
- 1. Click **任务看板** in the left sidebar (or the board icon in a conversation header for the right-sidebar form).
153
- 2. **Board**: four columns — Backlog / In progress / Blocked / Done; column headers show counts and status colors.
154
- 3. **Cards**: status dot, title with an AI/rules marker, source workspace and last-activity time, plus restrained priority, issue count, artifact count, subtask progress and a progress line.
155
- 4. **Detail drawer** (click a card):
156
- - One-line status summary (click "Edit" to change fields)
157
- - **Key facts** (3–6 items: key progress / decisions / issues from the session)
158
- - **Subtasks**: check / add / delete; "import todos from session"; progress writes back automatically
159
- - **Issues / next steps**
160
- - **Session linkage**: continue this task / open session
161
- - **Artifacts**: click to open in the DSH right-sidebar document preview
162
- - Evidence and history (collapsed by default)
163
- 5. **Filters**: workspace, priority, origin, tags, keyword search, show archived.
164
- 6. **Toolbar** (persistent in the header): search, scan, settings gear, open in right sidebar, new task; the "⋯" menu only contains "Export JSON".
165
- 7. **Scan**: click the scan button to trigger an incremental scan immediately; progress is shown live.
166
- 8. **Settings** (gear icon): AI toggle, auto-scan, scan interval, initial scan range, AI budget, display and entry, excluded workspaces.
167
-
168
- ### How "Continue this task" works
169
-
170
- 1. Open any card → click **"继续此任务"** in the drawer;
171
- 2. The dialog contains a structured prompt (task goal / progress / key facts / issues / next steps / source session) that you can edit;
172
- 3. Choose **original session** or **new session in the same workspace**;
173
- 4. Click **"放入会话"**: DSH switches to the target session and puts the prompt into the input box — **it is never sent automatically**; review or edit it and press send yourself. You can also "copy only" or "polish with AI".
174
-
175
- > The prompt is assembled locally from a template — **0 tokens by default**. Only "Polish with AI" spends one model call.
176
-
177
- ### Manual and automatic side by side
13
+ ![Task board (light)](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-light.png)
178
14
 
179
- - Automatic tasks are anchored to their source session; repeated scans update the same card instead of creating duplicates.
180
- - Fields you edit and lock (editing locks by default) are never overwritten by AI; unlock them in the drawer to hand them back.
181
- - Manual tasks (origin = manual) are never changed by automatic scans.
182
- - New cards do not need a session; once linked, AI fills in the analysis on the next scan.
15
+ ## Quick start
183
16
 
184
- ### Shortcuts
17
+ ### Install (pick one)
185
18
 
186
- | Key | Action |
187
- | --- | --- |
188
- | `/` | Focus search |
189
- | `n` | New task |
190
- | `Esc` | Close the topmost overlay / drawer |
191
- | `Cmd+R` | Reload the DSH window (needed after plugin updates) |
19
+ 1. **Plugin market (recommended)**: DSH → Plugins → Discover → add the index source `https://topmindspace.github.io/dsh-super-kanban/index.json` → install **Super Kanban** → enable and reload the window.
20
+ 2. **npm**: DSH → Plugins → Add plugin → enter `dsh-super-kanban` (use an exact version when upgrading) → install → enable and reload the window.
21
+ 3. **Git repository**: Plugins → Add plugin → paste `https://github.com/topmindspace/dsh-super-kanban` → install → enable and reload the window.
192
22
 
193
- ## AI and privacy
23
+ Local/source install, version verification, updates and rollback: [installation guide](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/INSTALL.md).
194
24
 
195
- ### Data flow
25
+ ### First run
196
26
 
197
- ```
198
- DSH sessions (local, read-only)
199
- │ local parsing / rules engine
200
- ▼
201
- local board storage ──(optional)digest ≤1.5KB ──► DeepSeek inference API
202
- │ │
203
- └──────────── structured JSON ◄────────────────────┘
204
- ```
27
+ 1. Click **任务看板** (Task board) in the left sidebar (or the board icon in a conversation header for the right-sidebar layout).
28
+ 2. Open **Settings** from the board header: keep "AI 联网研判" (online AI) enabled, and leave "AI 研判模型" following the DSH default.
29
+ 3. Click **Scan**; the first scan takes seconds to minutes depending on session count, and the outcome stays in the stats line.
30
+ 4. Cards appear automatically — click one to open the drawer; the header "⋯" menu can re-analyze a single card at any time.
31
+ 5. To continue the work: click **"继续此任务"** in the drawer — the prompt is placed in the original session input and never sent automatically, so review it and press send yourself.
205
32
 
206
- ### What is never uploaded
33
+ ## What it does
207
34
 
208
- - Full session transcripts, file contents, attachments
209
- - Account credentials / tokens (read locally for the request header only, never included in the payload)
210
- - Anything to third-party servers (no telemetry, no usage reporting)
35
+ - **Automatic cards that stay fresh**: derives title, goal, status, progress, issues and next steps from local DSH sessions, then keeps them updated on incremental scans without creating duplicates.
36
+ - **AI analysis with a model you choose**: follows the DSH default model by default, or uses a third-party model configured in DSH; when AI is off or unavailable it falls back to local rules.
37
+ - **Continue a task with zero tokens**: assembles a structured prompt locally and, after your confirmation, puts it into the original session or a new one in the same workspace — never sends it for you.
38
+ - **Two layouts**: a full four-column board, or a compact board in the conversation's right sidebar that adapts to its width.
39
+ - **Local-first**: board data is written only to `~/.dsh/storages/super-kanban/` on your machine, and the board itself has no telemetry.
40
+ - **Zero third-party dependencies**: neither the plugin nor the validators ship runtime dependencies; no build step, no external resources.
41
+ - **Manual control**: create / edit / drag / archive / delete / lock fields — AI never overwrites fields you changed.
42
+ - **Fully traceable**: key facts, issues, artifacts and the evidence timeline all link back to the source session.
211
43
 
212
- ### Turning AI off
44
+ ## AI and models
213
45
 
214
- Settings gear in the board header → turn off "AI 联网研判" (online AI analysis); it takes effect immediately. The board keeps running on the local rules engine — no missing features, just coarser inference.
46
+ - **Follows the DSH default model by default** — you do not enter any key in the board.
47
+ - **Using a third-party model**: add a model provider in **DSH Settings → Models** (OpenAI / Anthropic / OpenRouter and similar, or a custom compatible endpoint) and enter its API key; then pick it under board Settings → "AI 研判模型", or keep following the default.
48
+ - **Without a native model service** (old DSH or a minimal composition) the board switches to the local rules engine automatically and explains why in the scan outcome.
49
+ - **Privacy**: AI analysis only sends a compressed session digest (≤1.5KB per session) to the model provider you configured in DSH — choosing a third-party provider sends it there; the board never reads or stores credentials and has no telemetry. See [SECURITY.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/SECURITY.md).
215
50
 
216
- ### Cost
51
+ ## Settings and budget
217
52
 
218
- By default incremental scans only analyze **changed sessions**; the per-scan AI call limit defaults to 40 and the default model is `deepseek-flash`. On days without new conversations the cost is close to zero. You can lower the daily limit or disable AI entirely in settings.
53
+ - **AI budget**: "Auto" by default = use up to the daily remainder per scan; or fix it at 20 / 40 / 80 / 150 calls.
54
+ - **Daily limit**: 150 budget units by default, reset at local midnight (budget units are not a hard cost cap).
55
+ - **Scanning**: the auto-scan interval is configurable; sessions a scan could not finish continue on the next scan, and the outcome says "remaining N sessions continue next scan" — nothing is lost.
56
+ - **Entry preferences**: "Display and entry" offers both / full page only / right sidebar only; changes take effect after reloading the window.
219
57
 
220
58
  ## Screenshots
221
59
 
222
- | Board (light) | Board (dark) |
223
- | --- | --- |
224
- | ![Board light](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-light.png) | ![Board dark](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-dark.png) |
225
-
226
- | Task details (light) | Task details (dark) |
227
- | --- | --- |
228
- | ![Task details light](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-light.png) | ![Task details dark](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-dark.png) |
229
-
230
- | Continue-task dialog | Prompt placed into the session input |
60
+ | Board (dark) | Task details |
231
61
  | --- | --- |
232
- | ![Continue task](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/continue-modal.png) | ![Prompt placed](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/continue-placed.png) |
62
+ | ![Board dark](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-dark.png) | ![Task details](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-light.png) |
233
63
 
234
- | Right sidebar (narrow) | Right sidebar fullscreen |
64
+ | Settings and budget | Right sidebar |
235
65
  | --- | --- |
236
- | ![Right sidebar](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/side-panel.png) | ![Sidebar fullscreen](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/side-fullscreen.png) |
66
+ | ![Settings](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/settings-dual.png) | ![Right sidebar](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/side-panel.png) |
237
67
 
238
- | Artifact preview entries | Settings (persistent gear) |
239
- | --- | --- |
240
- | ![Artifacts](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-artifacts.png) | ![Settings](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/settings-dual.png) |
241
-
242
- | "⋯" menu (export JSON only) | 1280px window |
243
- | --- | --- |
244
- | ![Toolbar menu](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/toolbar-menu.png) | ![1280](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-1280.png) |
68
+ More screenshots: [demo GIF](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/demo.gif), [task details (dark)](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-dark.png), [continue task](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/continue-modal.png), [prompt placed](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/continue-placed.png), [right sidebar fullscreen](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/side-fullscreen.png), [artifacts](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/drawer-artifacts.png), [toolbar menu](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/toolbar-menu.png), [1280px window](https://raw.githubusercontent.com/topmindspace/dsh-super-kanban/main/docs/screenshots/board-1280.png).
245
69
 
246
- > All screenshots above use a fully fictional demo dataset (invented workspaces / sessions / tasks) and contain no real user or workspace information.
70
+ > All screenshots use a fully fictional demo dataset and contain no real user or workspace information.
247
71
 
248
72
  ## Compatibility
249
73
 
250
74
  | Item | Requirement |
251
75
  | --- | --- |
252
- | DeepSeek Harness | `>= 0.2.1-rc.5 < 0.3.0` (verified on 0.2.1-rc.5 desktop) |
253
- | Node.js | `>= 22.19.0` (uses the built-in `node:zlib` zstd API) |
76
+ | DeepSeek Harness | `>= 0.2.1-rc.5 < 0.3.0` |
77
+ | Node.js | `>= 22.19.0` (bundled with DSH, no separate install needed) |
254
78
  | Platform | Verified on macOS desktop; other desktop platforms should work but are not individually verified |
255
- | Third-party dependencies | None (plugin and tooling scripts are dependency-free) |
79
+ | Third-party dependencies | None (plugin and `scripts/` validators are dependency-free) |
80
+ | AI models | Provided by DSH's native model service: follows the DSH default model, or a third-party provider |
256
81
 
257
- > The plugin relies on DSH's third-party plugin interfaces; major DSH upgrades may break compatibility. If the entry disappears after upgrading DSH, reinstall the plugin first — board data will not be lost.
82
+ Security fixes land on the current minor line; cross-minor upgrades need an exact version, see [INSTALL.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/INSTALL.md#3-更新插件升级). If the entry disappears after a DSH major upgrade, reinstall the plugin first — board data is not lost.
258
83
 
259
84
  ## FAQ
260
85
 
261
- **Q: I updated the plugin but the UI still looks old / new features are missing.**
262
- A: The usual cause is an old profile dependency range (e.g. `^0.3.0`); cross-minor upgrades require an **exact version** such as `dsh-super-kanban@0.4.1`. Press `Cmd+R` first, then fully quit and reopen DSH. If it is still old, follow [docs/TROUBLESHOOTING.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md#更新后-ui-未变) to check the real installed version and dependency spec.
263
-
264
- **Q: There is no "任务看板" in the left sidebar.**
265
- A: Press `Cmd+R` to reload the window; restart DSH if it is still missing. If it remains missing, check the diagnostics on the DSH plugin page (a failed plugin load usually reports a reason).
86
+ **Q: There is no "任务看板" in the left sidebar?**
87
+ A: Press `Cmd+R` to reload the window; if it is still missing, fully quit and reopen DSH. Still missing? Check the plugin page diagnostics, or see the [troubleshooting guide](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md#入口缺失).
266
88
 
267
- **Q: Cards are not updating / still show an old status.**
268
- A: Click the scan button in the header to trigger a manual scan, or check that "Auto scan" is enabled in settings.
89
+ **Q: AI does not work / the board always shows "rules"?**
90
+ A: Make sure "AI 联网研判" is enabled in settings and that a model is configured in DSH Settings → Models (sign in, or enter an API key); board Settings → "AI 研判模型" can also pin a specific model. Old DSH builds without the native model service always use the rules engine until DSH is upgraded.
269
91
 
270
- **Q: The AI judgment is wrong.**
271
- A: Open the card and edit the fields directly (editing locks them, so AI won't overwrite them later). To make AI re-judge it, continue the source session and wait for the next scan — the card updates automatically.
272
-
273
- **Q: I don't want certain workspaces on the board.**
274
- A: Settings gear in the board header → Excluded workspaces (multi-select).
275
-
276
- **Q: How much quota will this use?**
277
- A: An incremental scan calls `deepseek-flash` once per **changed** session; the settings page shows today's calls and tokens. With AI disabled the cost is zero.
92
+ **Q: How do I update?**
93
+ A: Third-party plugins have no automatic upgrade: uninstall the old version → install the target version (exact version for cross-minor upgrades) → reload the window. See [INSTALL.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/INSTALL.md#3-更新插件升级).
278
94
 
279
95
  **Q: Where is the data? Is it lost after uninstalling?**
280
- A: `~/.dsh/storages/super-kanban/` (`state.json` / `sessions-cache.json` / `backups/`). Uninstalling the plugin does not delete it.
96
+ A: `~/.dsh/storages/super-kanban/` (`state.json` / `sessions-cache.json` / `backups/`). Uninstalling the plugin does not delete it; to wipe it completely see the [troubleshooting guide](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md#卸载与数据保留).
281
97
 
282
- **Q: Can I export the board?**
283
- A: "⋯" in the board header → Export JSON, which downloads `super-kanban-YYYYMMDD.json`.
98
+ **Q: How do I uninstall?**
99
+ A: Remove it from the plugin page, or run `./uninstall.sh -y` in the source directory, then reload the window.
284
100
 
285
101
  ## Development and contributing
286
102
 
287
- - Zero third-party dependencies; tests run with `node --test`; `scripts/` contains validators, the privacy scanner and the market index generator.
288
- - Common commands:
289
-
290
- ```bash
291
- npm test # unit tests
292
- npm run validate # manifest, cordis patch, files and market index checks
293
- npm run check:privacy # scan for personal paths / credentials / session ids
294
- npm run market:index # regenerate docs/index.json
295
- ```
296
-
297
- - For the development setup, repository layout and debugging, see [CONTRIBUTING.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/CONTRIBUTING.md) and [docs/DEVELOPMENT.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/DEVELOPMENT.md).
298
- - Architecture: [docs/ARCHITECTURE.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/ARCHITECTURE.md). Interface contract: [docs/CONTRACT.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/CONTRACT.md). Visual spec: [docs/DESIGN.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/DESIGN.md).
299
- - Release and distribution flow (market index, npm, Git): [docs/MARKET.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/MARKET.md).
300
- - User-facing troubleshooting guide: [docs/TROUBLESHOOTING.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/TROUBLESHOOTING.md).
103
+ - Zero third-party dependencies, no build: the host is Node ESM and the browser half is a single `client.js`; run `npm test` for tests and `npm run check` for every validator at once.
104
+ - Repository layout, debugging and commands: [CONTRIBUTING.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/CONTRIBUTING.md) and [docs/DEVELOPMENT.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/DEVELOPMENT.md).
105
+ - Architecture and interfaces: [ARCHITECTURE.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/ARCHITECTURE.md), [CONTRACT.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/CONTRACT.md); visual rules: [DESIGN.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/docs/DESIGN.md).
301
106
  - For security issues, please follow [SECURITY.md](https://github.com/topmindspace/dsh-super-kanban/blob/main/SECURITY.md) and report privately instead of opening a public issue.
302
107
 
303
108
  ## License