dsh-sidenote 0.6.0 → 0.6.1
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 +50 -67
- package/lib/client.js +112 -107
- package/package.json +1 -1
- package/src/client/sidechat/ComposerBar.tsx +5 -0
package/README.md
CHANGED
|
@@ -1,110 +1,93 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(max-width: 640px)" srcset="docs/assets/hero-compact.svg">
|
|
4
|
+
<img src="docs/assets/hero.svg" alt="dsh-sidenote:思路可以分岔,主线始终向前。划选注释、侧边追问,再把结论带回来。" width="100%">
|
|
5
|
+
</picture>
|
|
3
6
|
</p>
|
|
4
7
|
|
|
5
8
|
<p align="center">
|
|
6
|
-
|
|
9
|
+
为 <b>DeepSeek Harness</b> 加上侧边聊天与划选注释。<br>
|
|
10
|
+
读到一个疑问,就在旁边聊透;有了结论,再带回正在推进的任务。
|
|
7
11
|
</p>
|
|
8
12
|
|
|
9
13
|
<p align="center">
|
|
10
|
-
<a href="
|
|
11
|
-
<a href="
|
|
12
|
-
<a href="
|
|
13
|
-
<
|
|
14
|
+
<a href="#安装">安装</a> ·
|
|
15
|
+
<a href="#看看它如何工作">功能演示</a> ·
|
|
16
|
+
<a href="docs/usage.md">使用指南</a> ·
|
|
17
|
+
<a href="README_EN.md">English</a>
|
|
14
18
|
</p>
|
|
15
19
|
|
|
16
20
|
<p align="center">
|
|
17
|
-
<a href="
|
|
21
|
+
<a href="https://www.npmjs.com/package/dsh-sidenote"><img src="https://img.shields.io/npm/v/dsh-sidenote?color=3B5BFD&label=npm" alt="npm version"></a>
|
|
22
|
+
<a href="https://github.com/g-yixuan/dsh-sidenote/actions/workflows/ci.yml"><img src="https://github.com/g-yixuan/dsh-sidenote/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
23
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-60708E" alt="MIT license"></a>
|
|
18
24
|
</p>
|
|
19
25
|
|
|
20
|
-

