vlln/dsh-navbar
DSH 插件:对话节点导航条(右缘节点串快速跳转 user 消息)。官方 bundle 插件,dsh plugin --profile web add 安装
已收录
38
Ui
Bundle 已验证
功能介绍
对话节点导航条,右缘节点串快速跳转 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
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

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 officialconversation.chat.assistant-actionsslot, with React provided by the client runtime; ctx services accessed must be declared in the plugin object’sinject) - 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 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。