dsh-quick-toc 0.7.10 → 0.7.12
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.en.md +10 -0
- package/CHANGELOG.md +10 -0
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/lib/client.js +69 -5
- package/package.json +9 -5
package/CHANGELOG.en.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to **dsh-quick-toc** are documented here. Chinese version: [CHANGELOG.md](CHANGELOG.md).
|
|
4
4
|
|
|
5
|
+
## [0.7.12] - 2026-09-28
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **DSH 0.2.0-rc.1 support**: no code changed; the declared host range now reaches into 0.2.x, because a ceiling below 0.2.0 makes DSH's compatibility preflight refuse to load the plugin. An isolated environment was exercised point by point (the host starts without a warning, the composed config holds one entry for this plugin, the Plugins page entry and its configuration card, the card's write landing in the settings document, a clean console).
|
|
9
|
+
|
|
10
|
+
## [0.7.11] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **The three pointer triangles now have rounded corners, and the dock toggle's is as large as the other header icons**: the triangles on the side handle, the droplet on the tab strip and the dock toggle were sharp-cornered, and the toggle's was noticeably smaller than its neighbours; all three now share one rounded outline and the toggle's matches the header icons.
|
|
14
|
+
|
|
5
15
|
## [0.7.10] - 2026-09-28
|
|
6
16
|
|
|
7
17
|
### Fixed
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
**dsh-quick-toc** 的重要变更都记录在这里。英文版见 [CHANGELOG.en.md](CHANGELOG.en.md)。
|
|
4
4
|
|
|
5
|
+
## [0.7.12] - 2026-09-28
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
- **支持 DSH 0.2.0-rc.1**:插件代码未改动,只是把声明的宿主版本范围放宽到 0.2.x——范围上限停在 0.2.0 之前时,DSH 的兼容性预检会直接拒绝加载本插件。隔离环境里逐项实测通过(宿主启动无告警、配置里本插件只有一条、插件页条目与配置卡片、卡片写入落到设置文档、控制台无错误)。
|
|
9
|
+
|
|
10
|
+
## [0.7.11] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
### 变更
|
|
13
|
+
- **三处指示三角改为圆角,停靠按钮的三角放大到与其他顶栏图标相当**:侧边把手、顶部水滴和停靠边切换按钮上的三角原本是尖角,其中停靠按钮那颗明显偏小;现在三者共用同一套圆角轮廓,大小也与顶栏图标一致。
|
|
14
|
+
|
|
5
15
|
## [0.7.10] - 2026-09-28
|
|
6
16
|
|
|
7
17
|
### 修复
|
package/README.en.md
CHANGED
|
@@ -42,7 +42,7 @@ A conversation TOC plugin for [DeepSeek Harness](https://github.com/deepseek-ai/
|
|
|
42
42
|
|
|
43
43
|
| Plugin | Supported DSH |
|
|
44
44
|
| --- | --- |
|
|
45
|
-
| **0.7.x** (latest, 0.7.
|
|
45
|
+
| **0.7.x** (latest, 0.7.12) | 0.1.5-rc.3, 0.1.7-alpha.1, 0.1.7-alpha.2, 0.1.7-rc.1, 0.1.7-rc.2, 0.2.0-rc.1 |
|
|
46
46
|
| 0.6.x (0.6.3) | 0.1.5-rc.1, 0.1.5-rc.2 |
|
|
47
47
|
| 0.5.x (0.5.1) | 0.1.5-rc.1, 0.1.5-rc.2 |
|
|
48
48
|
| 0.4.x (0.4.1) | 0.1.5-rc.1, 0.1.5-rc.2 |
|
|
@@ -51,7 +51,7 @@ A conversation TOC plugin for [DeepSeek Harness](https://github.com/deepseek-ai/
|
|
|
51
51
|
|
|
52
52
|
Each major line lists only its newest patch (the defects a new feature introduces are fixed in the patches that follow, so within one major line the newest patch is the one to use; older patches keep working — the plugin does not break existing interfaces).
|
|
53
53
|
|
|
54
|
-
`engines.dsh` is declared as **`>=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.
|
|
54
|
+
`engines.dsh` is declared as **`>=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.3.0-0`**, with the peer ranges shaped the same way (a prerelease must be given an explicit branch: node-semver admits one only when some comparator in the range sits on that version's exact `major.minor.patch` tuple and carries a prerelease tag of its own, so a plain `>=0.1.5-rc.1` never matches `0.1.7-alpha.1`). **0.2.0-rc.1 was tested** with no code change: only the declared ceiling moved from `<0.2.0-0` to `<0.3.0-0`, because a ceiling below 0.2.0 makes DSH's plugin-compatibility preflight **refuse to load this plugin** (the exact message: `Plugin dsh-quick-toc@0.7.11 is incompatible with dsh 0.2.0-rc.1: peerDependencies {…}`, leaving only a per-version exemption or a plugin version that declares the range). With the widened range an isolated `DSH_HOME` was exercised point by point: the host starts without a warning, `--dump-config` holds exactly one entry for this plugin and no error/duplicate, the Plugins page's official group carries the entry with its configuration card already open (11 fields), a click on the card lands in the profile's settings document, and the console stays clean; the panel and its collapse animation were also fine on a long session (a real 79 MB one). 0.7.3 was tested on **0.1.5-rc.3** and **0.1.7-alpha.2** (the panel and the curtain, row jumps and older-history loading, the title/full-text/cross-session searches, switching sessions from a cross-session hit, the configuration card and the host settings document's reads and writes were each exercised), and neither release needed a code change — checked offline as well: rc.3 differs from rc.2 only in each package's `package.json` version (plus two sidebar files), and alpha.2's changes sit in the session controller and the chat renderer while every interface and node shape this plugin uses is still there (`turnOutline`, `turn-error`, `useChat`, `data-chat-anchor-key`, `sessions.search`, `loadThrough`, `settings.*` and both card slots; the two extra `data-conversation-scroll` hits in alpha.2 are stylesheet text, not a second scroll container). 0.7.2 was tested on **0.1.5-rc.2** (the curtain scale was confirmed point by point: at three factors the curtain box keeps its width, height and position while only the content scales, both slider ends, the write-on-release behaviour and the default rendering were exercised, and the two scales were confirmed independent); 0.7.1 was tested on **0.1.5-rc.2** (the "back to where I left" floating button, the leave positions the panel and the curtain record separately, the row being read landing at the top when a surface opens, and the absence of the button after closing at the bottom were each confirmed); 0.7.0 was tested on the same release (the full-width curtain and its droplet handle, the jump-to-section-end buttons, cross-session search, keyboard navigation, the questions-only view and the remembered reading position were each exercised in a real browser; the panel scale, a dragged size reaching storage and coming back, and the collapsed handle's position had been measured before that); on **0.1.5-rc.1** the plugin's loading and client-module delivery were tested for real (the host boots without errors, `--dump-config` carries the quick-toc entry, the combined client bundle URL lists `dsh-quick-toc/client.js`, and the bytes it serves contain this release's curtain handle, jump-to-section-end and reading-position markers). The host interfaces it relies on — the `turnOutline` projection, the session-scoped `useProjection`, the client `sessions` service and its `loadThrough` jump loader (since 0.5.0), the `turn-error` node used for failed turns (since 0.5.1), and the host `settings` service (`installSection`), the client `settingsScope` and the `settings.plugin.item` card slot added in 0.6.0, and the client `sessions.search` that 0.7.0's cross-session search calls — were checked one by one against the installed 0.1.5-rc.1 and 0.1.5-rc.2 bundles, whose code is byte-identical between the two releases (`dsh-client-ui-chat` differs by a single CSS declaration unrelated to this plugin, and the package that carries `search`, `dsh-api-session-controller`, is byte-identical down to the same limits: at most 20 hits per search, 240 code points per snippet), so both releases are claimed. Older DSH versions are unverified and therefore not claimed; on an older DSH the newest usable plugin version is **0.3.2**. **0.1.7-alpha.1 passes too**, in a real instance inside an isolated `DSH_HOME`: the host boots without errors, and the panel and curtain, row jumps and older-history loading, the title/full-text/cross-session searches and switching sessions from a cross-session hit were each exercised in a real browser, with the settings document's reads and writes confirmed as well. To that end 0.7.2 speaks both host lines — on 0.1.5-rc.x it uses the host's `settings.installSection`, the client `settingsScope` and the `settings.plugin.item` card slot; on 0.1.7-alpha.x it uses `settings.configure`, the client `configForms` and the `plugins.bundle.config` card slot, and switches sessions through `uiWorkspace.openSession`. The plugin picks whichever exists at runtime, and **declares no settings service in `inject` at all** (declaring one a host does not provide parks the whole package, which on 0.1.7-alpha.1 stopped the entire web boot from finishing). On install or update, the market (dshmarket) reads `engines.dsh` (or `dsh.engines.dsh`) and the `@deepseek-ai/dsh-*` peer ranges present in the local install from the npm `latest` manifest, shows the host requirement a plugin declares on its card, and offers an optional filter that hides only entries confirmed to mismatch the running host; `dsh.compatibility.dshReleases` is this repository's own record, read by neither DSH nor the market. **0.1.7-rc.1 passes as well** (the 0.1.7 line on the rc channel: `settingsScope`, `settings.plugin.item`, `sessions.open` and `installSection` are all gone, and it carries the same `configForms` / `plugins.bundle.config` / `uiWorkspace` / `settings.configure` seams as 0.1.7-alpha.x — their interface definitions compare byte for byte): in an isolated `DSH_HOME` sandbox the host booted with no error, and on a real 13k-node session the panel, the curtain, Esc, the dock switch (left 288 to right 1238, transform only) and the collapse (parking at 1526, handle back in place) were all exercised with no browser console error. `engines.dsh`'s floor moved up to **0.1.5-rc.3** accordingly (the older rc.1/rc.2 are no longer declared).
|
|
55
55
|
|
|
56
56
|
## Install
|
|
57
57
|
|
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
| 插件版本 | 支持的 DSH 版本 |
|
|
44
44
|
| --- | --- |
|
|
45
|
-
| **0.7.x**(最新,0.7.
|
|
45
|
+
| **0.7.x**(最新,0.7.12) | 0.1.5-rc.3、0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1、0.1.7-rc.2、0.2.0-rc.1 |
|
|
46
46
|
| 0.6.x(0.6.3) | 0.1.5-rc.1、0.1.5-rc.2 |
|
|
47
47
|
| 0.5.x(0.5.1) | 0.1.5-rc.1、0.1.5-rc.2 |
|
|
48
48
|
| 0.4.x(0.4.1) | 0.1.5-rc.1、0.1.5-rc.2 |
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
每个大版本只列该系列最新的一个补丁版本(新功能引入的缺陷都在其后的补丁里修掉了,所以同一个大版本内直接用最新补丁即可;旧补丁仍可继续用,插件不破坏既有接口)。
|
|
53
53
|
|
|
54
|
-
`engines.dsh` 声明为 **`>=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.
|
|
54
|
+
`engines.dsh` 声明为 **`>=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.3.0-0`**,peer 范围同形(预发布版本必须显式留分支:node-semver 只在一个范围的某个比较符与该版本落在同一个 `major.minor.patch` 元组、且自身带预发布标签时才放行它,所以写成 `>=0.1.5-rc.1` 是匹配不到 `0.1.7-alpha.1` 的)。**0.2.0-rc.1 上实测通过**:插件代码未改动,只是把范围上限从 `<0.2.0-0` 放宽到 `<0.3.0-0`——上限卡在 0.2.0 之前时,DSH 的插件兼容性预检会**直接拒绝加载本插件**(实测原文:`Plugin dsh-quick-toc@0.7.11 is incompatible with dsh 0.2.0-rc.1: peerDependencies {…}`,只给精确版本豁免或换一个声明兼容的版本);放宽后隔离 `DSH_HOME` 里逐项实测:宿主启动无告警、`--dump-config` 中本插件只有一条且无 error/duplicate、插件页「官方」组里有条目且配置卡片默认展开(11 个字段)、点卡片写入落到 profile 的设置文档、控制台无错误;长会话(79 MB 的真实会话)上面板与收起动画也正常。0.7.3 在 **0.1.5-rc.3** 与 **0.1.7-alpha.2** 上实测通过(面板与幕布、点行跳转与翻历史、标题/全文/跨会话三档检索、跨会话命中切换会话、设置卡片与宿主设置文档的读写都逐项跑过),这两版不需要任何代码改动——离线核对:rc.3 相对 rc.2 只有各包 `package.json` 的版本号差异(外加侧边栏两个文件),alpha.2 的改动集中在会话控制器与聊天渲染,但插件依赖的接口与节点形状逐项核对后仍在(`turnOutline`、`turn-error`、`useChat`、`data-chat-anchor-key`、`sessions.search`、`loadThrough`、`settings.*` 与两张卡片槽位都在,`data-conversation-scroll` 在 alpha.2 里新增的两处命中是样式表文本、不是第二个滚动容器)。0.7.2 在 **0.1.5-rc.2** 上实测通过(幕布缩放逐项确认:三档因子下幕布盒子的宽高与位置不变、只有内容按比例缩放,50%–200% 两端、松手写入、以及默认值渲染都比对过;面板与幕布两套缩放各自独立);0.7.1 在 **0.1.5-rc.2** 上实测通过(「回到我离开的位置」浮动按钮、面板与幕布分别记录的离开位置、打开时落在正在阅读的那一行、以及在底部关闭再打开不出按钮都逐项确认);0.7.0 在同一版本上实测通过(全屏幕布与液滴把手、跳到本节末尾、跨会话检索、键盘导航、只看提问、记住阅读位置都在真实浏览器里逐项跑过;面板缩放、尺寸的落盘与读回、收起把手的位置等既有能力此前已实测);**0.1.5-rc.1** 上实测了插件加载与客户端模块下发(宿主启动无报错、`--dump-config` 里有 quick-toc 条目、客户端组合包 URL 里列出 `dsh-quick-toc/client.js`,取回的下发内容包含本版新增的幕布把手、跳到本节末尾与阅读位置等标记),它依赖的宿主接口——`turnOutline` 投影、会话级槽位的 `useProjection`、客户端 `sessions` 服务与 `loadThrough` 跳转加载器(0.5.0 起)、失败回合所用的 `turn-error` 节点(0.5.1 起)、以及 0.6.0 新增的宿主 `settings` 服务(`installSection`)、客户端 `settingsScope` 与 `settings.plugin.item` 配置卡片槽位、以及 0.7.0 跨会话检索所用的客户端 `sessions.search`——在 0.1.5-rc.1 与 0.1.5-rc.2 的安装包中逐个核对存在(这些宿主包的代码在两版之间逐字节相同,`dsh-client-ui-chat` 仅差一条与本插件无关的 CSS 声明;`search` 所在的 `dsh-api-session-controller` 两版逐字节相同,含「一次最多 20 条、片段上限 240 字符」的同一套上限),因此两版都声明兼容。更早的 DSH 版本未经验证,不作声明;在更早的 DSH 上可安装的最新插件版本是 **0.3.2**。**0.1.7-alpha.1 上也实测通过**(隔离的 `DSH_HOME` 里跑真实实例):宿主启动无报错、面板与幕布、点行跳转与翻历史、标题/全文/跨会话三档检索、跨会话命中切换会话,都在真实浏览器里逐项跑过,设置文档的读写也逐项确认。**0.1.7-rc.1 上也实测通过**(rc 通道上的 0.1.7 线:`settingsScope` / `settings.plugin.item` / `sessions.open` / `installSection` 都已不存在,与 0.1.7-alpha.x 是同一套 `configForms` / `plugins.bundle.config` / `uiWorkspace` / `settings.configure`,接口定义逐字比对相同):隔离 `DSH_HOME` 沙盒里宿主启动无报错,在 1.3 万节点的真实会话上面板展开、幕布、Esc 收起、停靠切换(左 288 → 右 1238,纯位移)与收起(停在 1526、把手回到原位)逐项跑过,浏览器 console 无报错;`engines.dsh` 的最小版本随之收到 **0.1.5-rc.3**(更早的 rc.1/rc.2 不再声明)。为此 0.7.2 同时支持两条宿主线——0.1.5-rc.x 上是宿主的 `settings.installSection` + 客户端 `settingsScope` + `settings.plugin.item` 卡片槽位,0.1.7-alpha.x 上换成 `settings.configure` + 客户端 `configForms` + `plugins.bundle.config` 卡片槽位、并用 `uiWorkspace.openSession` 切换会话;插件在运行时按服务是否存在二选一,且**不再把任一设置服务写进 `inject`**(声明一个宿主没有的服务会让整个包停在 pending,0.1.7-alpha.1 上这曾让整页 Web 起不来)。安装或更新时,市场(dshmarket)读取 npm 上 `latest` 版本的 `engines.dsh`(或 `dsh.engines.dsh`)与本机存在的 `@deepseek-ai/dsh-*` peer 范围,在卡片上显示该插件声明的宿主要求,并提供「只显示与当前宿主确认匹配的条目」这一可选过滤;`dsh.compatibility.dshReleases` 是本仓库自己的记录,DSH 与市场都不读取。
|
|
55
55
|
|
|
56
56
|
## 安装
|
|
57
57
|
|
package/lib/client.js
CHANGED
|
@@ -1215,6 +1215,48 @@ window.__ModuleLoader__.load({
|
|
|
1215
1215
|
_chatTablistCache = found;
|
|
1216
1216
|
return found;
|
|
1217
1217
|
}
|
|
1218
|
+
// ---- a triangle with small rounded corners ---------------------------------------------
|
|
1219
|
+
// Built as a path: each vertex becomes a quadratic Bézier whose CONTROL POINT is that
|
|
1220
|
+
// vertex and whose ends walk `t` down the two edges it joins, so only the corners are
|
|
1221
|
+
// touched and the edges stay straight. A quadratic corner falls short of its vertex by
|
|
1222
|
+
// `0.5 * t * cos(half angle)`, so every vertex is first pushed straight out by exactly that
|
|
1223
|
+
// much — that is what keeps the glyph's outer size equal to the sharp triangle it replaces
|
|
1224
|
+
// (rounding without it cost the slim handle tip 9% of its height; merely stroking the sharp
|
|
1225
|
+
// path rounds it too, but fattens the whole shape by half the stroke instead). All three
|
|
1226
|
+
// pointer glyphs — both handles' tips and the dock toggle — come from here, so they share
|
|
1227
|
+
// one silhouette.
|
|
1228
|
+
function roundedTrianglePath(pts, r) {
|
|
1229
|
+
var num = function (v) { return String(Math.round(v * 100) / 100); };
|
|
1230
|
+
var unit = function (from, to) {
|
|
1231
|
+
var dx = to.x - from.x, dy = to.y - from.y;
|
|
1232
|
+
var l = Math.sqrt(dx * dx + dy * dy) || 1;
|
|
1233
|
+
return { x: dx / l, y: dy / l, len: l };
|
|
1234
|
+
};
|
|
1235
|
+
// 1) push each vertex out along its angle bisector by the corner's own shortfall
|
|
1236
|
+
var v = [];
|
|
1237
|
+
for (var k = 0; k < 3; k++) {
|
|
1238
|
+
var p = pts[(k + 2) % 3], c = pts[k], n = pts[(k + 1) % 3];
|
|
1239
|
+
var a1 = unit(c, p), a2 = unit(c, n);
|
|
1240
|
+
var cosA = Math.max(-1, Math.min(1, a1.x * a2.x + a1.y * a2.y));
|
|
1241
|
+
var t = Math.min(r, a1.len / 3, a2.len / 3);
|
|
1242
|
+
var short = 0.5 * t * Math.cos(Math.acos(cosA) / 2);
|
|
1243
|
+
var bx = a1.x + a2.x, by = a1.y + a2.y;
|
|
1244
|
+
var bl = Math.sqrt(bx * bx + by * by) || 1; // bisector points into the shape
|
|
1245
|
+
v.push({ x: c.x - (bx / bl) * short, y: c.y - (by / bl) * short });
|
|
1246
|
+
}
|
|
1247
|
+
// 2) round the pushed-out corners
|
|
1248
|
+
var out = "";
|
|
1249
|
+
for (var i = 0; i < 3; i++) {
|
|
1250
|
+
var prev = v[(i + 2) % 3], cur = v[i], next = v[(i + 1) % 3];
|
|
1251
|
+
var b1 = unit(cur, prev), b2 = unit(cur, next);
|
|
1252
|
+
var t1 = Math.min(r, b1.len / 3), t2 = Math.min(r, b2.len / 3);
|
|
1253
|
+
var ax = cur.x + b1.x * t1, ay = cur.y + b1.y * t1;
|
|
1254
|
+
var cx = cur.x + b2.x * t2, cy = cur.y + b2.y * t2;
|
|
1255
|
+
out += (i === 0 ? "M" : "L") + num(ax) + " " + num(ay) +
|
|
1256
|
+
"Q" + num(cur.x) + " " + num(cur.y) + " " + num(cx) + " " + num(cy);
|
|
1257
|
+
}
|
|
1258
|
+
return out + "Z";
|
|
1259
|
+
}
|
|
1218
1260
|
function isChatViewActive() {
|
|
1219
1261
|
try {
|
|
1220
1262
|
var tablist = conversationTablist();
|
|
@@ -5134,8 +5176,27 @@ window.__ModuleLoader__.load({
|
|
|
5134
5176
|
};
|
|
5135
5177
|
var levelsPopDockEl = (!sheetOpen && (levelsOpen || levelsClosing)) ? buildLevelsPop(false) : null;
|
|
5136
5178
|
var levelsPopSheetEl = (sheetOpen && (levelsOpen || levelsClosing)) ? buildLevelsPop(true) : null;
|
|
5137
|
-
// dock toggle: the triangle tips toward the side it will move TO
|
|
5138
|
-
|
|
5179
|
+
// dock toggle: the triangle tips toward the side it will move TO. Drawn as a path rather
|
|
5180
|
+
// than the ◀/▶ character — a font's triangles have sharp corners and a weight that
|
|
5181
|
+
// differs per platform, while this one carries the same little rounding as the two
|
|
5182
|
+
// handles' tips and follows the button's own colour (currentColor, so the hover tint
|
|
5183
|
+
// still applies).
|
|
5184
|
+
var dockTriEl = react_jsx_runtime.jsx("svg", {
|
|
5185
|
+
width: 14,
|
|
5186
|
+
height: 15,
|
|
5187
|
+
viewBox: "0 0 14 15",
|
|
5188
|
+
style: { display: "block" },
|
|
5189
|
+
children: react_jsx_runtime.jsx("path", {
|
|
5190
|
+
d: roundedTrianglePath(dockRight
|
|
5191
|
+
? [{ x: 11.6, y: 1.8 }, { x: 2.4, y: 7.5 }, { x: 11.6, y: 13.2 }]
|
|
5192
|
+
: [{ x: 2.4, y: 1.8 }, { x: 11.6, y: 7.5 }, { x: 2.4, y: 13.2 }], 1.8),
|
|
5193
|
+
fill: "currentColor"
|
|
5194
|
+
})
|
|
5195
|
+
});
|
|
5196
|
+
// the x nudge is optical: a triangle's mass sits toward its base, so the tip-side shift
|
|
5197
|
+
// is what makes it read centred (the old character needed the same, plus a y nudge for
|
|
5198
|
+
// its line box, which a path does not have)
|
|
5199
|
+
var dockBtnEl = iconBtn(toggleDock, dockRight ? T("handle.dockLeft") : T("handle.dockRight"), dockTriEl, 12, dockRight ? { x: -1, y: 0 } : { x: 1, y: 0 });
|
|
5139
5200
|
// the curtain button: a surface with the arrow dropping out of its TOP edge
|
|
5140
5201
|
var sheetBtnEl = react_jsx_runtime.jsx("button", {
|
|
5141
5202
|
className: "dqt-sheet-btn",
|
|
@@ -6010,7 +6071,9 @@ window.__ModuleLoader__.load({
|
|
|
6010
6071
|
children: react_jsx_runtime.jsx("path", {
|
|
6011
6072
|
// tip points OUTWARD (toward where the panel will pop out):
|
|
6012
6073
|
// docked left -> points right; docked right -> points left
|
|
6013
|
-
d: dockRight
|
|
6074
|
+
d: roundedTrianglePath(dockRight
|
|
6075
|
+
? [{ x: 7, y: 4 }, { x: 1.5, y: 12 }, { x: 7, y: 20 }]
|
|
6076
|
+
: [{ x: 2, y: 4 }, { x: 7.5, y: 12 }, { x: 2, y: 20 }], 2.2),
|
|
6014
6077
|
fill: "currentColor"
|
|
6015
6078
|
})
|
|
6016
6079
|
})
|
|
@@ -6121,8 +6184,9 @@ window.__ModuleLoader__.load({
|
|
|
6121
6184
|
react_jsx_runtime.jsx("path", {
|
|
6122
6185
|
// the side handle's own triangle, turned a quarter turn and taken down a
|
|
6123
6186
|
// shade — 14 x 4.5 against its 5.5 x 16 — so it reads as the same
|
|
6124
|
-
// affordance without crowding the smaller droplet it sits in
|
|
6125
|
-
|
|
6187
|
+
// affordance without crowding the smaller droplet it sits in; same rounded
|
|
6188
|
+
// corners as the side handle's tip (see roundedTrianglePath)
|
|
6189
|
+
d: roundedTrianglePath([{ x: 63, y: 8.5 }, { x: 77, y: 8.5 }, { x: 70, y: 13 }], 1.9),
|
|
6126
6190
|
fill: "var(--dsw-alias-label-secondary, #9aa0ab)"
|
|
6127
6191
|
}, "tip")
|
|
6128
6192
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-quick-toc",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.12",
|
|
4
4
|
"description": "Conversation TOC for DeepSeek Harness (DSH): a whole-session, turn-grouped Markdown outline with hover previews, a level filter, a full-width curtain, jump-to-end buttons, title/full-text/cross-session search and a Chinese/English interface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
"LICENSE"
|
|
15
15
|
],
|
|
16
16
|
"engines": {
|
|
17
|
-
"dsh": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.
|
|
17
|
+
"dsh": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.3.0-0"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"test": "node test/render.mjs"
|
|
18
21
|
},
|
|
19
22
|
"exports": {
|
|
20
23
|
".": "./lib/index.js",
|
|
@@ -39,15 +42,16 @@
|
|
|
39
42
|
"0.1.7-alpha.1": "compatible",
|
|
40
43
|
"0.1.7-alpha.2": "compatible",
|
|
41
44
|
"0.1.7-rc.1": "compatible",
|
|
42
|
-
"0.1.7-rc.2": "compatible"
|
|
45
|
+
"0.1.7-rc.2": "compatible",
|
|
46
|
+
"0.2.0-rc.1": "compatible"
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
},
|
|
46
50
|
"peerDependencies": {
|
|
47
51
|
"react": "^18.2.0",
|
|
48
52
|
"@deepseek-ai/schemastery": "^3.18.0",
|
|
49
|
-
"@deepseek-ai/dsh-client-ui-chat": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.
|
|
50
|
-
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.
|
|
53
|
+
"@deepseek-ai/dsh-client-ui-chat": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.3.0-0",
|
|
54
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.5-rc.3 <0.1.7-0 || >=0.1.7-alpha.1 <0.3.0-0"
|
|
51
55
|
},
|
|
52
56
|
"peerDependenciesMeta": {
|
|
53
57
|
"@deepseek-ai/schemastery": {
|