@akshaydev17/dsh-history-question-nav-english
v1.0.0
Published
DSH web plugin: a right-side question navigator for the current session. Lists every user question and scrolls to the matching message on click.
Maintainers
Readme
@akshaydev17/dsh-history-question-nav-english
A DeepSeek Harness Web client plugin: lists every question you've asked in the current session in a panel on the right side of the window; clicking any entry smoothly scrolls the conversation to the matching position (the question bubble briefly highlights).
- A persistent "Questions" panel on the right lists all user questions in the current session, in conversation order.
- Click a question → the conversation scrolls to that question's position and briefly highlights it.
- The panel can be collapsed into a small "Questions" button in the top-right corner.
- Follows the current session: switching sessions automatically swaps the list to that session's questions.
- English UI: registers the
question-nav-englishlocale namespace, so all panel copy renders in English regardless of the DSH language setting.

Directory structure
dsh-history-question-nav/
├── package.json # dsh.bundle.patch + dsh.client.platform = "web"
├── cordis.patch.yml # profile patch layer: inserts this plugin's row
├── lib/
│ ├── index.js # host half (deliberately empty)
│ ├── client.js # browser half (window.__ModuleLoader__.load bundle format)
│ └── types/ # minimal d.ts declarations
└── README.mdThe client half depends only on react, which the shell already provides (no dsh.client.external needed). It registers into the layout's framework-level overlay via ctx.slots.inject("shell.overlay", ...), reads the current session's conversation snapshot through ctx.sessions.binding(currentId), and registers its copy via ctx.locale.register("question-nav-english", ...), rendering through the t prop in the component.
Install
dsh plugin --profile web add @akshaydev17/dsh-history-question-nav-englishdsh plugin will: ① pnpm add the dependency; ② detect that this package declares dsh.bundle and automatically add it to the profile's bundles layer, so the cordis.patch.yml insert row takes effect. Then restart the web service and refresh the page:
dsh webpnpm must be installed locally (
dsh pluginmanages dependencies through it).
Manual install (without dsh plugin)
- Put this directory under the profile's
node_modulesand add@akshaydev17/dsh-history-question-nav-englishto thedependenciesof the profile'spackage.json. - Merge the contents of
cordis.patch.ymlinto the profile'scordis.patch.yml, or add@akshaydev17/dsh-history-question-nav-englishtodsh.profile.bundlesdirectly. - Restart
dsh weband refresh the page.
How it works
shell.overlayis a framework-level overlay declared byui-layout(additive list, root scope); this plugin registers its panel into it, withpointer-events:autoso the panel is interactive while the rest stays click-through.- The current session id comes from the global standard hook
useSessions(s => s.current); the session's conversation snapshot is obtained via the injectedctx.sessionsusingbinding(id).session, subscribed throughuseSyncExternalStore. - The question list comes from
ConversationSnapshot.chat(order+nodes.get(key)), filtered bykind === "user"; each chat node carries adata-chat-anchor-keyattribute in the DOM. On click, the element is located by that key, then a smooth scroll is performed on the[data-conversation-scroll]scroll container.
