dsh-select-quote 0.3.7 → 0.3.9

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
@@ -2,11 +2,11 @@
2
2
 
3
3
  [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/guide/quickstart) 的客户端插件:在对话里**划词加批注**——选中的原文连同你的评论一起交给模型,并让它在回答里明确指出说的是哪一段。
4
4
 
5
- - **划词工具条**:选中对话区任意文本,浮出「复制 / 添加到任务」;选中的是链接时多一个「打开链接」,用系统默认浏览器打开(绕开应用内浏览器);拖拽结束才出现,不挡操作
6
- - **批注卡片**:添加后输入框内出现摘要卡片(可多条),草稿里不会出现任何协议文本
7
- - **正文标记**:被划中的文字在原消息里留下虚线下划线 + 序号角标,点卡片条目会滚回那段文字
8
- - **模型回指**:模型回答里指向某条批注的位置,渲染成可点击的 chip
9
- - **对话记录**:已发送消息里的批注渲染成卡片,用户气泡只剩你打的问题
5
+ - **划词工具条**:选中对话区任意文本,浮出「复制 / 添加到任务」;选中的文本是 http(s) 链接(或落在链接上)时多一个「打开链接」,用系统默认浏览器打开(绕开应用内浏览器);拖拽结束才出现,不挡操作
6
+ - **批注摘要**:添加后输入框上方出现一块「N 条批注」摘要,草稿里不会出现任何协议文本
7
+ - **正文标记**:被划中的文字在原消息里留下淡色底、虚线下划线和序号角标,点摘要条目会滚回那段文字
8
+ - **模型回指**:模型回答里指向某条批注的位置,渲染成带预览的 chip
9
+ - **对话记录**:已发送消息仍由宿主气泡渲染(时间、复制、撤回都在),批注收成一块摘要,悬停(触屏点按)展开列表
10
10
  - **界面语言**:跟随 dsh 自己的语言设置,简体中文 / English / Русский
11
11
 
