dsh-taskboard 0.5.1 → 0.5.2

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/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  [![npm version](https://img.shields.io/npm/v/dsh-taskboard.svg)](https://www.npmjs.com/package/dsh-taskboard)
2
2
  [![License](https://img.shields.io/npm/l/dsh-taskboard.svg)](https://github.com/cloader/dsh-taskboard/blob/main/LICENSE)
3
3
 
4
+ [English](./README_en.md) | 简体中文
5
+
4
6
  # dsh-taskboard
5
7
 
6
8
  DeepSeek Harness 的**任务看板插件**:人建卡、agent 认领执行、人验收。任务挂项目(workspace)、可指定模型与 preset、支持手动与定时执行,全流程双向协作。
@@ -181,7 +183,7 @@ agent:
181
183
  ## 常见问题
182
184
 
183
185
  **侧边栏没有「任务看板」入口?**
184
- 刷新页面;仍没有则确认插件已装进当前 profile 并重启 `dsh web`(宿主半区在进程启动时加载)。0.4.2 起旧 `data-pane` shell 与新哈希类名 shellDSH Desktop)都支持。
186
+ 刷新页面;仍没有则确认插件已装进当前 profile 并重启 `dsh web`(宿主半区在进程启动时加载)。三代 shell 均支持:`data-pane`(dev)、哈希类名(官方布局,0.4.2 起)、DSH Desktop 非兼容 extended frame0.5.2 起)。
185
187
 
186
188
  **任务数据存在哪?怎么备份?**
187
189
  见[配置与数据](#配置与数据)。GUI「⬇ JSON」随时全量导出;「⬆ 导入」可恢复。
@@ -214,6 +216,13 @@ node scripts/screenshot.mjs # 重新生成 img/ 截图(需本机 Edge)
214
216
 
215
217
  ## 升级日志
216
218
 
219
+ ### 0.5.2
220
+
221
+ - **支持 DSH Desktop 非兼容模式下侧栏没有「任务看板」入口、看板也打不开的问题([#6](https://github.com/cloader/dsh-taskboard/issues/6))**:
222
+ - 支持 DSH Desktop V2.0.3 非兼容模式下侧栏没有「任务看板」入口、看板也打不开的问题
223
+ - 侧栏入口换上新图标:更直观的三列看板样式
224
+ - 新增非兼容模式的回归测试(共 199 项)
225
+
217
226
  ### 0.5.1
218
227
 
219
228
  这一版主要来自一次全面的代码体检:看板更防手滑、更稳,行为上有几处小变化。
package/lib/client.js CHANGED
@@ -1027,10 +1027,12 @@ window.__ModuleLoader__.load({
1027
1027
  .dsh-atb-search { width: 130px; }
1028
1028
  .dsh-atb-badge[data-kind="stale"] { background: rgba(217,130,43,.15); color: #d9822b; }
1029
1029
 
1030
- /* 0.4.2: dual column matching — dev shell's data-pane pane OR the Desktop
1031
- * shell's CSS-Module hashed centerCol (see board-mount.tsx). */
1030
+ /* Triple-generation column matching — dev shell's data-pane pane, the
1031
+ * official layout shell's CSS-Module hashed centerCol (0.4.2), or DSH
1032
+ * Desktop's non-compat extended frame surface (0.5.2, see board-mount.tsx). */
1032
1033
  html[data-dsh-atb-active] [data-pane="conversation"] > *:not([data-dsh-atb-view]),
1033
- html[data-dsh-atb-active] [class*="centerCol"] > *:not([data-dsh-atb-view]) { display: none !important; }
1034
+ html[data-dsh-atb-active] [class*="centerCol"] > *:not([data-dsh-atb-view]),
1035
+ html[data-dsh-atb-active] .dshDesktopConversationSurface > *:not([data-dsh-atb-view]) { display: none !important; }
1034
1036
  .dsh-atb-view { display: none; }
1035
1037
  html[data-dsh-atb-active] .dsh-atb-view { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
1036
1038
 
@@ -1698,14 +1700,19 @@ window.__ModuleLoader__.load({
1698
1700
  //#region src/client/sidebar-entry.ts
1699
1701
  /** Stable data attribute identifying this entry row. */
1700
1702
  const ENTRY_SELECTOR = "[data-dsh-atb-entry]";
1701
- /** Inline icon (16px nav-icon look). */
1702
- const ICON = "<svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"2\" y=\"2.5\" width=\"12\" height=\"11\" rx=\"1.5\"/><path d=\"M2 6.5h12M6.5 6.5v7\"/></svg>";
1703
+ /** Inline icon: a three-lane kanban board (16px nav-icon look). */
1704
+ const ICON = "<svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"2\" y=\"2\" width=\"12\" height=\"12\" rx=\"2\"/><path d=\"M6 2v12M10 2v12\"/></svg>";
1703
1705
  /**
1704
1706
  * Find the sidebar shell root element, or undefined while not yet mounted.
1705
- * (Same as the working family plugins: sidebarCol pane → logoRow owner.)
1707
+ * Triple-generation matching (0.5.2): the dev shell's data-pane pane, the
1708
+ * official layout's CSS-Module sidebarCol, and DSH Desktop's non-compat
1709
+ * (extended) frame — which disables the official ui-layout row and owns
1710
+ * the columns itself (aside.dshDesktopSidebarSurface >
1711
+ * div.dshDesktopUpstreamSidebar wrapping the unchanged official sidebar).
1712
+ * logoRow-owner resolution is identical on all three generations.
1706
1713
  */
1707
1714
  function sidebarRoot() {
1708
- const column = document.querySelector("[data-pane=\"sidebar\"], [class*=\"sidebarCol\"]");
1715
+ const column = document.querySelector("[data-pane=\"sidebar\"], [class*=\"sidebarCol\"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface");
1709
1716
  if (column === null) return void 0;
1710
1717
  return column.querySelector("[class*=\"logoRow\"]")?.parentElement ?? column.firstElementChild;
1711
1718
  }
@@ -1932,7 +1939,7 @@ window.__ModuleLoader__.load({
1932
1939
  * @module dsh-taskboard/shared/version
1933
1940
  */
1934
1941
  /** The package version (must equal package.json "version"). */
1935
- const PLUGIN_VERSION = "0.5.1";
1942
+ const PLUGIN_VERSION = "0.5.2";
1936
1943
 
1937
1944
  //#endregion
1938
1945
  //#region src/client/board/labels.ts
@@ -4834,15 +4841,18 @@ window.__ModuleLoader__.load({
4834
4841
  * conversation content while the board is active. Toggling rides a data
4835
4842
  * attribute on <html> — no React involvement in the shell.
4836
4843
  *
4837
- * Column matching is DUAL (0.4.2): the dev shell marks the column with
4838
- * `data-pane="conversation"`; the DSH Desktop shell (dsh-client-ui-layout)
4839
- * dropped data-pane entirely and uses CSS-Module hashed class names
4840
- * (`pI_x6G_centerCol`) — the class-substring fallback keeps both mounting,
4841
- * exactly like sidebar-entry's `[class*="sidebarCol"]` fallback.
4844
+ * Column matching is TRIPLE-generation: the dev shell marks the column
4845
+ * with `data-pane="conversation"`; the official layout shell
4846
+ * (dsh-client-ui-layout) dropped data-pane and uses CSS-Module hashed
4847
+ * class names (`pI_x6G_centerCol`) — and DSH Desktop's non-compat
4848
+ * (extended) mode disables the official layout row entirely, owning the
4849
+ * columns itself (`main.dshDesktopConversationSurface`, 0.5.2) — the
4850
+ * fallbacks keep all three mounting, exactly like sidebar-entry's column
4851
+ * selector.
4842
4852
  *
4843
4853
  * @module dsh-taskboard/client/board-mount
4844
4854
  */
4845
- const CONVERSATION_COLUMN_SELECTOR = "[data-pane=\"conversation\"], [class*=\"centerCol\"]";
4855
+ const CONVERSATION_COLUMN_SELECTOR = "[data-pane=\"conversation\"], [class*=\"centerCol\"], .dshDesktopConversationSurface";
4846
4856
  const ACTIVE_ATTR = "data-dsh-atb-active";
4847
4857
  /** Sibling panels' activation attributes, evicted when this board opens. */
4848
4858
  const OTHER_ACTIVE_ATTRS = ["data-dsh-taskboard-active", "data-dsh-ssh-active"];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-taskboard",
3
3
  "description": "Agent-first task board for the DSH web GUI: host-authoritative task ledger with taskboard_* agent tools, project (= workspace) claim boundaries, per-task model execution in fresh sessions, optional per-task git-worktree isolation (dedicated task branches, commit evidence, one-click merge), host-side cron scheduling, and a live SSE kanban view. Mounts via the official dsh plugin system — no DSH source changes.",
4
- "version": "0.5.1",
4
+ "version": "0.5.2",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -4,11 +4,14 @@
4
4
  * conversation content while the board is active. Toggling rides a data
5
5
  * attribute on <html> — no React involvement in the shell.
6
6
  *
7
- * Column matching is DUAL (0.4.2): the dev shell marks the column with
8
- * `data-pane="conversation"`; the DSH Desktop shell (dsh-client-ui-layout)
9
- * dropped data-pane entirely and uses CSS-Module hashed class names
10
- * (`pI_x6G_centerCol`) — the class-substring fallback keeps both mounting,
11
- * exactly like sidebar-entry's `[class*="sidebarCol"]` fallback.
7
+ * Column matching is TRIPLE-generation: the dev shell marks the column
8
+ * with `data-pane="conversation"`; the official layout shell
9
+ * (dsh-client-ui-layout) dropped data-pane and uses CSS-Module hashed
10
+ * class names (`pI_x6G_centerCol`) — and DSH Desktop's non-compat
11
+ * (extended) mode disables the official layout row entirely, owning the
12
+ * columns itself (`main.dshDesktopConversationSurface`, 0.5.2) — the
13
+ * fallbacks keep all three mounting, exactly like sidebar-entry's column
14
+ * selector.
12
15
  *
13
16
  * @module dsh-taskboard/client/board-mount
14
17
  */
@@ -20,7 +23,7 @@ import { ENTRY_SELECTOR } from './sidebar-entry.ts'
20
23
  /** The injected board container. */
21
24
  export const BOARD_VIEW_SELECTOR = '[data-dsh-atb-view]'
22
25
 
23
- const CONVERSATION_COLUMN_SELECTOR = '[data-pane="conversation"], [class*="centerCol"]'
26
+ const CONVERSATION_COLUMN_SELECTOR = '[data-pane="conversation"], [class*="centerCol"], .dshDesktopConversationSurface'
24
27
  const ACTIVE_ATTR = 'data-dsh-atb-active'
25
28
  /** Sibling panels' activation attributes, evicted when this board opens. */
26
29
  const OTHER_ACTIVE_ATTRS = ['data-dsh-taskboard-active', 'data-dsh-ssh-active']
@@ -19,15 +19,22 @@ import type { BoardController } from './controller.ts'
19
19
  /** Stable data attribute identifying this entry row. */
20
20
  export const ENTRY_SELECTOR = '[data-dsh-atb-entry]'
21
21
 
22
- /** Inline icon (16px nav-icon look). */
23
- const ICON = '<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="2.5" width="12" height="11" rx="1.5"/><path d="M2 6.5h12M6.5 6.5v7"/></svg>'
22
+ /** Inline icon: a three-lane kanban board (16px nav-icon look). */
23
+ const ICON = '<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="2" width="12" height="12" rx="2"/><path d="M6 2v12M10 2v12"/></svg>'
24
24
 
25
25
  /**
26
26
  * Find the sidebar shell root element, or undefined while not yet mounted.
27
- * (Same as the working family plugins: sidebarCol pane → logoRow owner.)
27
+ * Triple-generation matching (0.5.2): the dev shell's data-pane pane, the
28
+ * official layout's CSS-Module sidebarCol, and DSH Desktop's non-compat
29
+ * (extended) frame — which disables the official ui-layout row and owns
30
+ * the columns itself (aside.dshDesktopSidebarSurface >
31
+ * div.dshDesktopUpstreamSidebar wrapping the unchanged official sidebar).
32
+ * logoRow-owner resolution is identical on all three generations.
28
33
  */
29
34
  function sidebarRoot(): HTMLElement | undefined {
30
- const column = document.querySelector<HTMLElement>('[data-pane="sidebar"], [class*="sidebarCol"]')
35
+ const column = document.querySelector<HTMLElement>(
36
+ '[data-pane="sidebar"], [class*="sidebarCol"], .dshDesktopUpstreamSidebar, .dshDesktopSidebarSurface',
37
+ )
31
38
  if (column === null) return undefined
32
39
  const logoOwner = column.querySelector<HTMLElement>('[class*="logoRow"]')?.parentElement
33
40
  return logoOwner ?? (column.firstElementChild as HTMLElement | undefined)
@@ -69,10 +69,12 @@ export const STYLES = `
69
69
  .dsh-atb-search { width: 130px; }
70
70
  .dsh-atb-badge[data-kind="stale"] { background: rgba(217,130,43,.15); color: #d9822b; }
71
71
 
72
- /* 0.4.2: dual column matching — dev shell's data-pane pane OR the Desktop
73
- * shell's CSS-Module hashed centerCol (see board-mount.tsx). */
72
+ /* Triple-generation column matching — dev shell's data-pane pane, the
73
+ * official layout shell's CSS-Module hashed centerCol (0.4.2), or DSH
74
+ * Desktop's non-compat extended frame surface (0.5.2, see board-mount.tsx). */
74
75
  html[data-dsh-atb-active] [data-pane="conversation"] > *:not([data-dsh-atb-view]),
75
- html[data-dsh-atb-active] [class*="centerCol"] > *:not([data-dsh-atb-view]) { display: none !important; }
76
+ html[data-dsh-atb-active] [class*="centerCol"] > *:not([data-dsh-atb-view]),
77
+ html[data-dsh-atb-active] .dshDesktopConversationSurface > *:not([data-dsh-atb-view]) { display: none !important; }
76
78
  .dsh-atb-view { display: none; }
77
79
  html[data-dsh-atb-active] .dsh-atb-view { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
78
80
 
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  /** The package version (must equal package.json "version"). */
9
- export const PLUGIN_VERSION = '0.5.1'
9
+ export const PLUGIN_VERSION = '0.5.2'