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 +10 -1
- package/lib/client.js +24 -14
- package/package.json +1 -1
- package/src/client/board-mount.tsx +9 -6
- package/src/client/sidebar-entry.ts +11 -4
- package/src/client/styles.ts +5 -3
- package/src/shared/version.ts +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
[](https://www.npmjs.com/package/dsh-taskboard)
|
|
2
2
|
[](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
|
|
186
|
+
刷新页面;仍没有则确认插件已装进当前 profile 并重启 `dsh web`(宿主半区在进程启动时加载)。三代 shell 均支持:`data-pane`(dev)、哈希类名(官方布局,0.4.2 起)、DSH Desktop 非兼容 extended frame(0.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
|
-
/*
|
|
1031
|
-
* shell's CSS-Module hashed centerCol (
|
|
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])
|
|
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
|
|
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
|
-
* (
|
|
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.
|
|
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
|
|
4838
|
-
* `data-pane="conversation"`; the
|
|
4839
|
-
* dropped data-pane
|
|
4840
|
-
* (`pI_x6G_centerCol`) —
|
|
4841
|
-
*
|
|
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.
|
|
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
|
|
8
|
-
* `data-pane="conversation"`; the
|
|
9
|
-
* dropped data-pane
|
|
10
|
-
* (`pI_x6G_centerCol`) —
|
|
11
|
-
*
|
|
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
|
|
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
|
-
* (
|
|
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>(
|
|
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)
|
package/src/client/styles.ts
CHANGED
|
@@ -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
|
-
/*
|
|
73
|
-
* shell's CSS-Module hashed centerCol (
|
|
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])
|
|
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
|
|
package/src/shared/version.ts
CHANGED