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 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.10) | 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 |
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.10) | 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 |
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
- var dockBtnEl = iconBtn(toggleDock, dockRight ? T("handle.dockLeft") : T("handle.dockRight"), dockRight ? "◀" : "▶", 12, dockRight ? { x: -1, y: -1 } : { x: 1, y: -1 });
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 ? "M7 4 L1.5 12 L7 20 Z" : "M2 4 L7.5 12 L2 20 Z",
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
- d: "M63 8.5 L77 8.5 L70 13 Z",
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.10",
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",