dsh-sidecard-ask 1.6.0 → 1.7.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/CHANGELOG.md +69 -0
- package/README.md +22 -7
- package/client.js +1257 -31
- package/index.js +134 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.7.1
|
|
4
|
+
|
|
5
|
+
**主题:P1 体验补齐——后台通知、历史卡片管理、答后追问芯片、右键菜单、作答透明信息、键盘操作。**
|
|
6
|
+
|
|
7
|
+
- **作答完成后台通知**:新增 `notifyOnDone`(默认关)。仅当页面处于后台(其它标签页/窗口)且作答
|
|
8
|
+
到达终态(完成/失败)时弹系统 Notification;设置页打开开关时即时请求浏览器通知权限,
|
|
9
|
+
权限拒绝/环境不支持时就地说明并静默降级;同一张卡至多通知一次,点击通知聚焦页面。
|
|
10
|
+
- **历史卡片管理中心**:localStorage schema **v1 → v2**(新增 `createdAt`、provider、耗时);
|
|
11
|
+
首次启动自动从 v1 非破坏式导入(v1 键保留,便于降级)。设置页新增「历史追问卡片」区:
|
|
12
|
+
关键字搜索(问题/答案)、恢复到浮层、复制、单条删除、清空全部(带确认)。
|
|
13
|
+
新增 `historyMaxCards`(0–50,默认 10,**0 = 不写盘**)。语义变化:**关闭浮层卡片不再删除
|
|
14
|
+
持久历史**(1.7.0 及以前会随关闭清空),历史改由管理中心显式删除。
|
|
15
|
+
- **答后通用追问芯片**:已完成/已停止的侧边卡片答案下出现「更简短 / 更详细 / 举个例子 /
|
|
16
|
+
译成英文」四个固定芯片,一键追加一轮(旧问答进入 history,区别于 1.7.0 的「改问」重新生成当前轮)。
|
|
17
|
+
- **选区右键菜单**:新增 `contextMenu`(默认开)。在可触发区域右键选中文字时,菜单顶部出现
|
|
18
|
+
「追问选中内容」+ 前三个已启用快捷动作;任何门槛不满足(编辑框内/区域过滤/开关关闭/非 leader)
|
|
19
|
+
都**不拦截**原生右键菜单,作为与宿主菜单冲突时的回退;滚动/Esc/外部点击自动关闭。
|
|
20
|
+
- **作答透明信息**:卡片问题下显示 provider(子代理)与本次作答耗时(`<1s`/`Ns`/`XmYs`),
|
|
21
|
+
随历史持久化;开始事件的 `provider` 字段下放到卡片。
|
|
22
|
+
- **键盘操作**:提问框中 `Alt+1..9` 直接触发对应芯片;芯片行支持 ←/→/Home/End 焦点环移;
|
|
23
|
+
卡片可聚焦(tabIndex 0),聚焦后 `R` 重试(失败/停止态)、`C` 复制答案、`Esc` 取消聚焦,
|
|
24
|
+
卡片标题悬停可见按键提示;插件自身输入框内不拦截任何快捷键。
|
|
25
|
+
- 新增样式 `.dsa-ctxmenu/.dsa-ctx-item/.dsa-fu-chips/.dsa-hist-*`,右键菜单根节点同步
|
|
26
|
+
Electron `-webkit-app-region:no-drag` 守卫;中英词典新增 40+ 键(整表奇偶断言锁定)。
|
|
27
|
+
|
|
28
|
+
本机实测:verify 53 / contract 721 / float-placement 38 / smoke 192 = **1004 项全部通过**
|
|
29
|
+
(较 1.7.0 的 861 项新增 143 项;含通知决策真值表/耗时格式化/v1→v2 迁移与
|
|
30
|
+
历史恢复-删除-清空/右键菜单拦截与开关回退/Alt+数字与答后芯片端到端/新配置宿主校验等)。
|
|
31
|
+
|
|
32
|
+
> 未验证(如实记录):浏览器与桌面 Electron 内的视觉观感与真实点按仍需人工确认——重点是
|
|
33
|
+
> ①系统通知在切后台后的真实弹出与权限弹窗;②右键菜单是否与宿主自身选区菜单冲突
|
|
34
|
+
> (Electron 菜单加速键也未在真机验证);③历史管理区长列表观感。测试覆盖组件树、
|
|
35
|
+
> 事件监听与端到端数据流,替代不了真机观感。
|
|
36
|
+
|
|
37
|
+
## 1.7.0
|
|
38
|
+
|
|
39
|
+
**主题:P0 交互提效——一键快捷动作、自定义动作模板、改问重试、代码块复制。**
|
|
40
|
+
|
|
41
|
+
- **一键快捷动作条(划词主路径 4 步 → 1 步)**:选中文字后,触发按钮旁直接出现
|
|
42
|
+
「解释 / 翻译 / 总结 / 润色 / 纠错」五个动作芯片,点击即跳过提问框、以预置问题
|
|
43
|
+
直接在侧边卡片发起作答;提问框顶部也有同一排芯片(`Alt+Q` 与"仅快捷键"用户同样可达)。
|
|
44
|
+
芯片 `title` 悬停展示完整问题指令与快捷键。
|
|
45
|
+
- **自定义动作模板**:新增配置项 `quickActions`(三层合并、随用户层持久化)。
|
|
46
|
+
设置页「快捷动作」区可启用/停用内置动作、为每个动作配独立快捷键、新增/删除自定义动作
|
|
47
|
+
(名称 + 问题指令 + 快捷键),问题指令支持 `{selection}` 占位符(内嵌选中正文;
|
|
48
|
+
不写占位符时原文按既有方式随问题附上)。内置 5 个动作的文案在客户端按界面语言解析,
|
|
49
|
+
配置与线协议保持语言中立。
|
|
50
|
+
- 宿主端新增**有界结构校验** `sanitizeQuickActions`:≤12 条、id 唯一且 ≤40 字符、
|
|
51
|
+
自定义动作名称 1–20 字 / 问题 1–500 字、快捷键 ≤40 字符;任何一条非法即**整表拒绝**
|
|
52
|
+
(`/config` 返回 `invalid-config`),不做半表保存。客户端保存前同样预检,
|
|
53
|
+
并检查动作快捷键之间、动作与主快捷键之间的冲突(大小写不敏感)。
|
|
54
|
+
- 每个动作的快捷键在页面 keydown 捕获阶段分发:主快捷键优先;在插件自己的输入框/编辑器中
|
|
55
|
+
不拦截任何快捷键;无选区时回退到最近一次触发候选(与主快捷键同语义)。
|
|
56
|
+
- **编辑问题后重新提问(改问重试)**:终态侧边卡片(已完成 / 失败 / 已停止)新增「改问」按钮,
|
|
57
|
+
就地编辑原问题后**重新生成当前这一轮**(不把旧问答压入 history,区别于"继续追问"的追加一轮);
|
|
58
|
+
原「重试」保留(原样重发,仅失败/停止态显示);空问题不触发。
|
|
59
|
+
- **代码块单独复制**:答案中的围栏代码块右上角新增复制按钮,复用既有剪贴板 API →
|
|
60
|
+
选区降级链与 toast 提示;`pre` 改为 `pre-wrap` 容器承载,代码文本与样式不变。
|
|
61
|
+
- 浮层/弹层样式新增 `.dsa-quickbar` / `.dsa-chip` / `.dsa-pre-wrap` / `.dsa-code-copy` /
|
|
62
|
+
`.dsa-qa-*`,并同步加入 Electron 窗口拖拽守卫(`-webkit-app-region:no-drag`)。
|
|
63
|
+
|
|
64
|
+
本机实测:verify 53 / contract 589 / float-placement 38 / smoke 181 = **861 项全部通过**
|
|
65
|
+
(较 1.6.0 的 577 项新增 284 项;含动作解析/占位符截断/快捷键冲突/宿主整表校验/
|
|
66
|
+
芯片与触发条渲染/quickAsk 与 retryEdit 端到端/代码块复制按钮/中英词典整表奇偶等用例)。
|
|
67
|
+
|
|
68
|
+
> 未验证(如实记录):浏览器与桌面 Electron 内的视觉观感与真实点按——本工作区无 GUI 自动化
|
|
69
|
+
> 接入运行实例,动作条换行/定位、芯片点击、代码块复制按钮、设置页编辑器需在真实页面按
|
|
70
|
+
> README 第九节路径人工确认;单测覆盖组件树与端到端数据流,替代不了观感验证。
|
|
71
|
+
|
|
3
72
|
## 1.6.0
|
|
4
73
|
|
|
5
74
|
**主题:最新版 DSH(0.2.1-alpha.2)适配 + 新旧包名共载时的单例护栏。**
|
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
| 路径 | 操作 | 期望结果 |
|
|
44
44
|
|---|---|---|
|
|
45
|
-
| **A. 就地追问(侧边卡片)** | 在聊天区选中一句话 →
|
|
45
|
+
| **A. 就地追问(侧边卡片)** | 在聊天区选中一句话 → 点浮出的按钮(或点旁边的「解释/翻译/总结/润色/纠错」芯片一键发起)→ 输入问题 → Enter | 右下角浮出卡片,答案逐字流出;卡片底部有「复制 / 继续追问 / 改问 / 关闭」,代码块右上角可单独复制 |
|
|
46
46
|
| **B. 主对话追问** | 选中 → 提问框里把「作答位置」切到**主对话** → Enter | 追问以引用块形式出现在主对话,答案由当前会话正常流式输出 |
|
|
47
47
|
| **C. 快捷键 + 降级** | 选中 → 按 `Alt+Q`(默认) | 直接弹出提问框;若侧边作答引擎不可用,卡片给出错误提示与「改到主对话」按钮 |
|
|
48
48
|
|
|
@@ -159,6 +159,10 @@ plugin_manager(action="install_bundle", target="D:\\Users\\34332\\AI\\dsh-sideca
|
|
|
159
159
|
| `sideTools` | `readonly` \| `inherit` | `readonly` | 侧边作答者的工具权限:只读白名单 / 继承当前会话 | 下一次提问 |
|
|
160
160
|
| `sideTimeoutMs` | 5000–3600000 | `180000` | 单次侧边作答超时 | 下一次提问 |
|
|
161
161
|
| `sideProvider` | 字符串 \| `auto` | `auto` | 指定子代理 provider(`auto` 优先 `spawn`) | 下一次提问 |
|
|
162
|
+
| `quickActions` | 动作数组(≤12 条) | 5 个内置动作 | **一键快捷动作**:选中后按钮旁的动作芯片。条目形如 `{id, enabled, shortcut}`;内置 id 为 `builtin:explain/translate/summarize/polish/fix`,自定义动作(非 `builtin:` 前缀)还需 `label`(≤20 字)与 `question`(≤500 字,可用 `{selection}` 内嵌选中正文)。设置页可视化编辑,用户层整表覆盖默认值 | 立即(快捷键下次按键生效) |
|
|
163
|
+
| `notifyOnDone` | 布尔 | `false` | 页面在后台时,作答完成/失败是否弹系统通知;首次开启需浏览器通知权限 | 立即 |
|
|
164
|
+
| `contextMenu` | 布尔 | `true` | 是否在可触发选区的右键菜单顶部加入追问与快捷动作;与宿主菜单冲突时可关 | 立即 |
|
|
165
|
+
| `historyMaxCards` | 0–50 | `10` | 历史卡片持久化上限(localStorage v2);`0` = 不写盘(已有历史保留到显式清空) | 立即 |
|
|
162
166
|
|
|
163
167
|
非法值会被拒绝(设置页报错、接口返回 `invalid-config`),并把被忽略的项列在 `/state` 的 `problems` 里——不会静默吞掉。
|
|
164
168
|
|
|
@@ -456,12 +460,23 @@ node tools/compat-probe.mjs --json tools/.cache/matrix.json
|
|
|
456
460
|
### A. 路径一:就地追问 → 侧边卡片流式作答
|
|
457
461
|
|
|
458
462
|
1. 在聊天区选中一句**非输入框内**的文本(例如助手消息里的半句话);
|
|
459
|
-
2.
|
|
460
|
-
|
|
463
|
+
2. 选区末端应浮出动作条:「💬 追问选中内容」按钮 + 「解释 / 翻译 / 总结 / 润色 / 纠错」芯片,
|
|
464
|
+
按钮带区域徽标(聊天区 / 任务区 / 跨区选择);**点任一芯片即跳过提问框直接在侧边卡片作答**;
|
|
465
|
+
3. 点主按钮后提问框出现(顶部同样有一排芯片),焦点在输入框,引文预览显示选中文本;
|
|
461
466
|
4. 输入问题按 Enter → 提问框关闭,右下角出现卡片,状态先为「作答中…」并**逐字增长**;
|
|
462
|
-
5.
|
|
463
|
-
6. 点「复制」→ 出现「已复制」提示;点「继续追问」→
|
|
467
|
+
5. 结束后状态变「已完成」;底部出现「改问 / 复制 / 继续追问 / 关闭」;答案里代码块的右上角有「⧉ 复制代码」;
|
|
468
|
+
6. 点「复制」→ 出现「已复制」提示;点「继续追问」→ 输入第二条问题(追加一轮),卡片内容**重置换行**后继续流式;
|
|
469
|
+
点「改问」→ 修改当前问题后**重新生成这一轮**(不追加历史);
|
|
464
470
|
7. 点「关闭」→ 卡片消失;若承载面是 better-sidebar/原生右侧栏,对应 tab 也应关闭。
|
|
471
|
+
7b. 设置页「快捷动作」区:可停用内置动作、给动作配快捷键(如 `Alt+T`)、添加自定义动作
|
|
472
|
+
(名称 + 问题指令,指令里可写 `{selection}`);配好后选中文字直接按快捷键等价于点芯片。
|
|
473
|
+
7c. 答案完成后:问题下方显示「模型 spawn · 耗时 Xs」,答案下方出现
|
|
474
|
+
「更简短 / 更详细 / 举个例子 / 译成英文」芯片;卡片可 Tab 聚焦,`R` 重试、`C` 复制、`Esc` 失焦。
|
|
475
|
+
7d. 在选中文字上**右键**:应出现本插件菜单(追问 + 前三个快捷动作);设置页关闭「选区右键菜单」后,
|
|
476
|
+
右键恢复为宿主原生菜单。
|
|
477
|
+
7e. 设置页勾选「完成后桌面通知」会请求通知权限;授权后切到其它标签页/窗口,作答结束时应弹系统通知。
|
|
478
|
+
7f. 设置页「历史追问卡片」:可搜索、恢复到浮层、单条删除、清空;「历史卡片保存数量」设 0 后新卡片不再写盘;
|
|
479
|
+
注意:**关闭浮层卡片不会删历史**(1.8.0 起历史只在管理中心删除)。
|
|
465
480
|
8. **浮层形态与位置(1.5.0)**:默认应是一个**一行高的胶囊**(状态 + 问题首句),点它才展开成完整卡片;
|
|
466
481
|
展开后标题栏右侧有「收起为胶囊」(⇥)与「隐藏浮层」(×)——隐藏后只剩一个带计数的圆点,点它恢复。
|
|
467
482
|
用 F12 选中浮层根节点(`[data-dsa-root]`)读两个值自检:
|
|
@@ -510,8 +525,8 @@ node test/smoke-test.mjs # 端到端:流式/截断/取消/持久化/失
|
|
|
510
525
|
```
|
|
511
526
|
|
|
512
527
|
四个脚本都以 `process.exitCode` 反映结果,失败会列出具体条目;测试会把 `DSH_HOME` 指向临时目录,不会污染真实配置。
|
|
513
|
-
当前规模(1.
|
|
514
|
-
smoke **
|
|
528
|
+
当前规模(1.8.0 本机实测,四项均 exit 0):verify **53** 项 + contract **721** 项 + float-placement **38** 项 +
|
|
529
|
+
smoke **192** 项 = **1004 项全部通过**。
|
|
515
530
|
|
|
516
531
|
> 1.5.0 之前这里还放过 `tools/balance-check.mjs` 与 `tools/i18n-check.mjs` 两个「替代检查」。
|
|
517
532
|
> 它们已被**删除**:前者用「正则字面量 vs 除号」的启发式判断,把 8 个源文件全部误报为残损;
|