dsh-quick-toc 0.7.10 → 0.7.11
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 +5 -0
- package/CHANGELOG.md +5 -0
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/lib/client.js +69 -5
- package/package.json +1 -1
package/CHANGELOG.en.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
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.11] - 2026-09-28
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **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.
|
|
9
|
+
|
|
5
10
|
## [0.7.10] - 2026-09-28
|
|
6
11
|
|
|
7
12
|
### Fixed
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
**dsh-quick-toc** 的重要变更都记录在这里。英文版见 [CHANGELOG.en.md](CHANGELOG.en.md)。
|
|
4
4
|
|
|
5
|
+
## [0.7.11] - 2026-09-28
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
- **三处指示三角改为圆角,停靠按钮的三角放大到与其他顶栏图标相当**:侧边把手、顶部水滴和停靠边切换按钮上的三角原本是尖角,其中停靠按钮那颗明显偏小;现在三者共用同一套圆角轮廓,大小也与顶栏图标一致。
|
|
9
|
+
|
|
5
10
|
## [0.7.10] - 2026-09-28
|
|
6
11
|
|
|
7
12
|
### 修复
|
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.11) | 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 |
|
|
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 |
|
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.11) | 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 |
|
|
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 |
|
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.11",
|
|
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",
|