12
12
  ![screenshot](https://raw.githubusercontent.com/latte03/dsh-select-quote/main/assets/screenshot-1.png)
@@ -31,18 +31,19 @@ dsh --profile web
31
31
  ```bash
32
32
  git clone https://github.com/latte03/dsh-select-quote && cd dsh-select-quote
33
33
  pnpm install && pnpm run build
34
+ cp dev.patch.example.yml dev.patch.yml # 把 <CHECKOUT> 改成当前目录的绝对路径
34
35
  dsh web --patch "$PWD/dev.patch.yml"
35
36
  ```
36
37
 
37
- 打开 `http://127.0.0.1:3080`,在对话消息里划词即可看到工具条。`dev.patch.yml` 里的插件路径必须是绝对路径,换机器或换目录时改那一行;该文件不随 npm 包发布。
38
+ 打开 `http://127.0.0.1:3080`,在对话消息里划词即可看到工具条。本地 patch 里的插件路径必须是绝对路径(checkout 不在 profile 的 `node_modules` 里);`dev.patch.yml` 是每台机器自己的未跟踪文件,仓库只提供 `dev.patch.example.yml`。
38
39
 
39
40
  ## 用法
40
41
 
41
- 1. 在对话区选中一段文本,点「添加到任务」——到这一步批注就已经保存,输入框上方同步出现摘要卡片
42
- 2. 想补充的话在弹出的评论框里写一句,点「添加评论」或 `⌘/Ctrl + Enter`;不写就直接点空白处或「暂不评论」,批注同样保留
43
- 3. 悬停摘要卡片展开列表,可逐条编辑、删除或一键清空,点条目跳回正文对应文字
44
- 4. 正常打字发送,批注随消息一起交给模型,卡片随之消失
45
- 5. 模型回答里引用某条批注的位置显示为可点击 chip
42
+ 1. 在对话区选中一段文本,点「添加到任务」——到这一步批注就已经保存,输入框上方同步出现批注摘要。触屏下操作条固定在屏幕底部,不跟随选区挤在系统选择菜单旁边
43
+ 2. 想补充的话在弹出的评论框里写一句,点「添加评论」或 `⌘/Ctrl + Enter`;不写就直接点空白处或「暂不评论」,批注同样保留。触屏下评论在底部抽屉里完成,抽屉顶部会带上选中的原文
44
+ 3. 悬停(触屏点按)输入框上方的摘要展开列表,可逐条编辑、删除或一键清空,点条目跳回正文对应文字;对话记录里的摘要只提供列表和跳转。键盘聚焦摘要后按 Enter / ↓ 展开,Tab 在面板内移动,Esc 关闭并回到摘要
45
+ 4. 正常打字发送,批注随消息一起交给模型,摘要随之消失
46
+ 5. 模型回答里引用某条批注的位置显示为 chip:悬停、点击(触屏点按)或键盘聚焦都会打开预览,显示原文和评论;预览默认在 chip 上方,右上角「原文」按钮回到正文;键盘聚焦 chip 后按 ↓ 进入按钮,Esc 关闭
46
47
 
47
48
  ## 语言
48
49
 
@@ -60,24 +61,25 @@ dsh web --patch "$PWD/dev.patch.yml"
60
61
 
61
62
  ## 已知限制
62
63
 
63
- - **待发批注按会话持久化**:刷新页面、重启客户端后回到原会话,未发送的批注会原样回来(与草稿同在 localStorage,键各自独立);保留最近 20 个会话、7 天。发送即清除,切换会话跟着切,hero 里换工作区等于换会话,批注不跟着搬。
64
- - **占用了用户气泡的渲染**:本插件以最低优先级替换内置 `user` 节点。其它插件若替换同一个键(例如 `dsh-easyrewrite` 用 `-1`),会被本插件屏蔽。
65
- - **卡片宽度有限**:输入框内每条摘要最宽约为输入框的 1/4,超长标题走省略号。
64
+ - **待发批注按会话持久化**:刷新页面、重启客户端后回到原会话,未发送的批注会原样回来(与草稿同在 localStorage,键各自独立);保留最近 20 个会话、7 天。发送即清除,切换会话跟着切,hero 里换工作区等于换会话,批注不跟着搬。同一会话开多个标签页时通过 `storage` 事件同步,按最后写入为准;一个标签发送清空后,另一个标签不会把旧批注写回。
65
+ - **占用了用户气泡的渲染**:本插件以 `priority: -10` 接管内置 `user` / `steering` 节点,再委托宿主 `UserMessageNodeView` 渲染(只改写 `node` 的文本块,剥掉协议)。其它插件若也想接管这两个键,优先级数值必须小于 `-10` 才会赢过本插件;被别的接管者赢走时,本插件不再折叠消息里的协议块。
66
+ - **摘要宽度有限**:输入框上方只有一块摘要(约输入框的 1/5,148–220px),悬停列表里的原文和评论最多显示三行;编辑批注时原文完整显示,超过 132px 在框内滚动。
66
67
  - **划词只在对话区生效**:不介入编辑器、终端等面板。
68
+ - **创建选区仍依赖指针**:对话正文是静态渲染,没有可放置的键盘光标;键盘用户需借助光标浏览或辅助技术建立选区。选区建立后的工具条按钮可聚焦,摘要面板已支持 Enter / ↓ / Tab / Esc 与触屏点按。
67
69
 
68
70
  ## 常见问题
69
71
 
70
72
  **升级 dsh 之后功能不对?** 先 `pnpm run check`;产物没问题就对照 [`docs/internals.md`](docs/internals.md) 的「依赖的产品内部约定」逐条复核,那里列了所有产品内部名。
71
73
 
72
- **划词没有工具条?** 确认选区在对话区而不是编辑器里;刷新页面(样式与观察者是幂等注入的);宿主 boot 日志里应出现 `dsh-select-quote`。工具条挂在对话滚动区里,随正文一起滚动,滚到顶部会像正文一样滑进 header 下面;选中行完全滚出视口后收起,滚回去重新出现。
74
+ **划词没有工具条?** 确认选区在对话区而不是编辑器里;刷新页面(样式与观察者是幂等注入的);宿主 boot 日志里应出现 `dsh-select-quote`。桌面端工具条挂在对话滚动区里,随正文一起滚动,滚到顶部会像正文一样滑进 header 下面;选中行完全滚出视口后收起,滚回去重新出现。触屏下工具条固定在屏幕底部。
73
75
 
74
76
  **点空白处批注会丢吗?** 不会。点「添加到任务」时批注已经保存,空白点击只关闭评论框;已经写了一半的评论会一并保存到那条批注上。
75
77
 
76
78
  **输入框里出现了协议原文?** 发送前的注入没生效,一般是 composer 结构变了——检查 `[data-composer-card]` 是否还在。
77
79
 
78
- **对话记录里没有批注卡片?** 卡片渲染在用户气泡内部,若 `user` 节点被别的接管者赢走,或那条消息里确实没有批注块,都不会出现。
80
+ **对话记录里没有批注摘要?** 摘要块渲染在宿主用户气泡上方;若 `user` 节点被别的接管者赢走、或那条消息里确实没有批注块,都不会出现。块的开闭标记完整但 JSON 损坏时,气泡只剥掉协议原文、不显示摘要。宿主视图解析失败是另一回事:摘要还在,只是气泡退回纯文本、时间/复制行不再渲染。
79
81
 
80
- **界面语言不跟着 dsh 变?** 文案取自宿主的语言服务;宿主没有该服务或语言未注册时回退到 English。此时确认 dsh 版本带 `dsh-client-locale`,以及设置里确有语言选项。
82
+ **界面语言不跟着 dsh 变?** 文案取自宿主的语言服务。插件依赖宿主的 `locale` 服务(由 `@deepseek-ai/dsh-client-locale` 提供,随 dsh 内置);服务缺失时插件不会激活,而不是静默回退到 English。语言存在但词典缺键时按 `en` 兜底。确认设置里确有语言选项。
81
83
 
82
84
  **改了 CSS 不生效?** 样式只注入一次,刷新页面。
83
85
 
@@ -91,7 +93,7 @@ pnpm run watch # 增量重建
91
93
 
92
94
  依赖用 pnpm 管理(锁文件 `pnpm-lock.yaml`);构建产物 `lib/` 随源码一起提交,运行时直接读它。
93
95
 
94
- `pnpm run verify` 无头执行产物,断言 8 项贡献都注册上,并检查三份词典的键与 `{placeholder}` 在每种语言里都齐备(复数消息必须有 `.other` 兜底),外加插件页展示元信息(locale + icon)按宿主的读取规则解析、并核对 `npm pack` 的实际发货清单。
96
+ `pnpm run verify` 无头执行产物:断言 9 项贡献都注册上,检查三份词典的键与 `{placeholder}` 在每种语言里都齐备(复数消息必须有 `.other` 兜底)、插件页展示元信息(locale + icon)按宿主规则解析、`npm pack` 实际发货清单。它还会回放批注持久化与跨标签同步、链接识别、宿主视图解析、发送手势、协议块读写与回声剥离等关键路径。
95
97
 
96
98
  ### 热更新到桌面客户端
97
99
 
@@ -117,7 +119,7 @@ fork 后开分支,提交前跑 `pnpm run check`。一个 PR 只讲一件事,
117
119
 
118
120
  ## 致谢
119
121
 
120
- - [@imallakov](https://github.com/imallakov):多语言文案、跨平台构建、装饰器楔死修复与批注卡片归属(PR #2 / #3 / #4)
122
+ - [@imallakov](https://github.com/imallakov):多语言文案、跨平台构建、装饰器楔死修复与批注归属(PR #2 / #3 / #4)
121
123
  - [@EliteOtaku](https://github.com/EliteOtaku):桌面端渲染进程楔死的定位报告与 CDP 探针方法([#1](https://github.com/latte03/dsh-select-quote/issues/1))
122
124
 
123
125
  ## License
package/cordis.patch.yml CHANGED
@@ -12,7 +12,8 @@
12
12
  #
13
13
  # Local development from a checkout cannot use this file — the checkout is not
14
14
  # in the profile's node_modules, so the loader has no name to resolve. Use
15
- # `dev.patch.yml` (absolute path) with `dsh web --patch` instead.
15
+ # `dev.patch.yml` (copied from `dev.patch.example.yml`, absolute path) with
16
+ # `dsh web --patch` instead.
16
17
  - insert:
17
18
  - id: select-quote
18
19
  name: 'dsh-select-quote'