vlln/dsh-navbar

DSH 插件:对话节点导航条(右缘节点串快速跳转 user 消息)。官方 bundle 插件,dsh plugin --profile web add 安装

Bundle 已验证 MIT TypeScript 未知
Bundle 已验证

已收录

38

Ui

Bundle 已验证

版本未知
语言TypeScript
许可证MIT
在 GitHub 查看

功能介绍

对话节点导航条,右缘节点串快速跳转 user 消息。

适合

  • 适合浏览包含大量用户轮次的长 DSH 对话。
  • 适合借助悬停预览、阅读位置跟踪和快速跳转来回顾提示的流程。
  • 适合固定重要 Assistant 回复,并希望刷新浏览器后仍保留固定状态的用户。

不适合

  • 不适合少于两条用户消息的短对话,因为导航条会自动隐藏。
  • 不适合轨迹页、任务看板等非对话页面,因为导航条不会显示。
  • 不适合不使用 DSH 浏览器界面的无头或纯 Agent 流程。

README

中文 | English

navbar

Conversation node navigation rail: jump between user messages from the node strip on the right edge of the conversation — hover to preview, click to jump

license

An evenly spaced node strip along the right edge of the conversation area (one node per user message): the active pill follows your reading position, hovering shows a preview card (truncated at 6 lines), clicking smooth-scrolls with a brand-blue highlight ring, more than 11 nodes automatically switch to a sliding window, it stays invisible until hovered, and it auto-hides when there are fewer than 2 user messages. Implements the dsh-external/issues#144 spec. Form: an official bundle plugin (dsh.bundle + dshClient channel, browser-only, empty Node half), 0 patches.

Preview

navbar node navigation rail (real runtime screenshot: node strip on the right edge + active highlight)

Features

Feature Description
Node navigation rail Vertical node strip on the right edge of the conversation area, one dot node per user message
Follows reading position The active pill (22px brand-blue capsule) moves with your current reading position
Hover preview Hovering a node shows a message preview card (6-line truncation, matching the official HoverCard look)
Continuous hover The entire rail (including the gaps between nodes) responds to hover continuously: the preview switches to the nearest node and the corresponding pill elongates (gray) to indicate the click target — no dead zones
Scroll-wheel switching With the cursor over the rail, scrolling the wheel moves up/down one message (blocking conversation-area scrolling)
Click to jump The whole rail is clickable (including gaps, jumping to the nearest node) plus an enlarged pill hit area — no need to precisely aim at tiny dots
Sliding window When there are more than 11 nodes, only the nodes inside the window are shown (avoids overflow)
Auto-hide Not shown with fewer than 2 user messages or on non-conversation pages
Message pin 📌 button on the assistant action bar (between copy and Good response); pinned turns render as a golden slim elliptical disc in the rail (always visible, the preview card carries a 📌 badge, clicking jumps straight to the pinned reply), persisted per session

Zero data-channel dependencies: driven only by official anchor attributes (data-time-hover-root, on user rows since 0806) — no polling, no routing, no tools.

Installation

Recommended: one-line install from git source (build artifacts are committed, so git source does not trigger a build):

dsh plugin --profile web add "github:vlln/dsh-navbar#main"   # one-line git-source install (build artifacts committed)
# or npm source: dsh plugin --profile web add @vlln/dsh-navbar@0.3.0

Or from a local directory (when you have the source): git clone, then cd dsh-navbar && dsh plugin --profile web add ..

Restart web after installing for it to take effect; you can disable/enable it in the Plugins panel on the Settings page.

Usage

Works out of the box — no commands, no tools. The node rail appears on the right edge of the conversation page (Chat view); hover for a preview, click to jump. Animations are disabled under prefers-reduced-motion.

Pin: hover an assistant message’s action bar and click 📌 to pin that reply — the corresponding turn’s navigation node becomes a golden slim elliptical disc (click to jump straight to that reply; the preview card shows a 📌 badge and the reply text). Pin state is saved per session in browser localStorage and survives refreshes; click again to unpin.

Development

pnpm install
pnpm run build      # tsdown: client bundle (lib/client.js)
  • client: src/client/index.ts (self-rendered DOM + official anchor contract; the pin button uses the official conversation.chat.assistant-actions slot, with React provided by the client runtime; ctx services accessed must be declared in the plugin object’s inject)
  • Node half: src/index.mjs (empty apply, the bundle mount carrier)

License

MIT License (an example plugin in the DSH ecosystem).

常见问题常见问题

在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:vlln/dsh-navbar。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。