Preface¶
In the DSH Web GUI, a session often involves multiple rounds of user messages, steering messages sent during agent execution, and corresponding model replies. As conversations grow longer, scrolling up and down to locate a specific round of messages becomes inconvenient.
The following introduces KeLearns/dsh-navigation-bar: it maps user messages within a single session to a row of “piano keys,” supporting hover previews and click navigation, designed for navigating multi-turn conversations within a session.
What Is This¶
KeLearns/dsh-navigation-bar is a DSH client plugin that provides multi-turn conversation navigation for individual sessions in the DSH Web GUI.
- Maintainer:
KeLearns - License:
MIT - Platform declaration:
dsh.client.platformisweb - Plugin form: Based on DSH’s official two-sided plugin mechanism (host + browser half), without modifying DSH source code
Its core idea is: one key corresponds to one user message. Model replies do not occupy individual keys but are incorporated into the preview for the corresponding turn.
Core Features¶
In-Session Navigation¶
The navigation bar anchors only user messages:
- One key = one user message
- Includes steering messages sent during agent execution
- Keys are arranged in chronological order
- Model replies do not occupy individual keys; they are incorporated into the preview for the corresponding turn
This way, the granularity of the navigation bar is “one turn of user input,” rather than generating a navigation item for every individual message.
Visual Specifications¶
The navigation bar adopts reference-level visual specifications:
- Key spacing:
10px - Key height:
2px - Minimum length:
6px - Hover length:
26px(approximately4.3×) - Position: Vertically centered within the message area
Color schemes are measured pixel-by-pixel based on references:
Light theme: #D2D3D3 / #767779 / #1A1C1F
Dark theme: #454545 / #A3A3A3 / #FFFFFF
Hover Ladder¶
When hovering over a key, that key lengthens and changes color, with adjacent keys forming a 3-level ladder:
20px / 14px / 10px
≈77% / 54% / 38%
The 4th neighboring key returns to the minimum length. When hovering over the first or last key, the ladder naturally trims at the boundary on one side.
Hover Bubble¶
When hovering, a preview of the messages in that turn is displayed:
- User message: Single-line with ellipsis
- Corresponding model reply: Up to 3 lines
- Truncation method: Dual insurance via width-based JS truncation and
-webkit-line-clamp - Overflow content: Ellipsis (
…)
Current Position Highlight and Jump¶
In non-hover state, the key corresponding to the currently viewed content only changes color without length change, and updates in real-time with scrolling.
Clicking the corresponding key jumps to the position of that turn’s messages. The plugin supports adaptive themes for light and dark modes:
data-ds-dark-theme
prefers-color-scheme
Installation and Enabling¶
Install the official package to the web profile:
dsh plugin --profile web add @kelearns/dsh-navigation-bar
After execution, you need to restart the dsh web instance and refresh the page to make the plugin effective on the browser side.
You can also search for navigation-bar in the Plugin Market (dsh-market) within the DSH settings page for one-click installation.
Local Development¶
For local development, you can install using the link method:
dsh plugin --profile web add link:<this-directory>
After modifying lib/client.js, refresh the page to see changes.
The runtime and dependency requirements are as follows:
{
"engines": {
"node": "^22.19.0 || >=24.0.0"
},
"peerDependencies": {
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
}
The platform declaration is web:
dsh.client.platform: web
Data Source and DOM Anchors¶
According to the documentation, the plugin uses the official DSH API to fetch current session data:
ctx.sessions.binding(currentId).session → ConversationSnapshot
Page positioning relies on the following DOM anchors:
Scroll container: [data-conversation-scroll]
Message row: [data-chat-anchor-key]
This means the navigation bar primarily renders based on the current session snapshot and existing message anchors, without relying on additional self-created message structures.
Use Cases and Considerations¶
This plugin is suitable for use in the DSH Web GUI when you need to quickly locate a specific round of user input, agent steering messages, or corresponding model replies.
Before installation, it is recommended to:
- Check if the source code and
MITlicense are acceptable. - Confirm that the runtime environment meets the Node version and peer dependency requirements.
- Note that the plugin runs with the permissions of the current
dshprocess, and the installation source should be verifiable. - After installing the plugin, restart the
dsh webinstance and refresh the page.
This plugin is included in the awesome-dsh-plugin curated directory.
Links¶
- GitHub:
https://github.com/KeLearns/dsh-navigation-bar - Directory page URL provided in the plugin clue:
https://www.skillhub.cn/plugins/KeLearns/dsh-navigation-bar(This URL comes from the plugin clue and has not been verified in the fetched materials; please confirm before visiting.)