dsh-conversation-navigator 0.1.7 → 0.1.9

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.
Files changed (2) hide show
  1. package/lib/client.js +94 -60
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -5,7 +5,7 @@ window.__ModuleLoader__.load({
5
5
  var exports = module.exports;
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
7
  const React = require("react");
8
- const { Button, IconCloseOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
8
+ const { Button, Tooltip, IconCloseOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
9
9
 
10
10
  /* ---------- custom icons (DSH outline style, unique to this panel) ---------- */
11
11
  function ToggleIcon() {
@@ -38,8 +38,8 @@ window.__ModuleLoader__.load({
38
38
  stroke: "currentColor", strokeWidth: 1.3, strokeLinecap: "round", strokeLinejoin: "round",
39
39
  "aria-hidden": true,
40
40
  },
41
- React.createElement("path", { d: "M7 10V6M4.5 8l2.5-2.5 2.5 2.5" }),
42
- React.createElement("path", { d: "M7 5.5V1.5M4.5 3.5l2.5-2.5 2.5 2.5" }),
41
+ React.createElement("path", { d: "M7 2l5 3-5 3-5-3 5-3z" }),
42
+ React.createElement("path", { d: "M2 5v3l5 3 5-3V5" }),
43
43
  );
44
44
  }
45
45
  function JumpLatestIcon() {
@@ -55,10 +55,13 @@ window.__ModuleLoader__.load({
55
55
  function CollapseAllIcon() {
56
56
  return React.createElement("svg", {
57
57
  viewBox: "0 0 14 14", width: 14, height: 14, fill: "none",
58
- stroke: "currentColor", strokeWidth: 1.3, strokeLinecap: "round", strokeLinejoin: "round",
58
+ stroke: "currentColor", strokeWidth: 1.2, strokeLinecap: "round",
59
59
  "aria-hidden": true,
60
60
  },
61
- React.createElement("path", { d: "M5 6l2 2.5 2-2.5M5 8l2-2.5 2 2.5" }),
61
+ React.createElement("line", { x1: 2.5, y1: 2, x2: 11.5, y2: 2 }),
62
+ React.createElement("line", { x1: 2.5, y1: 5, x2: 11.5, y2: 5 }),
63
+ React.createElement("line", { x1: 2.5, y1: 8, x2: 11.5, y2: 8 }),
64
+ React.createElement("line", { x1: 2.5, y1: 11, x2: 11.5, y2: 11 }),
62
65
  );
63
66
  }
64
67
 
@@ -441,14 +444,19 @@ window.__ModuleLoader__.load({
441
444
  setState({ activeKey: null, expanded: {} });
442
445
  }
443
446
  }, [props.sessionId]);
444
- return React.createElement(Button, {
445
- variant: snap.open ? "primary" : "ghost",
446
- size: "sm",
447
- icon: React.createElement(ToggleIcon),
448
- "aria-pressed": snap.open,
449
- title: snap.open ? "收起会话导航" : "打开会话导航",
450
- onClick: () => setState({ open: !snap.open }),
451
- }, "导航");
447
+ return React.createElement(Tooltip, {
448
+ label: snap.open ? "收起会话导航" : "打开会话导航",
449
+ side: "bottom",
450
+ delayMs: 500,
451
+ },
452
+ React.createElement(Button, {
453
+ variant: snap.open ? "primary" : "ghost",
454
+ size: "sm",
455
+ icon: React.createElement(ToggleIcon),
456
+ "aria-pressed": snap.open,
457
+ onClick: () => setState({ open: !snap.open }),
458
+ }, "导航"),
459
+ );
452
460
  }
453
461
 
454
462
  /* ---------- floating navigator panel ---------- */
@@ -586,34 +594,49 @@ window.__ModuleLoader__.load({
586
594
  React.createElement("div", { className: "cnvnav-head" },
587
595
  React.createElement("span", { className: "cnvnav-title" }, "会话导航"),
588
596
  React.createElement("span", { className: "cnvnav-count" }, String(count) + " 条"),
589
- React.createElement(Button, {
590
- variant: "ghost",
591
- size: "sm",
592
- className: "cnvnav-close",
593
- icon: React.createElement(IconCloseOutline16, { size: 14 }),
594
- title: "收起",
595
- onClick: () => setState({ open: false }),
596
- }),
597
+ React.createElement(Tooltip, {
598
+ label: "收起面板",
599
+ side: "bottom",
600
+ delayMs: 500,
601
+ },
602
+ React.createElement(Button, {
603
+ variant: "ghost",
604
+ size: "sm",
605
+ className: "cnvnav-close",
606
+ icon: React.createElement(IconCloseOutline16, { size: 14 }),
607
+ onClick: () => setState({ open: false }),
608
+ }),
609
+ ),
597
610
  ),
598
611
  React.createElement("div", { className: "cnvnav-topbar" },
599
- React.createElement(Button, {
600
- variant: "ghost",
601
- size: "sm",
602
- className: "cnvnav-bar-btn",
603
- icon: React.createElement(LoadEarlierIcon),
604
- disabled: !snap.hasMore || snap.loadingOlder,
605
- title: "加载更早的一批轮次",
606
- onClick: () => loadOlderPage(),
607
- }, "加载更早"),
608
- React.createElement(Button, {
609
- variant: "ghost",
610
- size: "sm",
611
- className: "cnvnav-bar-btn",
612
- icon: React.createElement(LoadAllIcon),
613
- disabled: !snap.hasMore || snap.loadingOlder || snap.loadingAll,
614
- title: "加载全部历史轮次",
615
- onClick: () => loadAllPages(),
616
- }, "加载全部"),
612
+ React.createElement(Tooltip, {
613
+ label: "加载更早的一批轮次",
614
+ side: "bottom",
615
+ delayMs: 500,
616
+ },
617
+ React.createElement(Button, {
618
+ variant: "ghost",
619
+ size: "sm",
620
+ className: "cnvnav-bar-btn",
621
+ icon: React.createElement(LoadEarlierIcon),
622
+ disabled: !snap.hasMore || snap.loadingOlder,
623
+ onClick: () => loadOlderPage(),
624
+ }, "加载更早"),
625
+ ),
626
+ React.createElement(Tooltip, {
627
+ label: "加载全部历史轮次",
628
+ side: "bottom",
629
+ delayMs: 500,
630
+ },
631
+ React.createElement(Button, {
632
+ variant: "ghost",
633
+ size: "sm",
634
+ className: "cnvnav-bar-btn",
635
+ icon: React.createElement(LoadAllIcon),
636
+ disabled: !snap.hasMore || snap.loadingOlder || snap.loadingAll,
637
+ onClick: () => loadAllPages(),
638
+ }, "加载全部"),
639
+ ),
617
640
  ),
618
641
  React.createElement("div", {
619
642
  ref: (el) => { listEl = el; },
@@ -624,27 +647,38 @@ window.__ModuleLoader__.load({
624
647
  : groupNodes,
625
648
  ),
626
649
  React.createElement("div", { className: "cnvnav-footer" },
627
- React.createElement(Button, {
628
- variant: "ghost",
629
- size: "sm",
630
- className: "cnvnav-bar-btn",
631
- icon: React.createElement(JumpLatestIcon),
632
- onClick: () => {
633
- const gs = snap.outline !== null ? snap.outline.groups : [];
634
- if (gs.length === 0) return;
635
- const lastGroup = gs[gs.length - 1];
636
- const lastItem = lastGroup.items[lastGroup.items.length - 1];
637
- if (lastItem !== undefined) jumpTo(lastItem.key);
638
- },
639
- }, "回到最新"),
640
- React.createElement(Button, {
641
- variant: "ghost",
642
- size: "sm",
643
- className: "cnvnav-bar-btn",
644
- icon: React.createElement(CollapseAllIcon),
645
- title: "折叠所有已展开的轮次",
646
- onClick: () => setState({ expanded: {} }),
647
- }, "全部折叠"),
650
+ React.createElement(Tooltip, {
651
+ label: "回到对话最新位置",
652
+ side: "top",
653
+ delayMs: 500,
654
+ },
655
+ React.createElement(Button, {
656
+ variant: "ghost",
657
+ size: "sm",
658
+ className: "cnvnav-bar-btn",
659
+ icon: React.createElement(JumpLatestIcon),
660
+ onClick: () => {
661
+ const gs = snap.outline !== null ? snap.outline.groups : [];
662
+ if (gs.length === 0) return;
663
+ const lastGroup = gs[gs.length - 1];
664
+ const lastItem = lastGroup.items[lastGroup.items.length - 1];
665
+ if (lastItem !== undefined) jumpTo(lastItem.key);
666
+ },
667
+ }, "回到最新"),
668
+ ),
669
+ React.createElement(Tooltip, {
670
+ label: "折叠所有已展开的轮次",
671
+ side: "top",
672
+ delayMs: 500,
673
+ },
674
+ React.createElement(Button, {
675
+ variant: "ghost",
676
+ size: "sm",
677
+ className: "cnvnav-bar-btn",
678
+ icon: React.createElement(CollapseAllIcon),
679
+ onClick: () => setState({ expanded: {} }),
680
+ }, "全部折叠"),
681
+ ),
648
682
  ),
649
683
  );
650
684
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-conversation-navigator",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Codex 风格的 DSH(DeepSeek Harness)会话导航插件:按轮折叠的对话大纲面板,支持节点点击跳转、滚动位置高亮与轨迹视图同款配色。",
5
5
  "keywords": [
6
6
  "dsh",