Preface¶
When handling long conversations in the DSH Web GUI, common operations go beyond just continuing the chat—they also include quickly locating a specific user message, determining the current position while scrolling through the chat, and referring back to the previous input when the input box is empty. DSH’s philosophy is “everything is a plugin,” and such experiences can be extended through client-side plugins. dsh-node-nav is a plugin solution for the Web GUI’s sidebar navigation and input history.
What This Is¶
dsh-node-nav is a client-side plugin for the DSH Web GUI, published under the account Seryta (the GitHub repository and installation command point to this account). It provides a node chain on the right side of the chat area, supporting hover previews, click-to-jump, and making the active pill follow the reading position.
The plugin is licensed under MIT, and its documentation states it is written entirely in vanilla JS (zero build, zero dependencies), so installing via git does not trigger build scripts.
Core Features¶
The verified capabilities of dsh-node-nav include:
- Node chain: Provides a vertical node navigation on the right side of the Web GUI.
- Full history nodes: Covers historical user messages in the
session logofattachedsessions, reducing the limitation of relying only on the current DOM. - Bottom node: Provides a bottom node.
hover/focuspreview: Shows a message text preview on hover or keyboard focus.- Click-to-jump: Smoothly scrolls to the corresponding message on click with a brief highlight.
activefollow: Theactivestate follows the current reading position as it changes.- Input history: When the input box is empty, pressing
↑fills in the most recent user input; pressing↑repeatedly goes further back, while↓goes forward again. detailsavoidance: Avoids overlap when the right-sidedetailspanel is open.- Dark mode: Supports dark mode.
reduced-motion: Supportsreduced-motion.- Auto-hide: Supports auto-hiding.
Installation and Activation¶
The installation command is:
dsh plugin --profile web add github:Seryta/dsh-node-nav
After installation, restart dsh web and refresh the page.
If you prefer to install from a local directory, you can clone the repository first:
git clone https://github.com/Seryta/dsh-node-nav.git
dsh plugin --profile web add ./dsh-node-nav
The plugin runs with the permissions of the current dsh process. It is recommended to review the source code and license before installation; the plugin’s documentation lists the license as MIT.
Typical Usage¶
Here are several reproducible usage paths:
-
After installing and restarting
dsh web, open the node chain on the right side of the Web GUI chat page. -
Hover over a node, or focus on it via the keyboard, to view a preview of the message text.
-
Click a node to smoothly scroll to the corresponding message with a brief highlight.
-
When the input box is empty, press
↑to fill in the most recent user input; continue pressing↑to go further back; press↓to go forward again. -
For historical nodes not yet loaded into the page, clicking will repeatedly trigger the page’s “load earlier” until that row enters the DOM, then scroll to it.
If the current dsh version has removed the “load earlier” button from the page, the documentation states that clicking an unloaded node will prompt that the target message could not be located.
Applicable Scenarios and Notes¶
This is suitable for developers using the DSH Web GUI who need to locate user messages in long conversations, check the current position, or review input history.
Points to note:
- The plugin runs with the permissions of the current
dshprocess, so the source code and license should be reviewed before installation. - Input history only covers the currently open (live) session; the host endpoint only queries
attachedsessions, and unopened historical sessions have nocomposerfocus, so input history is not applicable there. - The full list endpoint is as follows:
/plugins/dsh-node-nav/api/users
This endpoint extracts all real user messages from the session log of attached sessions; if the endpoint is unavailable or the session is cold (not attached), it falls back to pure DOM scanning.
- Input history and jump navigation depend on the following
dshclient contracts:
[data-chat-anchor-key]
[data-composer-card]
hooks.input
props.inputActions
If major harness versions change these contracts, this plugin needs to be adapted accordingly.
- Clicking unloaded nodes depends on the existence of the page’s “load earlier” button, with a documented upper limit of 30 batches; in
harnessversions where the button is removed, clicking an unloaded node will prompt that the target message could not be located.
Conclusion¶
dsh-node-nav provides navigation enhancements on the DSH Web GUI side: node chain, previews, jump navigation, reading position follow, and input history review. The repository is at https://github.com/Seryta/dsh-node-nav. The verified documentation does not provide a directory page URL; the DSH community directory is an independent site and has no official affiliation with DeepSeek / High-Flyer.