dsh-quick-toc 0.3.0 → 0.3.2
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 +68 -0
- package/README.en.md +3 -2
- package/README.md +3 -2
- package/lib/client.js +11 -1
- package/package.json +5 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to **dsh-quick-toc** are documented here.
|
|
4
|
+
|
|
5
|
+
## [0.3.2] - 2026-09-08
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Documentation pass: the compatibility matrix and feature list in the READMEs are refreshed, and the npm package description now mentions keyword search and in-chat highlighting.
|
|
9
|
+
|
|
10
|
+
## [0.3.1] - 2026-09-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Panel and collapsed edge handle no longer float above DSH modals: the base z-index is now 500 (above app popovers at z 100 and the transcript width handles at z 8, but below DSH's modal layer at z 1000), so opening Settings covers the outline instead of the outline sitting on top of it.
|
|
14
|
+
- Circular controls are true circles again on DSH 0.1.5-rc.1: the theme applies `corner-shape: superellipse(1.5)` to every element, which turned `border-radius: 50%` into a squircle. The icon buttons, search-scope toggle, top drag bar and edge handle now declare `corner-shape: round`.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Compatibility declaration also lists DSH `0.1.5-rc.1` (verified compatible; `engines.dsh` stays `>=0.1.2-rc.1`).
|
|
18
|
+
|
|
19
|
+
## [0.3.0] - 2026-08-24
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **DSH 0.1.2-rc.1 compatibility**: the removed `@deepseek-ai/dsh-client-runtime` package no longer breaks plugin loading (externals drift). Runtime hooks now arrive as session-scope slot props.
|
|
23
|
+
- Conversation data access moved from `useSession(s => s.chat.*)` to the session-scope `useChat` hook (`ChatSnapshot.order` + `nodes` map, contributed by `dsh-client-ui-chat`). Node shape unchanged (`kind: user/assistant-step`, `location.turn`, `data.blocks`), so grouping / search / highlight / jump logic is untouched.
|
|
24
|
+
- Panel mount moved into the session-scoped `conversation.input.overlay` slot. In 0.1.2-rc.1 session-scoped hooks only reach a declared *session* slot; a frame-floating `shell.overlay` occupant's `SessionProvider` binds to the root binding (no session id) and rendered the panel slot empty. The panel still draws its own fixed, frame-floating dock (position: fixed), so the overlay seat is only the hook source.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- `dsh.client.inject` now lists `dsh-client-ui-chat` / `dsh-client-ui-conversation` / `dsh-client-ui-layout` instead of the removed runtime package.
|
|
28
|
+
- Dropped the unused `sessions` service from the client inject list.
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
- Version guard: `dsh.compatibility.dshReleases` declares `0.1.2-rc.1: compatible` and `engines.dsh: ">=0.1.2-rc.1"` (dshmarket install-time host-compat preflight); peerDependencies pin `dsh-client-ui-chat` / `dsh-client-ui-conversation` `>=0.1.2-rc.1`. The panel degrades gracefully with a console warning when the `chat` hook is unavailable (older hosts).
|
|
32
|
+
|
|
33
|
+
## [0.2.2] - 2026-08-24
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- Keyword search: header magnifier button opens a search box; Enter cycles through matches (n/N counter); Escape or the magnifier toggles it closed
|
|
37
|
+
- Search scope toggle: 标题 (heading titles only) or 全文 (also user messages and AI reply texts)
|
|
38
|
+
- In-chat match highlighting: matched keywords are highlighted in the conversation; the current match gets a distinct highlight and is scrolled to the upper-middle of the viewport
|
|
39
|
+
- Every occurrence counts toward n/N (multiple hits in one message = multiple matches)
|
|
40
|
+
- Heading-less turns get a standalone time entry; all group headers show the turn's first-line preview next to the time (click to jump)
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
- Panel collapse animation unified for both docks: clip-path hides the panel at the sidebar/screen edge (shadow removed to avoid clipping artifacts)
|
|
44
|
+
- Inactive outline groups dimmed to 0.6 opacity
|
|
45
|
+
|
|
46
|
+
## [0.1.1] - 2026-08-17
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
- Release workflow also uploads a stable-named tarball (`dsh-quick-toc.tgz`) so `/releases/latest/download/` always resolves to the newest release
|
|
50
|
+
|
|
51
|
+
## [0.1.0] - 2026-08-17
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
- Turn-grouped outline: each user message + its AI replies form one group, with the group's end time as the header
|
|
55
|
+
- Auto-follow highlight: turns visible in the conversation viewport light up in the outline (multiple at once); the outline auto-loads and scrolls to keep them visible
|
|
56
|
+
- Smooth jump: clicking a heading glides to the exact heading position in the conversation (with a small top offset)
|
|
57
|
+
- Dock left/right with a draggable top bar, resizable from the edges/corner, collapsible into a draggable edge handle
|
|
58
|
+
- Scrollbar follows the dock side (left when docked left, right when docked right)
|
|
59
|
+
- Paged rendering: latest groups first; scrolling the outline to the top loads older groups
|
|
60
|
+
- Auto "load older": when the outline reaches the top with everything loaded, it clicks the conversation's own load-more button
|
|
61
|
+
- Header time jump: clicking a group's time label jumps to that turn's start
|
|
62
|
+
- Markdown-aware titles: `**bold**`, `*italic*`, `` `code` ``, `[links](url)`, `~~strike~~` stripped from heading text
|
|
63
|
+
- Persisted panel state (dock side, position, size) with automatic migration from older key names
|
|
64
|
+
- Auto-hides when the conversation has no headings; light/dark theme support
|
|
65
|
+
|
|
66
|
+
### Published
|
|
67
|
+
- npm: `dsh-quick-toc@0.1.0`
|
|
68
|
+
- GitHub: `LyaxZ/dsh-quick-toc` with auto-release workflow (tag push -> npm pack -> release asset)
|
package/README.en.md
CHANGED
|
@@ -20,8 +20,9 @@ A quick conversation TOC plugin for [DeepSeek Harness](https://github.com/deepse
|
|
|
20
20
|
|
|
21
21
|
| Plugin | DSH |
|
|
22
22
|
| --- | --- |
|
|
23
|
-
| **0.3.
|
|
24
|
-
| 0.
|
|
23
|
+
| **0.3.2** (latest) | **≥ 0.1.2-rc.1** (verified on 0.1.2-rc.1 / 0.1.5-rc.1) |
|
|
24
|
+
| 0.3.0 – 0.3.1 | same |
|
|
25
|
+
| 0.2.2 | DSH versions before 0.1.2-rc.1 (install as `dsh-quick-toc@legacy`) |
|
|
25
26
|
|
|
26
27
|
0.3.0 re-targeted the host integration (new slot architecture + `useChat` session data) and **only supports DSH 0.1.2-rc.1 and above**; for older DSH builds install 0.2.2. On install/update the DSH market pre-flights host compatibility from `dsh.compatibility.dshReleases` and `peerDependencies` in package.json and warns on a mismatch.
|
|
27
28
|
|
package/README.md
CHANGED
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
| 插件版本 | DSH 版本 |
|
|
22
22
|
| --- | --- |
|
|
23
|
-
| **0.3.
|
|
24
|
-
| 0.
|
|
23
|
+
| **0.3.2**(最新) | **≥ 0.1.2-rc.1**(已在 0.1.2-rc.1 / 0.1.5-rc.1 验证) |
|
|
24
|
+
| 0.3.0 – 0.3.1 | 同上 |
|
|
25
|
+
| 0.2.2 | 0.1.2-rc.1 之前的旧版 DSH(npm 上 `dsh-quick-toc@legacy`) |
|
|
25
26
|
|
|
26
27
|
0.3.0 重写了与宿主的对接(新版 slot 架构 + `useChat` 会话数据),**只支持 DSH 0.1.2-rc.1 及以上**;旧版 DSH 请安装 0.2.2。安装/更新时 DSH 市场会根据 package.json 的 `dsh.compatibility.dshReleases` 与 `peerDependencies` 做 host 兼容预检,版本不符会给出提示。
|
|
27
28
|
|
package/lib/client.js
CHANGED
|
@@ -15,7 +15,10 @@ window.__ModuleLoader__.load({
|
|
|
15
15
|
var PANEL_WIDTH = 288;
|
|
16
16
|
// Very high base so the portal-rendered panel (top-level stacking context)
|
|
17
17
|
// always sits above DSH content and its transcript width handles.
|
|
18
|
-
|
|
18
|
+
// Panel layer: above the app's popovers (z 100) and the transcript width
|
|
19
|
+
// handles (z 8), but BELOW DSH's modal layer (settings/image viewer, z 1000)
|
|
20
|
+
// so opening settings covers the panel instead of the panel floating on top.
|
|
21
|
+
var Z_BASE = 500;
|
|
19
22
|
var EASE = "cubic-bezier(0.22, 0.9, 0.3, 1)"; // smooth non-linear slide
|
|
20
23
|
|
|
21
24
|
// ---------- markdown helpers ----------
|
|
@@ -960,6 +963,7 @@ window.__ModuleLoader__.load({
|
|
|
960
963
|
alignItems: "center",
|
|
961
964
|
justifyContent: "center",
|
|
962
965
|
borderRadius: "50%",
|
|
966
|
+
cornerShape: "round",
|
|
963
967
|
background: "var(--dsw-alias-interactive-bg-hover, rgba(128,128,128,0.16))",
|
|
964
968
|
border: "none",
|
|
965
969
|
color: C.muted,
|
|
@@ -1073,6 +1077,7 @@ window.__ModuleLoader__.load({
|
|
|
1073
1077
|
width: 56,
|
|
1074
1078
|
height: 5,
|
|
1075
1079
|
borderRadius: 999,
|
|
1080
|
+
cornerShape: "round",
|
|
1076
1081
|
background: "var(--dsw-alias-border-l2, rgba(128,128,128,0.55))",
|
|
1077
1082
|
opacity: 0.35,
|
|
1078
1083
|
transition: "opacity 0.2s ease",
|
|
@@ -1121,6 +1126,7 @@ window.__ModuleLoader__.load({
|
|
|
1121
1126
|
alignItems: "center",
|
|
1122
1127
|
justifyContent: "center",
|
|
1123
1128
|
borderRadius: "50%",
|
|
1129
|
+
cornerShape: "round",
|
|
1124
1130
|
background: "var(--dsw-alias-interactive-bg-hover, rgba(128,128,128,0.16))",
|
|
1125
1131
|
border: "none",
|
|
1126
1132
|
color: C.muted,
|
|
@@ -1164,6 +1170,7 @@ window.__ModuleLoader__.load({
|
|
|
1164
1170
|
alignItems: "center",
|
|
1165
1171
|
justifyContent: "center",
|
|
1166
1172
|
borderRadius: "50%",
|
|
1173
|
+
cornerShape: "round",
|
|
1167
1174
|
background: "var(--dsw-alias-interactive-bg-hover, rgba(128,128,128,0.16))",
|
|
1168
1175
|
border: "none",
|
|
1169
1176
|
color: C.muted,
|
|
@@ -1234,6 +1241,7 @@ window.__ModuleLoader__.load({
|
|
|
1234
1241
|
alignItems: "center",
|
|
1235
1242
|
background: "var(--dsw-alias-interactive-bg-hover, rgba(128,128,128,0.14))",
|
|
1236
1243
|
borderRadius: 999,
|
|
1244
|
+
cornerShape: "round",
|
|
1237
1245
|
padding: "6px 12px"
|
|
1238
1246
|
},
|
|
1239
1247
|
children: [
|
|
@@ -1320,6 +1328,7 @@ window.__ModuleLoader__.load({
|
|
|
1320
1328
|
alignItems: "center",
|
|
1321
1329
|
justifyContent: "center",
|
|
1322
1330
|
borderRadius: "50%",
|
|
1331
|
+
cornerShape: "round",
|
|
1323
1332
|
fontSize: 11,
|
|
1324
1333
|
color: searchScope === "full" ? "var(--dsw-alias-brand-primary, #4f8cff)" : C.muted,
|
|
1325
1334
|
background: searchScope === "full" ? "rgba(79,140,255,0.18)" : "var(--dsw-alias-interactive-bg-hover, rgba(128,128,128,0.14))",
|
|
@@ -1442,6 +1451,7 @@ window.__ModuleLoader__.load({
|
|
|
1442
1451
|
width: 12,
|
|
1443
1452
|
height: 80,
|
|
1444
1453
|
borderRadius: 999,
|
|
1454
|
+
cornerShape: "round",
|
|
1445
1455
|
background: "var(--dsw-alias-border-l2, rgba(160,160,160,0.55))",
|
|
1446
1456
|
opacity: handleShown ? 0.5 : 0,
|
|
1447
1457
|
transition: "opacity 0.35s ease, background 0.25s ease",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-quick-toc",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.2",
|
|
4
|
+
"description": "Conversation TOC for DeepSeek Harness (DSH): turn-grouped Markdown heading outline with keyword search (title/full-text scope), in-chat match highlighting, auto-follow and smooth jump navigation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"files": [
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"cordis.patch.yml",
|
|
10
10
|
"README.md",
|
|
11
11
|
"README.en.md",
|
|
12
|
+
"CHANGELOG.md",
|
|
12
13
|
"LICENSE"
|
|
13
14
|
],
|
|
14
15
|
"engines": {
|
|
@@ -33,7 +34,8 @@
|
|
|
33
34
|
},
|
|
34
35
|
"compatibility": {
|
|
35
36
|
"dshReleases": {
|
|
36
|
-
"0.1.2-rc.1": "compatible"
|
|
37
|
+
"0.1.2-rc.1": "compatible",
|
|
38
|
+
"0.1.5-rc.1": "compatible"
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
},
|