dsh-conversation-navigator 0.1.8 → 0.1.10

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 +100 -55
  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() {
@@ -163,7 +163,8 @@ window.__ModuleLoader__.load({
163
163
  .cnvnav-empty { padding: 18px 10px; text-align: center; color: var(--dsw-alias-label-secondary, #888); }
164
164
  .cnvnav-topbar { display: flex; gap: 6px; margin: 6px 6px 0; }
165
165
  .cnvnav-footer { display: flex; gap: 6px; margin: 0 6px 6px; }
166
- .cnvnav-bar-btn { flex: 1; }
166
+ .cnvnav-bar-btn { flex: 1; display: block; }
167
+ .cnvnav-bar-fill { width: 100%; }
167
168
  `;
168
169
 
169
170
  function apply(ctx) {
@@ -444,14 +445,21 @@ window.__ModuleLoader__.load({
444
445
  setState({ activeKey: null, expanded: {} });
445
446
  }
446
447
  }, [props.sessionId]);
447
- return React.createElement(Button, {
448
- variant: snap.open ? "primary" : "ghost",
449
- size: "sm",
450
- icon: React.createElement(ToggleIcon),
451
- "aria-pressed": snap.open,
452
- title: snap.open ? "收起会话导航" : "打开会话导航",
453
- onClick: () => setState({ open: !snap.open }),
454
- }, "导航");
448
+ return React.createElement(Tooltip, {
449
+ label: snap.open ? "收起会话导航" : "打开会话导航",
450
+ side: "bottom",
451
+ delayMs: 500,
452
+ },
453
+ React.createElement("span", null,
454
+ React.createElement(Button, {
455
+ variant: snap.open ? "primary" : "ghost",
456
+ size: "sm",
457
+ icon: React.createElement(ToggleIcon),
458
+ "aria-pressed": snap.open,
459
+ onClick: () => setState({ open: !snap.open }),
460
+ }, "导航"),
461
+ ),
462
+ );
455
463
  }
456
464
 
457
465
  /* ---------- floating navigator panel ---------- */
@@ -589,34 +597,56 @@ window.__ModuleLoader__.load({
589
597
  React.createElement("div", { className: "cnvnav-head" },
590
598
  React.createElement("span", { className: "cnvnav-title" }, "会话导航"),
591
599
  React.createElement("span", { className: "cnvnav-count" }, String(count) + " 条"),
592
- React.createElement(Button, {
593
- variant: "ghost",
594
- size: "sm",
595
- className: "cnvnav-close",
596
- icon: React.createElement(IconCloseOutline16, { size: 14 }),
597
- title: "收起",
598
- onClick: () => setState({ open: false }),
599
- }),
600
+ React.createElement(Tooltip, {
601
+ label: "收起面板",
602
+ side: "bottom",
603
+ delayMs: 500,
604
+ },
605
+ React.createElement("span", { className: "cnvnav-close" },
606
+ React.createElement(Button, {
607
+ variant: "ghost",
608
+ size: "sm",
609
+ icon: React.createElement(IconCloseOutline16, { size: 14 }),
610
+ onClick: () => setState({ open: false }),
611
+ }),
612
+ ),
613
+ ),
600
614
  ),
601
615
  React.createElement("div", { className: "cnvnav-topbar" },
602
- React.createElement(Button, {
603
- variant: "ghost",
604
- size: "sm",
605
- className: "cnvnav-bar-btn",
606
- icon: React.createElement(LoadEarlierIcon),
616
+ React.createElement(Tooltip, {
617
+ label: "加载更早的一批轮次",
618
+ side: "bottom",
619
+ delayMs: 500,
607
620
  disabled: !snap.hasMore || snap.loadingOlder,
608
- title: "加载更早的一批轮次",
609
- onClick: () => loadOlderPage(),
610
- }, "加载更早"),
611
- React.createElement(Button, {
612
- variant: "ghost",
613
- size: "sm",
614
- className: "cnvnav-bar-btn",
615
- icon: React.createElement(LoadAllIcon),
621
+ },
622
+ React.createElement("span", { className: "cnvnav-bar-btn" },
623
+ React.createElement(Button, {
624
+ variant: "ghost",
625
+ size: "sm",
626
+ className: "cnvnav-bar-fill",
627
+ icon: React.createElement(LoadEarlierIcon),
628
+ disabled: !snap.hasMore || snap.loadingOlder,
629
+ onClick: () => loadOlderPage(),
630
+ }, "加载更早"),
631
+ ),
632
+ ),
633
+ React.createElement(Tooltip, {
634
+ label: "加载全部历史轮次",
635
+ side: "bottom",
636
+ delayMs: 500,
616
637
  disabled: !snap.hasMore || snap.loadingOlder || snap.loadingAll,
617
- title: "加载全部历史轮次",
618
- onClick: () => loadAllPages(),
619
- }, "加载全部"),
638
+ },
639
+ React.createElement("span", { className: "cnvnav-bar-btn" },
640
+ React.createElement(Button, {
641
+ variant: "ghost",
642
+ size: "sm",
643
+ className: "cnvnav-bar-fill",
644
+ icon: React.createElement(LoadAllIcon),
645
+ disabled: !snap.hasMore || snap.loadingOlder || snap.loadingAll,
646
+ onClick: () => loadAllPages(),
647
+ }, "加载全部"),
648
+ ),
649
+ ),
620
650
  ),
621
651
  React.createElement("div", {
622
652
  ref: (el) => { listEl = el; },
@@ -627,27 +657,42 @@ window.__ModuleLoader__.load({
627
657
  : groupNodes,
628
658
  ),
629
659
  React.createElement("div", { className: "cnvnav-footer" },
630
- React.createElement(Button, {
631
- variant: "ghost",
632
- size: "sm",
633
- className: "cnvnav-bar-btn",
634
- icon: React.createElement(JumpLatestIcon),
635
- onClick: () => {
636
- const gs = snap.outline !== null ? snap.outline.groups : [];
637
- if (gs.length === 0) return;
638
- const lastGroup = gs[gs.length - 1];
639
- const lastItem = lastGroup.items[lastGroup.items.length - 1];
640
- if (lastItem !== undefined) jumpTo(lastItem.key);
641
- },
642
- }, "回到最新"),
643
- React.createElement(Button, {
644
- variant: "ghost",
645
- size: "sm",
646
- className: "cnvnav-bar-btn",
647
- icon: React.createElement(CollapseAllIcon),
648
- title: "折叠所有已展开的轮次",
649
- onClick: () => setState({ expanded: {} }),
650
- }, "全部折叠"),
660
+ React.createElement(Tooltip, {
661
+ label: "回到对话最新位置",
662
+ side: "top",
663
+ delayMs: 500,
664
+ },
665
+ React.createElement("span", { className: "cnvnav-bar-btn" },
666
+ React.createElement(Button, {
667
+ variant: "ghost",
668
+ size: "sm",
669
+ className: "cnvnav-bar-fill",
670
+ icon: React.createElement(JumpLatestIcon),
671
+ onClick: () => {
672
+ const gs = snap.outline !== null ? snap.outline.groups : [];
673
+ if (gs.length === 0) return;
674
+ const lastGroup = gs[gs.length - 1];
675
+ const lastItem = lastGroup.items[lastGroup.items.length - 1];
676
+ if (lastItem !== undefined) jumpTo(lastItem.key);
677
+ },
678
+ }, "回到最新"),
679
+ ),
680
+ ),
681
+ React.createElement(Tooltip, {
682
+ label: "折叠所有已展开的轮次",
683
+ side: "top",
684
+ delayMs: 500,
685
+ },
686
+ React.createElement("span", { className: "cnvnav-bar-btn" },
687
+ React.createElement(Button, {
688
+ variant: "ghost",
689
+ size: "sm",
690
+ className: "cnvnav-bar-fill",
691
+ icon: React.createElement(CollapseAllIcon),
692
+ onClick: () => setState({ expanded: {} }),
693
+ }, "全部折叠"),
694
+ ),
695
+ ),
651
696
  ),
652
697
  );
653
698
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-conversation-navigator",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Codex 风格的 DSH(DeepSeek Harness)会话导航插件:按轮折叠的对话大纲面板,支持节点点击跳转、滚动位置高亮与轨迹视图同款配色。",
5
5
  "keywords": [
6
6
  "dsh",