dsh-global-todo 0.6.7 → 0.6.8

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
@@ -1,3 +1,17 @@
1
+ ## [0.6.8] — 2026-10-20
2
+
3
+ Every conditional state now has a baseline image, and the harness refuses to render a blank
4
+ one.
5
+
6
+ - **Four new preview scenarios**: empty list, filter with no match, inbox, and a due reminder.
7
+ `tools/preview.mjs` grew a `SCENARIOS` table the fake fetch reads, so a state that used to be
8
+ reachable only by clicking can be rendered and photographed like any other.
9
+ - **`npm run screenshots` writes eight images** (list, detail, selection, settings + the four
10
+ above). Both READMEs index them in a state table instead of embedding all eight.
11
+ - **`npm run check:render` asserts each state's marker** (`记第一条`, `清除筛选`, the inbox
12
+ explanation, the reminder title), so a regression shows up as a failing check rather than a
13
+ silently blank picture.
14
+
1
15
  ## [0.6.7] — 2026-10-20
2
16
 
3
17
  Copy safety, and the last orphan of the old footer.
package/README.md CHANGED
@@ -35,6 +35,17 @@ one record:
35
35
 
36
36
  ![Settings: grouped fields, hints under each label, one save row](docs/screenshots/panel-settings.png)
37
37
 
38
+ Every state that only appears under a condition has a fixed baseline image, rendered by the same
39
+ preview and photographed by the same tool:
40
+
41
+ | State | Image |
42
+ |---|---|
43
+ | Empty list | [`panel-empty.png`](docs/screenshots/panel-empty.png) |
44
+ | Filter with no match | [`panel-filtered.png`](docs/screenshots/panel-filtered.png) |
45
+ | Inbox (awaiting confirmation) | [`panel-inbox.png`](docs/screenshots/panel-inbox.png) |
46
+ | Due reminder | [`panel-reminders.png`](docs/screenshots/panel-reminders.png) |
47
+ | Selection mode | [`panel-select.png`](docs/screenshots/panel-select.png) |
48
+
38
49
  These are produced by `npm run screenshots` (which chains `npm run preview`): the real client
39
50
  half is rendered to static HTML with no Host and no dependencies, then photographed at 1280×720
40
51
  into `docs/screenshots/`. Playwright is not a dependency — the tool borrows the copy a DSH
package/README.zh.md CHANGED
@@ -32,6 +32,16 @@ DSH 自带的 `todo_write` 属于**某一个 agent 会话**:整表替换、三
32
32
 
33
33
  ![设置:分组字段、说明写在标签下方、底部一行保存](docs/screenshots/panel-settings.png)
34
34
 
35
+ 每个「只在特定情况下出现」的面板状态都有一张固定基线图,由同一套预览渲染、同一支工具拍摄,改样式时可以直接对比:
36
+
37
+ | 状态 | 图片 |
38
+ |---|---|
39
+ | 清单为空 | [`panel-empty.png`](docs/screenshots/panel-empty.png) |
40
+ | 筛选无结果 | [`panel-filtered.png`](docs/screenshots/panel-filtered.png) |
41
+ | 收件箱(待确认) | [`panel-inbox.png`](docs/screenshots/panel-inbox.png) |
42
+ | 到点提醒 | [`panel-reminders.png`](docs/screenshots/panel-reminders.png) |
43
+ | 批量选择 | [`panel-select.png`](docs/screenshots/panel-select.png) |
44
+
35
45
  图都由 `npm run screenshots`(内部串起 `npm run preview`)生成:先把真实的客户端半区渲染成静态
36
46
  HTML(不依赖宿主、零依赖),再以 1280×720 拍进 `docs/screenshots/`。Playwright 不是依赖——工具
37
47
  借的是 DSH profile 里已经装好的那份,或 `DSH_PLAYWRIGHT` 指向的那份。
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/lib/client.js CHANGED
@@ -50,7 +50,7 @@ window.__ModuleLoader__.load({
50
50
  * different mechanisms (restart vs. hot reload), so "which one am I looking
51
51
  * at" needs an answer that the bundle itself carries.
52
52
  */
53
- const UI_REV = 'ui43'
53
+ const UI_REV = 'ui44'
54
54
  /** Last language resolved for the shell; module-level so a fetch failure can be worded too. */
55
55
  let activeLang = 'zh'
56
56
 
@@ -2253,7 +2253,8 @@ button.gt-chip[data-on="1"] { color: var(--dsw-alias-label-primary); border-colo
2253
2253
  const [state, setState] = useState({ todos: [], counts: null, health: null, matched: 0, truncated: false })
2254
2254
  const [loading, setLoading] = useState(true)
2255
2255
  const [error, setError] = useState(null)
2256
- const [filter, setFilter] = useState('active')
2256
+ // The static preview asks for a starting view it cannot click its way into.
2257
+ const [filter, setFilter] = useState(typeof props.initialFilter === 'string' ? props.initialFilter : 'active')
2257
2258
  const [query, setQuery] = useState('')
2258
2259
  // Multi-select for batch assignment. A separate mode, because the round control on
2259
2260
  // each row already means "done".
package/lib/index.js CHANGED
@@ -36,7 +36,7 @@ import { createStore, resolveStorePath } from './store.js'
36
36
  import { createTools } from './tools.js'
37
37
 
38
38
  /** Must equal `package.json`'s version; `npm run check` enforces that. */
39
- export const VERSION = '0.6.7'
39
+ export const VERSION = '0.6.8'
40
40
 
41
41
  /** Plugin id. Also the Loader row id in `cordis.patch.yml`. */
42
42
  export const name = 'dsh-global-todo'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-global-todo",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "icon": "./docs/icon.svg",
5
5
  "description": "Global, cross-session todos for DeepSeek Harness: one list owned by the human and the agent together, with creation time, attached documents and links, and one-click hand-off to an agent session. 全局待办:跨会话一份清单,记录加入时间,可挂文档与地址,可一键交给 Agent 继续干。",
6
6
  "type": "module",