dshbase

Plugin directory / UI & Skins / dsh-client-ui-question-history

dsh-client-ui-question-history

Verified · install-tested on dsh dhj-l

✓ Actively maintained Builds on 5 official DSH packages Pure TypeScript

View on GitHub ↗ ← Back to plugin directory

1Stars
0Forks
0Open issues
TypeScriptLanguage
2026-08-14Last push
Cross-platformPlatform

What it does

A plugin in the UI & Skins category for DeepSeek Harness.

✅
Our take
Works — verified, early-stage project

A plugin in the UI & Skins category for DeepSeek Harness. It installs cleanly and boots without issues in our testing. It's early-stage but functional.

“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.

README

dsh-client-ui-question-history

Floating right-edge question-history panel for the DeepSeek Harness web GUI: it lists the current session's user questions in conversation order and jumps the transcript to the clicked question. The browser half registers the panel into the frame's shell.overlay seat, vertically centered at the conversation column's right edge, capped at twelve visible rows (the remainder scrolls inside the panel), and hidden entirely when the current session has no user questions.

How it works

The overlay seat is root-scoped and receives no useSession, so the plugin's apply closure mirrors the current session's conversation snapshot into a registrant-private store and exposes it through the inject hooks compartment — the component reads it through the framework-bound useCurrentSession selector hook and contains no subscription machinery. The mirror follows sessions.list.current, resubscribing to the staged session's snapshot store on every selection change.

selectQuestions derives the list purely from the snapshot: the Chat node index's ordered keys, user and steering kinds only, visible nodes only, text blocks concatenated with whitespace normalized, and images collapsed to a localized marker. Clicking a row calls scrollToQuestion, which centers the target row in the active transcript's scrollport using the chat view's own scroll-restore vocabulary ([data-conversation-scroll] and [data-chat-anchor-key]).

The browser half is a lazy-CJS factory handoff: the GUI serves lib/client.js at /plugins/dsh-client-ui-question-history/client.js, and the script registers the factory through window.__ModuleLoader__.load. The factory requires only react and @deepseek-ai/dsh-client-runtime/client (the snapshot-store exemption) from the module table; everything else is type-only. npm run build reproduces the bundle with esbuild; lib/ is committed so a checkout can be dropped into the GUI without a build step.

Installation

The GUI loads client plugins from packages with a dsh.client declaration that its Loader can resolve, composed by a profile patch. For a dsh web profile at $DSH_HOME/profiles:

  1. Copy this package into the profile's dependency mirror so the Loader resolves the row name:

    cp -r lib package.json README.md "$DSH_HOME/profiles/node_modules/dsh-client-ui-question-history/"
    
  2. Add the row to the profile's patch ($DSH_HOME/profiles/web/cordis.patch.yml):

    - insert:
        - id: ui-question-history
          name: 'dsh-client-ui-question-history'
    
  3. Restart the web GUI.

Removing the patch row removes the panel.

Model Experience

Question-history panel

What the model sees

Nothing. This plugin adds no tool schema, no prompt section, and no model-visible input: the panel registers into the shell.overlay seat and its selectQuestions derivation is client-side presentation over the session log, so replay reconstructs the same list.

Token effect

None: nothing is added to any model request.

KV Cache effect

None: no prompt-prefix or request-prefix content changes with this package's mount.

Development

npm install
npm run build   # esbuild → lib/client.js + lib/index.js
npm test        # vitest (pure derivation + transcript-jump specs)
npm run typecheck

Known Limitations and Deferred Work

  • The transcript jump couples to the chat view's scrollport vocabulary. The panel drives [data-conversation-scroll] and [data-chat-anchor-key] directly — the chat view's own restore mechanism — so a future chat-view refactor must keep those attributes or the click stops scrolling.
  • Only in-window questions are listed. The derivation reads the loaded conversation snapshot, so questions outside the current history window appear only after older history is paged in.
  • The panel is either fully visible or hidden. There is no collapse toggle; a session without user questions hides the panel entirely.
  • The apply-side wiring is not covered by the standalone tests. The pure derivation and jump helpers are tested here; the registration/mirror behavior is exercised by the DeepSeek Harness repository's own test runtime.

License

MIT

Install

🧩 Let your agent install it (recommended)

Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:

dsh plugin add dshbase-catalog

Then say "install dsh-client-ui-question-history for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.

This plugin is GitHub source (not published to npm) — install it straight from the repo:

Web profile:

dsh plugin --profile web add github:dhj-l/dsh-client-ui-question-history

Headless (CLI) profile:

dsh plugin --profile headless add github:dhj-l/dsh-client-ui-question-history

Test report

Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.

When to use it

Change how dsh looks or how you interact with it — a theme, a skin, or a new panel that reshapes the workspace.

Who it's for

Users who spend hours in the web UI and want it to look and feel the way they work.

For developers — extending it

Skins, panels, and theme tokens are the extension points — author a new skin, add a panel, or sync tokens with an upstream palette.

Security: not yet scanned — our daily static scan will cover it shortly.

Share this badge

More in UI & Skins

Browse all 7797 plugins →