|
|
27
|
+
|
|
28
|
+
<p align="center"><sub>dsh-sidenote 0.6.0 · DSH 0.2.0-rc.2 · 原生侧栏 · 浅色主题</sub></p>
|
|
21
29
|
|
|
22
30
|
## 安装
|
|
23
31
|
|
|
32
|
+
在已安装 DSH 的环境中执行:
|
|
33
|
+
|
|
24
34
|
```bash
|
|
25
35
|
dsh plugin --profile web add dsh-sidenote
|
|
26
36
|
```
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
本地开发挂载:`dsh plugin --profile web add link:<本仓库路径>`(client 改动热重载,host 改动需重启 `dsh web`)。
|
|
31
|
-
|
|
32
|
-
## 侧边聊天——支线问题不打断主线
|
|
33
|
-
|
|
34
|
-
从当前主会话 **fork**(全量历史快照,不压缩)出独立侧边会话,在右侧栏多轮对话:
|
|
38
|
+
打开 DSH Web,点击会话顶栏的 **「侧边」**,或划选一段回复开始。也可输入 `/side` 打开侧聊,用 `Alt+J` 切换主、侧输入焦点。
|
|
35
39
|
|
|
36
|
-
-
|
|
37
|
-
- 与主对话**同一套渲染材质**:工具卡、思考预览、任务卡、模型/权限切换、`@` 引用、图片附件;
|
|
38
|
-
- 审批/提问**在面板内直接答复**,不用跳回主视图;跑完有 toast 通知;
|
|
39
|
-
- 继承历史默认折叠成指示卡;折叠态/滚动位置刷新不丢;`Alt+J` 主↔侧切焦点。
|
|
40
|
-
- 侧聊默认不进入左侧会话列表或搜索结果,创建时也不会先出现再消失;保存为正式会话后才列出。DSH 0.1.7+ 可在 **设置 → 通用设置 → 在会话列表中显示侧边聊天** 中找回较早的侧聊;该选择仅保存在当前浏览器、当前 DSH 地址。旧版继续归档隐藏,通过 `/side` 重开最近关闭。
|
|
40
|
+
原生侧栏宿主无需额外安装 `dsh-better-sidebar`;旧宿主按[兼容表](docs/compatibility.md)安装对应组合。
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
## 一个任务,容得下更多思路
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
### 有疑问,在旁边聊透
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
- 「保存为正式会话」转正进会话列表;`/side` 弹层重开最近关闭。
|
|
46
|
+
评审方案时想追问一个细节,读代码时想弄清一种实现,都可以从当前对话开一个侧聊。**完整历史随 fork 保留**,不用再交代一遍背景。
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
侧聊有独立的多轮对话、工具卡、模型和权限切换,也支持图片、`@` 引用以及面板内审批。主线和支线各自推进。
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
### 有想法,直接落在原文上
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
- 添加到主对话或侧边聊天都保存为同一类受控注释,使用同一套 chip 预览、逐条移除及批量清空;引用和注解全文保留,**草稿零污染**,可只发送引用;
|
|
55
|
-
- 新建注解点击编辑器外部或按 Enter 保存,Esc 明确取消;主→侧先等待选定 Tab 的真实子会话,等待期间可按 Esc 取消,失败则保留注解并提示重试;
|
|
56
|
-
- 通过宿主原生输入机发送,保留 `@` 引用、图片附件和队列/steer 仲裁;目标会话出现持久消息或真实队列记录后,这一批注释才标为已发送,气泡收成「批注 ×N」留痕;
|
|
57
|
-
- 保存的注释按目标会话隔离;存储不可用时提示仅保存在内存。发送失败保留注释与正文,提交期间新增或修改的注释留给下一条消息。
|
|
58
|
-
- 侧边 assistant 正文也支持局部划选、多段落、列表与代码引用,入口只向所在侧聊添加;继承历史同样归当前子会话。流式、跨消息、思考和控件不作为引用。角标与高亮跟随来源消息并裁剪到其可见区域;原文折叠时注释仍在 chip 中。
|
|
59
|
-
- 已保存注释刷新后保留。宿主恢复原生 tab 时重新绑定原子会话;未恢复侧栏时,可用 `/side` 中的“重开”恢复原子会话及注释。新建 fork 使用自己的独立注释列表。
|
|
60
|
-
|
|
61
|
-
| 划选浮层 | 注解编辑器 |
|
|
62
|
-
|---|---|
|
|
63
|
-
|  |  |
|
|
52
|
+
划选主对话或侧聊中的一段回复,写下问题或修改意见。**原文和注释一起保留**,可累积多条,发送前预览、移除,正文草稿照常编辑。
|
|
64
53
|
|
|
54
|
+
读到「没有结果时,引导用户调整搜索词」,就选中这一句,追问「这里如何设计才不会让用户卡住?」。
|
|
65
55
|
|
|
66
|
-
|
|
67
|
-
<summary><b>更多截图</b></summary>
|
|
56
|
+
### 有结论,带回正在做的事
|
|
68
57
|
|
|
69
|
-
|
|
70
|
-
|---|---|
|
|
71
|
-
|  |  |
|
|
58
|
+
侧聊回答下点击「回流到主会话」,**问题与回答成对带回**,出现在主输入框上方,随下一条消息送入主线。也可以整段回流,或将值得保留的侧聊保存为正式会话。
|
|
72
59
|
|
|
73
|
-
|
|
74
|
-
|---|---|
|
|
75
|
-
|  |  |
|
|
60
|
+
## 看看它如何工作
|
|
76
61
|
|
|
77
|
-
|
|
62
|
+
**划选一句 → 带着上下文追问 → 把结论带回主线。**
|
|
78
63
|
|
|
79
|
-
|
|
64
|
+

