dsh-brief-sidebar 0.3.0 → 0.4.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/README.md +188 -178
- package/assets/.gitkeep +0 -0
- package/assets/brief.png +0 -0
- package/cordis.patch.yml +18 -18
- package/dsh.plugin.json +16 -16
- package/lib/client.js.map +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +106 -94
- package/screenshots.json +5 -0
- package/src/client/BriefIcon.tsx +56 -56
- package/src/client/SummaryTab.tsx +73 -73
- package/src/client/TodoBoardTab.tsx +188 -188
- package/src/client/brief/board.ts +104 -104
- package/src/client/brief/dock-shadow.tsx +74 -74
- package/src/client/brief/use-todos.ts +27 -27
- package/src/client/file-open.ts +108 -108
- package/src/client/index.tsx +144 -144
- package/src/client/locales.ts +78 -78
- package/src/client/summary/DeliverablesSection.tsx +192 -192
- package/src/client/summary/deliverables.ts +93 -93
- package/src/client/use-projection.ts +117 -117
- package/src/index.ts +32 -32
- package/src/projection/deliverables-fold.ts +206 -206
- package/src/projection/keys.ts +27 -27
- package/src/projection/register.ts +99 -99
package/README.md
CHANGED
|
@@ -1,178 +1,188 @@
|
|
|
1
|
-
# dsh-brief-sidebar
|
|
2
|
-
|
|
3
|
-
DSH web 插件(`dsh-better-sidebar` 消费方),仓库/包名 **`dsh-brief-sidebar`**(会话简报侧栏)。
|
|
4
|
-
把会话的**简报(brief)**渲染成右侧栏里的一个「概要」tab,简报由两张列表构成:
|
|
5
|
-
|
|
6
|
-
- **todo 列表** —— `todos` 投影的**进展**看板,展示当前会话任务的三态与进度摘要;
|
|
7
|
-
- **产物列表** —— `dshSummaryDeliverables` 投影的**产物**分区,回合内实时展示成功写入/修改的文件,
|
|
8
|
-
codeplan 规划产物以「规划」pill 行内标注。
|
|
9
|
-
|
|
10
|
-
同时**遮蔽** DSH 官方那条 composer 上方的 todo 面板,使看板成为 todo 的唯一可见载体。
|
|
11
|
-
|
|
12
|
-
只读展示:不做编辑、不做写回、不做多会话聚合、不复制任何第三方渲染层。
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
###
|
|
117
|
-
|
|
118
|
-
`
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
0
|
|
134
|
-
|
|
135
|
-
`
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
1
|
+
# dsh-brief-sidebar
|
|
2
|
+
|
|
3
|
+
DSH web 插件(`dsh-better-sidebar` 消费方),仓库/包名 **`dsh-brief-sidebar`**(会话简报侧栏)。
|
|
4
|
+
把会话的**简报(brief)**渲染成右侧栏里的一个「概要」tab,简报由两张列表构成:
|
|
5
|
+
|
|
6
|
+
- **todo 列表** —— `todos` 投影的**进展**看板,展示当前会话任务的三态与进度摘要;
|
|
7
|
+
- **产物列表** —— `dshSummaryDeliverables` 投影的**产物**分区,回合内实时展示成功写入/修改的文件,
|
|
8
|
+
codeplan 规划产物以「规划」pill 行内标注。
|
|
9
|
+
|
|
10
|
+
同时**遮蔽** DSH 官方那条 composer 上方的 todo 面板,使看板成为 todo 的唯一可见载体。
|
|
11
|
+
|
|
12
|
+
只读展示:不做编辑、不做写回、不做多会话聚合、不复制任何第三方渲染层。
|
|
13
|
+
|
|
14
|
+
**兼容性范围(当前)**:只支持 **DSH 0.2.0 线** —— `engines.dsh` 为 `>=0.2.0-rc.1 <0.2.1-0`,实测基线是 DSH 0.2.0-rc.1(本分支 `compat/0.2.0`);0.1.5 线由冻结的 `main`(≤0.3.1)继续服务。
|
|
15
|
+
0.1.2 及更早的宿主线**不在支持范围内**,npm 上也没有对应 dist-tag(本包 0.2.0 线发布走 `dsh-0.2.0`)。
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
**命名边界**:本插件的身份标识(包名 / plugin id / cordis bundle id / locale 命名空间 / DOM 钩子
|
|
20
|
+
`data-dsh-brief-sidebar`)一律用 `brief`;而 `todos` 投影、`todo_write` 工具、官方 `{ id: 'todo' }`
|
|
21
|
+
dock cell、`dsh-tool-todo` 属于 DSH 上游领域,沿用 `todo` 原词,不随本插件改名。
|
|
22
|
+
|
|
23
|
+
**记忆系统**:简报的第三个分区(记忆召回)目前**仅预留布局插槽**,处于**规划中**,本期不渲染——见 R11 / K4。
|
|
24
|
+
|
|
25
|
+
## 需求映射
|
|
26
|
+
|
|
27
|
+
| 编号 | 需求 | 实现位置 |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| R1 | 插件挂载期间官方 todo 条完全不渲染 | `src/client/brief/dock-shadow.tsx` |
|
|
30
|
+
| R2 | 新建独立插件,向 better-sidebar 注册「概要」tab | `src/client/index.tsx` |
|
|
31
|
+
| R3 | 数据只来自 Host 计算的 `todos` 投影,无客户端折叠、无写回 | `src/client/brief/use-todos.ts` + `board.ts` |
|
|
32
|
+
| R4 | 普通 React + `--dsw-alias-*` token,与 Canvas 插件零代码/命名关系 | `src/client/TodoBoardTab.tsx`(TodoSection)+ `BriefIcon.tsx` |
|
|
33
|
+
| R5 | 可逆:插件禁用/卸载后官方 dock 自动恢复 | 所有注册都走 `ctx.effect`,disposer 随 fiber 回收 |
|
|
34
|
+
| R6 | 非破坏:不改 DSH checkout / better-sidebar / canvas 插件 | 本包自持,未触碰上述任何仓库 |
|
|
35
|
+
| R7 | tab 升级为「概要」,`TAB_ID` 不变(原位替换,已打开的 tab 不失联) | `src/client/SummaryTab.tsx` + `index.tsx` |
|
|
36
|
+
| R8 | 分区一「进展」:todos 三态契约下沉到分区级 | `src/client/TodoBoardTab.tsx` |
|
|
37
|
+
| R9 | 分区二「产物」:最新回合实时列表 + 会话累计汇总,host 半部注册投影 | `src/projection/*` + `src/client/summary/*` |
|
|
38
|
+
| R10 | codeplan 产物是产物分区的标注子集(行内「规划」pill),非独立分区 | `src/client/summary/deliverables.ts` + `DeliverablesSection.tsx` |
|
|
39
|
+
| R11 | 记忆召回:仅预留布局插槽(分区序列最底),**规划中**,本期不渲染 | `src/client/SummaryTab.tsx` 插槽注释 / K4 |
|
|
40
|
+
| R12 | 行为保持:遮蔽、badge、`visible` 暂停、高度契约、0.1.5 适配 | 各处,见下文 |
|
|
41
|
+
| R13 | host 半部不做同步 IO,投影为可选贡献(`ctx.inject` 等待) | `src/index.ts` + `src/projection/register.ts` |
|
|
42
|
+
|
|
43
|
+
## 安装
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
# 0.2.0 线发布走 dsh-0.2.0 dist-tag(0.1.5 线由 main 上的旧版本继续服务)
|
|
47
|
+
dsh plugin --profile web add dsh-brief-sidebar@dsh-0.2.0
|
|
48
|
+
# 备选一:本地 tarball
|
|
49
|
+
dsh plugin --profile web add <dsh-brief-sidebar-0.4.0.tgz>
|
|
50
|
+
# 备选二:GitHub 直装(需自行构建)
|
|
51
|
+
dsh plugin --profile web add github:drscrewdriver/dsh-brief-sidebar#main
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`--profile` 必须紧跟 `plugin` 之后。安装后刷新 `http://127.0.0.1:3080`。
|
|
55
|
+
|
|
56
|
+
## 设计要点
|
|
57
|
+
|
|
58
|
+
### 数据链:直接解析投影面,而不是用框架的 `useProjection`
|
|
59
|
+
|
|
60
|
+
better-sidebar 的 tab 体**不在 DSH slot 树内**,拿不到 session 作用域的标准 props,因此改为:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
ctx.get('sessions') // 安全获取(不直读 Proxy)
|
|
64
|
+
?.binding(scope.sessionId)?.session.projections // SessionBinding.session = SessionFace
|
|
65
|
+
?.faceOf(key) // ProjectionsFace
|
|
66
|
+
=> useSyncExternalStore(...) // 无本地镜像、无折叠
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
这条链路被两个投影共用(`src/client/use-projection.ts` 是 key 无关的通用解析):
|
|
70
|
+
|
|
71
|
+
- `todos` — 由 `dsh-tool-todo` 注册,宿主是唯一计算点,`TodoItem[] | null`。
|
|
72
|
+
- `dshSummaryDeliverables` — 由本插件 host 半部注册(见下节),`DeliverablesView`。
|
|
73
|
+
|
|
74
|
+
**进展分区的三态必须保持区分**(`readTodos` 的契约,测试已锁定):
|
|
75
|
+
|
|
76
|
+
| 值 | 含义 | 渲染 |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| `undefined` | 能力缺席(无会话 / 宿主单元未挂载 / 尚无 baseline) | 「任务暂不可用」 |
|
|
79
|
+
| `null` → `[]` | 投影存在且为空 | 空态 |
|
|
80
|
+
| 数组 | 真实条目 | 列表 + 进度摘要 |
|
|
81
|
+
|
|
82
|
+
把前两者混同,等于向读者宣称「这个会话没有任务」,而事实是「拿不到数据」。
|
|
83
|
+
|
|
84
|
+
产物分区不同:它是**可选增强能力**,投影缺席(host 半部未注册该 unit)时分区整体隐藏,不渲染
|
|
85
|
+
「不可用」噪音;投影在而 `latest: null`、`sessionTotal: 0` 就是它的空态(unit 一注册即发布)。
|
|
86
|
+
|
|
87
|
+
### 产物数据链:host 半部注册投影 unit
|
|
88
|
+
|
|
89
|
+
官方「本次产出」行(`ui-deliverables`)的数据在回合内就随成功的 `tool/result` 逐条累积,只是官方
|
|
90
|
+
UI 挂在 `conversation.chat.turnTail` 上、只在回合尾渲染;而侧栏 tab 拿不到 conversation 引擎的
|
|
91
|
+
turn data(`SessionFace` 不暴露事件窗口,`IConversation` 不暴露回合数据)。所以本插件 host 半部
|
|
92
|
+
通过 `ctx.sessionProjections.register()` 贡献自己的 unit:
|
|
93
|
+
|
|
94
|
+
- **fold 口径**与官方 `turn-deliverables.ts` 完全一致:只认成功 `write` / `edit` /
|
|
95
|
+
`str_replace_editor`(create/str_replace/insert 变体)的路径,去重、失败不计、读类不计;
|
|
96
|
+
回合内先写后改只算一个条目(`src/projection/deliverables-fold.ts`,纯函数,测试锁定)。
|
|
97
|
+
- **回合内实时**:注册表每条提交事件驱动所有 unit 的 `apply`,每次成功的改动文件落定即推送一帧。
|
|
98
|
+
- **可选贡献**:`ctx.inject(['sessionProjections'], …)` 等待服务,注册表缺席的部署照常加载本插件
|
|
99
|
+
(产物分区静默隐藏);注册是 effect,卸载即 key 消失、客户端读作能力缺席。
|
|
100
|
+
- **容量**:最新回合路径 cap 50、会话累计 cap 100(保最近);`sessionTotal` 不设上限,累计行
|
|
101
|
+
「本会话共 N 个文件」永远如实。
|
|
102
|
+
- **key 带命名空间**(`dshSummaryDeliverables`):registry 拒绝同 key 不同 `stateVersion` 的共享,
|
|
103
|
+
避免与官方未来可能的宿主投影硬撞。
|
|
104
|
+
|
|
105
|
+
### codeplan 产物:产物分区的标注子集
|
|
106
|
+
|
|
107
|
+
「规划」pill 的**判定依据是纯路径规则**:产出的文件路径归一化分隔符后命中 `.agents/plans/` 段
|
|
108
|
+
(正反斜杠均可),即标注「规划」pill 并把 `.agents/plans/` 后的第一段(任务名)放进 `title`。
|
|
109
|
+
插件不读文件内容、不校验写入者是不是 codeplan skill——任何写进该目录的文件都会带标;
|
|
110
|
+
这样判定的好处是零额外数据链,代价是路径约定本身是唯一的真源(见缺口 K5)。
|
|
111
|
+
|
|
112
|
+
codeplan skill 把 `spec.md` / `findings.md` / `checklist.md` / `tasks.md` 用 write 写到
|
|
113
|
+
`$workspace\.agents\plans\<任务名>\` 下——这些文件天然出现在产物 fold 里,无需额外采集。
|
|
114
|
+
规划产物没有独立分区:它本来就是产物的一部分。
|
|
115
|
+
|
|
116
|
+
### 点击打开:与对话流同一条 Sidebar 预览通道
|
|
117
|
+
|
|
118
|
+
产物分区里每个路径行是一个按钮,点击走 `ctx.sidebarRight.openResource(<address>)`——与对话里
|
|
119
|
+
「本次产出」chips、行内 `code` 提及完全同一条链路(ui-chat `openFile` 的做法)。地址由内联移植的
|
|
120
|
+
`fileAddressFor`(源 `@deepseek-ai/dsh-util-workspace-path`)构造:相对路径、或会话工作区内
|
|
121
|
+
的绝对路径,按 `dsh-resource://file/session/<id>/<相对路径>` 寻址(工作区前缀被剥掉);工作区外的
|
|
122
|
+
绝对路径在同一会话地址里保留绝对拼写。会话 cwd 从 `sessions.list` 快照读取,每次点击时现读。
|
|
123
|
+
`sidebarRight` 服务缺席时行降级为纯文本(与产物投影缺席同一套降级纪律)。
|
|
124
|
+
|
|
125
|
+
### 遮蔽官方 dock:list 槽的 cell 竞争
|
|
126
|
+
|
|
127
|
+
`conversation.input.dock` 是 **list 槽**,cell 由条目的 `id` 标识。SlotCore 的行为是:
|
|
128
|
+
|
|
129
|
+
1. `register()` 判重键为 `(id, priority)` —— 同 id 换一个 priority 是合法注册;
|
|
130
|
+
2. 条目按 `priority` 升序(再按 `order`)排序,报错文案自带语义 "lowest renders";
|
|
131
|
+
3. `entriesOfSlot()` 对 list 槽按 `options.id` 取 cell,**同 cell 只保留排序后的第一条**。
|
|
132
|
+
|
|
133
|
+
官方条目注册 `{ id: 'todo', order: 0 }`(priority 缺省 = 0),本插件以 **`{ id: 'todo', priority: -1 }** 胜出。
|
|
134
|
+
注册走 `ctx.slots.inject('conversation.input.dock', …)`(等待槽声明并在声明重建时重装),
|
|
135
|
+
而不是裸 `register`(会与父条目的 children 声明表竞态)。同一手法在 `dsh-input-traffic` 对兄弟 cell `queue`
|
|
136
|
+
上已是运行中的先例。
|
|
137
|
+
|
|
138
|
+
**仅在 `betterSidebar` 可用时才遮蔽**,否则藏了面板而任务无处可见。
|
|
139
|
+
|
|
140
|
+
### 承载面:DSH 原生右侧栏
|
|
141
|
+
|
|
142
|
+
0.1.5 起右侧栏归 DSH 原生所有,better-sidebar 的 `openTab` 默认 `target: 'right'` 会把内容注册为原生 tab 类型,
|
|
143
|
+
`+` 菜单即原生 guide 页(`description` 仅在 guide 条目 ≤4 个时渲染)。tab 体仍收到
|
|
144
|
+
`TabComponentProps = { ctx, store, scope, tab, visible, … }`,本插件只用其中 `ctx` / `scope` / `visible`。
|
|
145
|
+
|
|
146
|
+
`visible === false` 时整卡(含外壳)不渲染,避免隐藏 tab 每次投影帧重渲染。
|
|
147
|
+
|
|
148
|
+
## 耦合风险与自检
|
|
149
|
+
|
|
150
|
+
| 风险 | 后果 | 自检方法 |
|
|
151
|
+
|---|---|---|
|
|
152
|
+
| 上游重命名 `todo` cell id | 遮蔽静默失效,官方面板复现(**fail-open**:数据不丢,只是重复显示) | 控制台执行 `ctx.slots.entriesOfSlot('conversation.input.dock').filter(e => e.options.id === 'todo')`,应只剩本插件的条目(`registrant: 'dsh-brief-sidebar'`、`priority: -1`) |
|
|
153
|
+
| better-sidebar 面板/侧栏关闭 | 任务不可见 | tab badge 显示未完成数作为线索 |
|
|
154
|
+
| 上游改 `todos` 投影 key 或字段 | 看板显示「不可用」或丢弃非法条目 | `dsh-tool-todo` 的 `types.d.ts` 中 `SessionProjectionMap.todos` 仍是唯一真源 |
|
|
155
|
+
| better-sidebar API 漂移 | 注册面失效 | 只用 `registerTab` 的基本字段(`id/title/description/icon/order/single/badge/component`);`peerDependencies` 放宽为 `>=0.18.1`,`devDependencies` 钉当前运行版 |
|
|
156
|
+
| 官方 fold 口径漂移(新变异工具入列等) | 本插件产物清单与官方「本次产出」渐行渐远 | 口径以 `ui-deliverables/turn-deliverables.ts` 的 `mutationPath` 为对齐基准,升级时 diff 一遍 |
|
|
157
|
+
| 上游改 `tool/call` / `tool/result` 事件形状 | 产物 fold 丢数据(`readTodos` 式防御收窄,不会崩) | `dsh-session` 的 `SessionEventMap` 中 `'tool/call'` / `'tool/result'` 条目是真源 |
|
|
158
|
+
|
|
159
|
+
## 已知缺口
|
|
160
|
+
|
|
161
|
+
- **K1** 用户在 Side 卡片里禁用本 tab 类型时,dock 仍处于隐藏态 → 任务无处可见。
|
|
162
|
+
后续可 gate on `prefs.tabsEnabled`,本次不做(用户已选「完全隐藏」)。
|
|
163
|
+
- **K2** better-sidebar 面板/侧栏关闭时任务不可见(已确认接受)。
|
|
164
|
+
- **K3** 上游重命名 `todo` cell → 遮蔽静默失效(fail-open,见上表)。
|
|
165
|
+
- **K4** 记忆召回分区只有布局插槽(**规划中**):系统无默认记忆,数据链等记忆类插件注册投影 key 后接入。
|
|
166
|
+
- **K5** 「规划」pill 是纯路径前缀判定(`.agents/plans/` 段),不校验写入者:非 codeplan 来源
|
|
167
|
+
写进该目录的文件也会带标;codeplan 换产物目录约定时需同步 `summary/deliverables.ts` 的常量。
|
|
168
|
+
- **K6** 路径行点击打开依赖宿主 `sidebarRight` 服务(可选消费);缺席的部署上产物行不可点击,
|
|
169
|
+
仅纯文本展示。
|
|
170
|
+
|
|
171
|
+
## 开发
|
|
172
|
+
|
|
173
|
+
```powershell
|
|
174
|
+
pnpm install # 依赖:react / @deepseek-ai/cordis / zod 为 devDep,运行时由宿主模块表提供或随包打包
|
|
175
|
+
pnpm typecheck # tsc -p tsconfig.json && tsc -p tsconfig.client.json
|
|
176
|
+
pnpm test # vitest(jsdom)
|
|
177
|
+
pnpm build # tsc 出 lib/types + tsdown 出 lib/index.mjs / lib/client.js(zod 打进 host 包,自包含)
|
|
178
|
+
npm pack # 出 tarball(本目录有 pnpm-workspace.yaml 但无 packages 字段,pnpm pack 不可用)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
`lib/` **必须入库**:profile 通过 GitHub ref 安装时没有构建步骤。
|
|
182
|
+
|
|
183
|
+
## 兼容性
|
|
184
|
+
|
|
185
|
+
0.1.5 线的逐条实测记录见 `main` 分支 README(≤0.3.1);本分支面向 **DSH 0.2.0 线**,实测基线为 **DSH 0.2.0-rc.1 + dsh-better-sidebar 0.19.1**。
|
|
186
|
+
0.2.0-rc.1 对 0.1.7 的插件 API 完全兼容(manifest/settings/HMR/slot/会话 V4 未动),本插件消费面全部是 `ctx.get(...)` 的纯 caller(`slots` / `locale` / `betterSidebar` / `sidebarRight` / `sessions`,自带本地接口定义),对宿主契约无 override,故本线为零代码修改的纯元数据适配。
|
|
187
|
+
`engines.dsh` 为 `>=0.2.0-rc.1 <0.2.1-0`,且 `package.json` 的 `engines.dsh`、`peerDependencies` 里的 DSH client 包范围、`dsh.plugin.json` 的 `engines.dsh` 三处**必须一致**(当前一致)。
|
|
188
|
+
**0.2.1 起的宿主线不在本线覆盖范围内**:rc 窗口锁线纪律,0.2.1 起需重新评估适配(届时新开版本线)。
|
package/assets/.gitkeep
ADDED
|
File without changes
|
package/assets/brief.png
ADDED
|
Binary file
|
package/cordis.patch.yml
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# dsh-brief-sidebar bundle patch
|
|
2
|
-
#
|
|
3
|
-
# Assembly layer for the DSH profiles whose bundle list includes this package.
|
|
4
|
-
# A pure ADDITION: one insert row carrying an id no shipped entry uses. No
|
|
5
|
-
# shipped row is disabled, renamed, or reconfigured here, so the patch stays
|
|
6
|
-
# safe to compose with any other plugin's patch.
|
|
7
|
-
#
|
|
8
|
-
# The row exists only so the loader has a host-side entry point; every
|
|
9
|
-
# behaviour of this plugin lives in the browser half (see src/index.ts).
|
|
10
|
-
#
|
|
11
|
-
# Install (recommended, official CLI):
|
|
12
|
-
# dsh plugin --profile <profile> add
|
|
13
|
-
#
|
|
14
|
-
# Both routes are mutually exclusive - do not end up with the row twice.
|
|
15
|
-
|
|
16
|
-
- insert:
|
|
17
|
-
- id: dsh-brief-sidebar
|
|
18
|
-
name: dsh-brief-sidebar
|
|
1
|
+
# dsh-brief-sidebar bundle patch
|
|
2
|
+
#
|
|
3
|
+
# Assembly layer for the DSH profiles whose bundle list includes this package.
|
|
4
|
+
# A pure ADDITION: one insert row carrying an id no shipped entry uses. No
|
|
5
|
+
# shipped row is disabled, renamed, or reconfigured here, so the patch stays
|
|
6
|
+
# safe to compose with any other plugin's patch.
|
|
7
|
+
#
|
|
8
|
+
# The row exists only so the loader has a host-side entry point; every
|
|
9
|
+
# behaviour of this plugin lives in the browser half (see src/index.ts).
|
|
10
|
+
#
|
|
11
|
+
# Install (recommended, official CLI):
|
|
12
|
+
# dsh plugin --profile <profile> add dsh-brief-sidebar@dsh-0.1.5 (DSH 0.1.5+ only)
|
|
13
|
+
#
|
|
14
|
+
# Both routes are mutually exclusive - do not end up with the row twice.
|
|
15
|
+
|
|
16
|
+
- insert:
|
|
17
|
+
- id: dsh-brief-sidebar
|
|
18
|
+
name: dsh-brief-sidebar
|
package/dsh.plugin.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "dsh-external/dsh-brief-sidebar",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"main": "./lib/index.mjs",
|
|
5
|
-
"description": "会话简报侧栏页(brief):把会话的 todo 列表(`todos` 投影的进展看板)与产物列表(`dshSummaryDeliverables` 投影的实时产出文件)一起渲染成右侧栏的一个「概要」tab,并遮蔽 DSH 官方那条 composer 上方的 todo 面板。只读展示,不做写回。",
|
|
6
|
-
"engines": {
|
|
7
|
-
"dsh": ">=0.
|
|
8
|
-
},
|
|
9
|
-
"contributes": {
|
|
10
|
-
"tools": [],
|
|
11
|
-
"skills": []
|
|
12
|
-
},
|
|
13
|
-
"client": {
|
|
14
|
-
"main": "./lib/client.js"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"id": "dsh-external/dsh-brief-sidebar",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"main": "./lib/index.mjs",
|
|
5
|
+
"description": "会话简报侧栏页(brief):把会话的 todo 列表(`todos` 投影的进展看板)与产物列表(`dshSummaryDeliverables` 投影的实时产出文件)一起渲染成右侧栏的一个「概要」tab,并遮蔽 DSH 官方那条 composer 上方的 todo 面板。只读展示,不做写回。",
|
|
6
|
+
"engines": {
|
|
7
|
+
"dsh": ">=0.2.0-rc.1 <0.2.1-0"
|
|
8
|
+
},
|
|
9
|
+
"contributes": {
|
|
10
|
+
"tools": [],
|
|
11
|
+
"skills": []
|
|
12
|
+
},
|
|
13
|
+
"client": {
|
|
14
|
+
"main": "./lib/client.js"
|
|
15
|
+
}
|
|
16
|
+
}
|