|
|
80
65
|
|
|
81
|
-
|
|
66
|
+
[观看清晰版 MP4](docs/assets/demo.mp4) · [查看静态截图](docs/assets/workflow.jpg)
|
|
82
67
|
|
|
83
|
-
|
|
68
|
+
<sub>以上素材重新录制于 dsh-sidenote 0.6.0 / DSH 0.2.0-rc.2。使用隔离环境中的示例对话与本地演示模型,展示真实界面操作;内容与回答为合成示例。</sub>
|
|
84
69
|
|
|
85
|
-
|
|
70
|
+
## 用起来顺手的细节
|
|
86
71
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
72
|
+
| 你关心的事 | Sidenote 如何处理 |
|
|
73
|
+
|---|---|
|
|
74
|
+
| 之前聊过的内容 | 侧聊继承完整历史,默认折叠,按需展开。 |
|
|
75
|
+
| 一次有多处意见 | 多条注释可以一起发送,也能逐条预览和移除。 |
|
|
76
|
+
| 发不出去怎么办 | 发送失败保留注释与正文,便于重试。 |
|
|
77
|
+
| 刷新后继续 | 已保存的注释保留;侧栏未恢复时,可从 `/side` 重开原侧聊。 |
|
|
78
|
+
| 不想让支线堆满列表 | 侧聊默认不进入会话列表和搜索,保存为正式会话后才列出。 |
|
|
79
|
+
| 结论值得长期保留 | 保存为正式会话,后续继续讨论。 |
|
|
92
80
|
|
|
93
|
-
|
|
81
|
+
具体操作、恢复行为和划选范围见[使用指南](docs/usage.md)。
|
|
94
82
|
|
|
95
|
-
|
|
96
|
-
|---|---|
|
|
97
|
-
| `pnpm typecheck` | tsc --noEmit |
|
|
98
|
-
| `pnpm test` | vitest 单测(先运行 build) |
|
|
99
|
-
| `pnpm build` | 类型声明 + tsdown(host ESM + client CJS bundle,纯度门) |
|
|
100
|
-
| `pnpm test:mount` | 真实 `dsh web` + 种子会话 + Playwright 挂载与交互验收(`BS_VERSION`/`DSH_CMD` 切版本矩阵) |
|
|
83
|
+
## 兼容与帮助
|
|
101
84
|
|
|
102
|
-
|
|
85
|
+
已验证的原生侧栏组合为 **DSH 0.1.5-rc.2、0.1.7-rc.2、0.2.0-rc.2**;旧版的三组 BS 组合继续保留验收。支持范围以[兼容与维护政策](docs/compatibility.md)中的精确版本为准。
|
|
103
86
|
|
|
104
|
-
|
|
87
|
+
遇到问题时,可在 **设置 → 通用设置 → dsh-sidenote 诊断模式** 开启诊断,查看并手动导出接入状态。[报告问题或提出建议](https://github.com/g-yixuan/dsh-sidenote/issues/new/choose)。
|
|
105
88
|
|
|
106
|
-
|
|
89
|
+
## 一起完善 Sidenote
|
|
107
90
|
|
|
108
|
-
|
|
91
|
+
欢迎补充使用反馈、复现问题、改进文档和提交代码,中文与 English 都可以。开发环境、命令和检查步骤见[贡献指南](CONTRIBUTING.md)。
|
|
109
92
|
|
|
110
|
-
MIT
|
|
93
|
+
[仓库维护](docs/maintaining.md) · [发布指南](docs/releasing.md) · [MIT License](LICENSE)
|
package/lib/client.js
CHANGED
|
@@ -619,7 +619,7 @@ window.__ModuleLoader__.load({
|
|
|
619
619
|
let dockRegistered = false;
|
|
620
620
|
let report = {
|
|
621
621
|
versions: {
|
|
622
|
-
sidenote: "0.6.
|
|
622
|
+
sidenote: "0.6.1",
|
|
623
623
|
dsh: "unknown",
|
|
624
624
|
betterSidebar: null
|
|
625
625
|
},
|
|
@@ -1234,14 +1234,14 @@ window.__ModuleLoader__.load({
|
|
|
1234
1234
|
document.head.appendChild(tag);
|
|
1235
1235
|
}
|
|
1236
1236
|
var diagnostics_module_css_default = {
|
|
1237
|
+
"panel": "tGe0LW_panel",
|
|
1238
|
+
"versions": "tGe0LW_versions",
|
|
1239
|
+
"actions": "tGe0LW_actions",
|
|
1237
1240
|
"list": "tGe0LW_list",
|
|
1238
|
-
"header": "tGe0LW_header",
|
|
1239
1241
|
"description": "tGe0LW_description",
|
|
1240
1242
|
"settingTitle": "tGe0LW_settingTitle",
|
|
1241
|
-
"actions": "tGe0LW_actions",
|
|
1242
1243
|
"trigger": "tGe0LW_trigger",
|
|
1243
|
-
"
|
|
1244
|
-
"panel": "tGe0LW_panel",
|
|
1244
|
+
"header": "tGe0LW_header",
|
|
1245
1245
|
"setting": "tGe0LW_setting"
|
|
1246
1246
|
};
|
|
1247
1247
|
//#endregion
|
|
@@ -3225,97 +3225,97 @@ window.__ModuleLoader__.load({
|
|
|
3225
3225
|
document.head.appendChild(tag);
|
|
3226
3226
|
}
|
|
3227
3227
|
var sidechat_module_css_default = {
|
|
3228
|
-
"
|
|
3228
|
+
"quoteBody": "_5KEEsG_quoteBody",
|
|
3229
|
+
"pendingBtnGhost": "_5KEEsG_pendingBtnGhost",
|
|
3230
|
+
"stopButton": "_5KEEsG_stopButton",
|
|
3231
|
+
"emptyTitle": "_5KEEsG_emptyTitle",
|
|
3232
|
+
"userRow": "_5KEEsG_userRow",
|
|
3233
|
+
"pendingOptionDesc": "_5KEEsG_pendingOptionDesc",
|
|
3234
|
+
"attachRemove": "_5KEEsG_attachRemove",
|
|
3235
|
+
"toolBody": "_5KEEsG_toolBody",
|
|
3236
|
+
"empty": "_5KEEsG_empty",
|
|
3237
|
+
"composerFoot": "_5KEEsG_composerFoot",
|
|
3238
|
+
"attachThumb": "_5KEEsG_attachThumb",
|
|
3239
|
+
"attachImg": "_5KEEsG_attachImg",
|
|
3240
|
+
"pendingDesc": "_5KEEsG_pendingDesc",
|
|
3229
3241
|
"toolRunning": "_5KEEsG_toolRunning",
|
|
3230
|
-
"
|
|
3231
|
-
"
|
|
3232
|
-
"
|
|
3242
|
+
"parentStrip": "_5KEEsG_parentStrip",
|
|
3243
|
+
"dotRunning": "_5KEEsG_dotRunning",
|
|
3244
|
+
"emptyText": "_5KEEsG_emptyText",
|
|
3233
3245
|
"pendingQText": "_5KEEsG_pendingQText",
|
|
3234
|
-
"
|
|
3235
|
-
"
|
|
3246
|
+
"transcript": "_5KEEsG_transcript",
|
|
3247
|
+
"stateDetail": "_5KEEsG_stateDetail",
|
|
3248
|
+
"modelSelect": "_5KEEsG_modelSelect",
|
|
3249
|
+
"reasoningBody": "_5KEEsG_reasoningBody",
|
|
3250
|
+
"composerChips": "_5KEEsG_composerChips",
|
|
3251
|
+
"stateScreen": "_5KEEsG_stateScreen",
|
|
3252
|
+
"assistantBody": "_5KEEsG_assistantBody",
|
|
3253
|
+
"todoDot": "_5KEEsG_todoDot",
|
|
3254
|
+
"slashItemActive": "_5KEEsG_slashItemActive",
|
|
3255
|
+
"sentChipRow": "_5KEEsG_sentChipRow",
|
|
3256
|
+
"densityRow": "_5KEEsG_densityRow",
|
|
3257
|
+
"pendingQuestion": "_5KEEsG_pendingQuestion",
|
|
3258
|
+
"actionGroup": "_5KEEsG_actionGroup",
|
|
3259
|
+
"emptyIcon": "_5KEEsG_emptyIcon",
|
|
3260
|
+
"sendButton": "_5KEEsG_sendButton",
|
|
3261
|
+
"attachRail": "_5KEEsG_attachRail",
|
|
3262
|
+
"pendingCard": "_5KEEsG_pendingCard",
|
|
3263
|
+
"slashMenu": "_5KEEsG_slashMenu",
|
|
3264
|
+
"pendingCustom": "_5KEEsG_pendingCustom",
|
|
3265
|
+
"todoItem": "_5KEEsG_todoItem",
|
|
3266
|
+
"pendingHead": "_5KEEsG_pendingHead",
|
|
3267
|
+
"todoText": "_5KEEsG_todoText",
|
|
3268
|
+
"headerSide": "_5KEEsG_headerSide",
|
|
3236
3269
|
"input": "_5KEEsG_input",
|
|
3270
|
+
"userBubble": "_5KEEsG_userBubble",
|
|
3237
3271
|
"densityToggle": "_5KEEsG_densityToggle",
|
|
3238
|
-
"
|
|
3239
|
-
"
|
|
3240
|
-
"densityRow": "_5KEEsG_densityRow",
|
|
3241
|
-
"stateScreen": "_5KEEsG_stateScreen",
|
|
3242
|
-
"quoteBody": "_5KEEsG_quoteBody",
|
|
3243
|
-
"composerChips": "_5KEEsG_composerChips",
|
|
3272
|
+
"pendingOptionActive": "_5KEEsG_pendingOptionActive",
|
|
3273
|
+
"toolLocations": "_5KEEsG_toolLocations",
|
|
3244
3274
|
"sentChip": "_5KEEsG_sentChip",
|
|
3245
|
-
"
|
|
3246
|
-
"visibilitySetting": "_5KEEsG_visibilitySetting",
|
|
3275
|
+
"nativeHost": "_5KEEsG_nativeHost",
|
|
3247
3276
|
"rowPreview": "_5KEEsG_rowPreview",
|
|
3248
|
-
"
|
|
3249
|
-
"
|
|
3250
|
-
"
|
|
3251
|
-
"
|
|
3252
|
-
"pendingHead": "_5KEEsG_pendingHead",
|
|
3253
|
-
"composerFoot": "_5KEEsG_composerFoot",
|
|
3254
|
-
"pendingBtnGhost": "_5KEEsG_pendingBtnGhost",
|
|
3277
|
+
"snapshotBody": "_5KEEsG_snapshotBody",
|
|
3278
|
+
"reflowButton": "_5KEEsG_reflowButton",
|
|
3279
|
+
"toolHead": "_5KEEsG_toolHead",
|
|
3280
|
+
"attachButton": "_5KEEsG_attachButton",
|
|
3255
3281
|
"sidechat-pulse": "_5KEEsG_sidechat-pulse",
|
|
3256
|
-
"slashMenu": "_5KEEsG_slashMenu",
|
|
3257
|
-
"sentChipRow": "_5KEEsG_sentChipRow",
|
|
3258
|
-
"slashItemName": "_5KEEsG_slashItemName",
|
|
3259
|
-
"slashItemDetail": "_5KEEsG_slashItemDetail",
|
|
3260
3282
|
"jumpBottom": "_5KEEsG_jumpBottom",
|
|
3261
|
-
"
|
|
3262
|
-
"
|
|
3263
|
-
"
|
|
3264
|
-
"
|
|
3265
|
-
"
|
|
3266
|
-
"stateDetail": "_5KEEsG_stateDetail",
|
|
3267
|
-
"pendingOptionActive": "_5KEEsG_pendingOptionActive",
|
|
3268
|
-
"dotPending": "_5KEEsG_dotPending",
|
|
3269
|
-
"toolBody": "_5KEEsG_toolBody",
|
|
3270
|
-
"pendingDesc": "_5KEEsG_pendingDesc",
|
|
3271
|
-
"root": "_5KEEsG_root",
|
|
3272
|
-
"errorRow": "_5KEEsG_errorRow",
|
|
3273
|
-
"toolGenericBody": "_5KEEsG_toolGenericBody",
|
|
3274
|
-
"attachRemove": "_5KEEsG_attachRemove",
|
|
3275
|
-
"pendingCard": "_5KEEsG_pendingCard",
|
|
3276
|
-
"toolError": "_5KEEsG_toolError",
|
|
3277
|
-
"rowActions": "_5KEEsG_rowActions",
|
|
3278
|
-
"pendingOptionDesc": "_5KEEsG_pendingOptionDesc",
|
|
3283
|
+
"toolBodyText": "_5KEEsG_toolBodyText",
|
|
3284
|
+
"snapshotText": "_5KEEsG_snapshotText",
|
|
3285
|
+
"pendingTitle": "_5KEEsG_pendingTitle",
|
|
3286
|
+
"inheritedBody": "_5KEEsG_inheritedBody",
|
|
3287
|
+
"writeNoticeClose": "_5KEEsG_writeNoticeClose",
|
|
3279
3288
|
"reasoning": "_5KEEsG_reasoning",
|
|
3280
|
-
"
|
|
3281
|
-
"
|
|
3282
|
-
"headerSide": "_5KEEsG_headerSide",
|
|
3283
|
-
"nativeHost": "_5KEEsG_nativeHost",
|
|
3284
|
-
"flowRowError": "_5KEEsG_flowRowError",
|
|
3285
|
-
"todoItem": "_5KEEsG_todoItem",
|
|
3286
|
-
"attachThumb": "_5KEEsG_attachThumb",
|
|
3287
|
-
"userRow": "_5KEEsG_userRow",
|
|
3288
|
-
"streamingHint": "_5KEEsG_streamingHint",
|
|
3289
|
-
"stopButton": "_5KEEsG_stopButton",
|
|
3290
|
-
"todoDot": "_5KEEsG_todoDot",
|
|
3289
|
+
"dotPending": "_5KEEsG_dotPending",
|
|
3290
|
+
"slashGroupTitle": "_5KEEsG_slashGroupTitle",
|
|
3291
3291
|
"slashItem": "_5KEEsG_slashItem",
|
|
3292
|
-
"
|
|
3293
|
-
"userBubble": "_5KEEsG_userBubble",
|
|
3294
|
-
"modelSelect": "_5KEEsG_modelSelect",
|
|
3295
|
-
"dotRunning": "_5KEEsG_dotRunning",
|
|
3296
|
-
"toolHead": "_5KEEsG_toolHead",
|
|
3292
|
+
"assistantRow": "_5KEEsG_assistantRow",
|
|
3297
3293
|
"writeNotice": "_5KEEsG_writeNotice",
|
|
3294
|
+
"pendingOption": "_5KEEsG_pendingOption",
|
|
3295
|
+
"visibilitySetting": "_5KEEsG_visibilitySetting",
|
|
3296
|
+
"toolGenericBody": "_5KEEsG_toolGenericBody",
|
|
3297
|
+
"noticeRow": "_5KEEsG_noticeRow",
|
|
3298
|
+
"composer": "_5KEEsG_composer",
|
|
3299
|
+
"body": "_5KEEsG_body",
|
|
3300
|
+
"flowRowError": "_5KEEsG_flowRowError",
|
|
3301
|
+
"todoBody": "_5KEEsG_todoBody",
|
|
3302
|
+
"slashItemDetail": "_5KEEsG_slashItemDetail",
|
|
3298
3303
|
"pendingBar": "_5KEEsG_pendingBar",
|
|
3299
|
-
"
|
|
3300
|
-
"
|
|
3301
|
-
"
|
|
3302
|
-
"
|
|
3304
|
+
"root": "_5KEEsG_root",
|
|
3305
|
+
"errorRow": "_5KEEsG_errorRow",
|
|
3306
|
+
"composerCard": "_5KEEsG_composerCard",
|
|
3307
|
+
"toolCard": "_5KEEsG_toolCard",
|
|
3303
3308
|
"flowRow": "_5KEEsG_flowRow",
|
|
3304
|
-
"
|
|
3305
|
-
"
|
|
3306
|
-
"
|
|
3307
|
-
"emptyTitle": "_5KEEsG_emptyTitle",
|
|
3308
|
-
"modelLabel": "_5KEEsG_modelLabel",
|
|
3309
|
+
"pendingBtnPrimary": "_5KEEsG_pendingBtnPrimary",
|
|
3310
|
+
"streamingHint": "_5KEEsG_streamingHint",
|
|
3311
|
+
"rowActions": "_5KEEsG_rowActions",
|
|
3309
3312
|
"dotIdle": "_5KEEsG_dotIdle",
|
|
3310
|
-
"
|
|
3311
|
-
"
|
|
3312
|
-
"
|
|
3313
|
-
"
|
|
3314
|
-
"
|
|
3315
|
-
"
|
|
3316
|
-
"pendingOption": "_5KEEsG_pendingOption",
|
|
3317
|
-
"actionGroup": "_5KEEsG_actionGroup",
|
|
3318
|
-
"writeNoticeClose": "_5KEEsG_writeNoticeClose"
|
|
3313
|
+
"toolError": "_5KEEsG_toolError",
|
|
3314
|
+
"modelLabel": "_5KEEsG_modelLabel",
|
|
3315
|
+
"pendingQHeader": "_5KEEsG_pendingQHeader",
|
|
3316
|
+
"slashItemName": "_5KEEsG_slashItemName",
|
|
3317
|
+
"pendingReason": "_5KEEsG_pendingReason",
|
|
3318
|
+
"pendingActions": "_5KEEsG_pendingActions"
|
|
3319
3319
|
};
|
|
3320
3320
|
//#endregion
|
|
3321
3321
|
//#region src/client/chat/ToolCard.tsx
|
|
@@ -5299,16 +5299,16 @@ ${entries.map((entry) => {
|
|
|
5299
5299
|
}
|
|
5300
5300
|
var annotations_module_css_default = {
|
|
5301
5301
|
"chipClearAll": "SVnebq_chipClearAll",
|
|
5302
|
-
"side": "SVnebq_side",
|
|
5303
|
-
"chipRow": "SVnebq_chipRow",
|
|
5304
|
-
"chipNumber": "SVnebq_chipNumber",
|
|
5305
|
-
"chipPanel": "SVnebq_chipPanel",
|
|
5306
5302
|
"chip": "SVnebq_chip",
|
|
5303
|
+
"chipRemove": "SVnebq_chipRemove",
|
|
5304
|
+
"chipNumber": "SVnebq_chipNumber",
|
|
5307
5305
|
"chipWrap": "SVnebq_chipWrap",
|
|
5308
|
-
"chipText": "SVnebq_chipText",
|
|
5309
5306
|
"chipNote": "SVnebq_chipNote",
|
|
5310
|
-
"
|
|
5311
|
-
"storageNotice": "SVnebq_storageNotice"
|
|
5307
|
+
"side": "SVnebq_side",
|
|
5308
|
+
"storageNotice": "SVnebq_storageNotice",
|
|
5309
|
+
"chipText": "SVnebq_chipText",
|
|
5310
|
+
"chipPanel": "SVnebq_chipPanel",
|
|
5311
|
+
"chipRow": "SVnebq_chipRow"
|
|
5312
5312
|
};
|
|
5313
5313
|
//#endregion
|
|
5314
5314
|
//#region src/client/annotations/chip.tsx
|
|
@@ -5733,6 +5733,11 @@ ${entries.map((entry) => {
|
|
|
5733
5733
|
composer.setDraft(event.target.value);
|
|
5734
5734
|
triggerCtl?.track(event.target.value, event.target.selectionStart ?? event.target.value.length, guardOf(composer.phase), composer.draftRev ?? 0);
|
|
5735
5735
|
},
|
|
5736
|
+
onPaste: (event) => {
|
|
5737
|
+
if (!composer.canAttach) return;
|
|
5738
|
+
const images = [...event.clipboardData.files].filter((file) => file.type.startsWith("image/"));
|
|
5739
|
+
if (images.length > 0 && composer.attachImages(images)) event.preventDefault();
|
|
5740
|
+
},
|
|
5736
5741
|
onKeyDown: (event) => {
|
|
5737
5742
|
if (menuOpen && triggerCtl !== null) {
|
|
5738
5743
|
const arbKey = arbitrateKeyOf(event.key);
|
|
@@ -7811,34 +7816,34 @@ ${entries.map((entry) => {
|
|
|
7811
7816
|
document.head.appendChild(tag);
|
|
7812
7817
|
}
|
|
7813
7818
|
var annotate_module_css_default = {
|
|
7814
|
-
"
|
|
7819
|
+
"editorAskRow": "_SVViG_editorAskRow",
|
|
7820
|
+
"sentCardTitle": "_SVViG_sentCardTitle",
|
|
7815
7821
|
"sentCardNote": "_SVViG_sentCardNote",
|
|
7816
7822
|
"hint": "_SVViG_hint",
|
|
7823
|
+
"dshSidenoteHintIn": "_SVViG_dshSidenoteHintIn",
|
|
7824
|
+
"editorEdit": "_SVViG_editorEdit",
|
|
7817
7825
|
"badgeSent": "_SVViG_badgeSent",
|
|
7818
|
-
"hintClose": "_SVViG_hintClose",
|
|
7819
7826
|
"editorSpacer": "_SVViG_editorSpacer",
|
|
7820
|
-
"
|
|
7821
|
-
"
|
|
7822
|
-
"
|
|
7823
|
-
"editorAsk": "_SVViG_editorAsk",
|
|
7824
|
-
"editorTarget": "_SVViG_editorTarget",
|
|
7825
|
-
"confirmButton": "_SVViG_confirmButton",
|
|
7826
|
-
"editorAskRow": "_SVViG_editorAskRow",
|
|
7827
|
-
"deleteButton": "_SVViG_deleteButton",
|
|
7828
|
-
"editorError": "_SVViG_editorError",
|
|
7829
|
-
"toolbarButton": "_SVViG_toolbarButton",
|
|
7830
|
-
"dshSidenoteHintIn": "_SVViG_dshSidenoteHintIn",
|
|
7827
|
+
"hintClose": "_SVViG_hintClose",
|
|
7828
|
+
"toolbar": "_SVViG_toolbar",
|
|
7829
|
+
"saveButton": "_SVViG_saveButton",
|
|
7831
7830
|
"sentChipRow": "_SVViG_sentChipRow",
|
|
7832
7831
|
"badge": "_SVViG_badge",
|
|
7832
|
+
"editorTarget": "_SVViG_editorTarget",
|
|
7833
7833
|
"highlight": "_SVViG_highlight",
|
|
7834
|
-
"
|
|
7834
|
+
"deleteButton": "_SVViG_deleteButton",
|
|
7835
|
+
"editorNew": "_SVViG_editorNew",
|
|
7836
|
+
"toolbarButton": "_SVViG_toolbarButton",
|
|
7837
|
+
"confirmButton": "_SVViG_confirmButton",
|
|
7835
7838
|
"sentCardQuote": "_SVViG_sentCardQuote",
|
|
7836
|
-
"
|
|
7837
|
-
"saveButton": "_SVViG_saveButton",
|
|
7838
|
-
"editorInput": "_SVViG_editorInput",
|
|
7839
|
+
"editorAsk": "_SVViG_editorAsk",
|
|
7839
7840
|
"editorFooter": "_SVViG_editorFooter",
|
|
7841
|
+
"editorInput": "_SVViG_editorInput",
|
|
7842
|
+
"cancelButton": "_SVViG_cancelButton",
|
|
7840
7843
|
"sentChip": "_SVViG_sentChip",
|
|
7841
|
-
"
|
|
7844
|
+
"editorTextarea": "_SVViG_editorTextarea",
|
|
7845
|
+
"editorError": "_SVViG_editorError",
|
|
7846
|
+
"toolbarBelow": "_SVViG_toolbarBelow"
|
|
7842
7847
|
};
|
|
7843
7848
|
//#endregion
|
|
7844
7849
|
//#region src/client/annotate/hint.tsx
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-sidenote",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "DSH web plugin: Codex-style side chat (fork the current session into a persistent side panel) + selection annotations with numbered badges and a composer chip. Runs directly on the DSH native right sidebar (DSH ≥ 0.1.5); dsh-better-sidebar is an optional peer for older hosts. / Codex 风格侧边聊天 + 划选注释的 DSH 插件。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -84,6 +84,11 @@ export function ComposerBar(props: {
|
|
|
84
84
|
composer.draftRev ?? 0,
|
|
85
85
|
)
|
|
86
86
|
}}
|
|
87
|
+
onPaste={(event) => {
|
|
88
|
+
if (!composer.canAttach) return
|
|
89
|
+
const images = [...event.clipboardData.files].filter(file => file.type.startsWith('image/'))
|
|
90
|
+
if (images.length > 0 && composer.attachImages(images)) event.preventDefault()
|
|
91
|
+
}}
|
|
87
92
|
onKeyDown={(event) => {
|
|
88
93
|
// 菜单开着先仲裁(上下/Enter 选中/Esc 关闭归控制器)。
|
|
89
94
|
if (menuOpen && triggerCtl !== null) {
|