Install
Inside DeepSeek Harness, with dsh-market
dsh plugin --profile web add dshmarket
Or from the command line
dsh plugin --profile web add dsh-codex-timeline
Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.
README
English | 中文
A subtle user-Turn navigation rail attached to the left edge of the active DeepSeek Harness Web Chat transcript. It highlights the Turn at the reading position, jumps between prompts, and can automatically materialize every historical Turn and preview.
Interface tour
The rail stays quiet by default: each loaded user Turn is one short dash, and only the current reading position is highlighted. On hover, nearby markers expand into a stepped shape for accurate selection, then return to their compact state when the pointer leaves.
Every prompt, answer, metric, and search result in the illustration and DSH captures below is dedicated test copy. No real conversation content is used.
Both images below were captured from DSH 0.1.0-rc.6 with this plugin installed. They show the same real rail in its compact and pointer-hover states:
The feature illustration summarizes the real interaction: hovering reveals Turn position, status, duration, TTFT, throughput, prompt, and model-answer context. Search shows each keyword in context and jumps directly to the matching Turn.
Typical flow
- Scroll the transcript and let the rail track the current Turn.
- Hover for two prompt lines and two answer lines; click or press Enter / Space to jump.
- Enable “Automatically load full history” to call DSH's existing history pager every 80 ms until every older Turn is materialized.
Compatibility
This release supports only the following verified combination. It intentionally declares no broader compatibility range:
- Verified DSH:
0.1.0-rc.7 - Verified DSH commit:
99f6f02fecdb7dff40c3fbc9470f5907c29f74ca - Bundled adapter source:
@deepseek-ai/dsh-client-ui-conversation@0.1.0-rc.6 - Node.js:
^22.19.0 || >=24.0.0
DSH rc.6 does not expose a public Chat gutter/navigation slot. This package uses the official dsh.bundle.patch mechanism to disable the fixed ui-conversation row and insert an exact rc.6 Conversation adapter. The adapter declares a controlled navigation slot and registers the timeline into it. It does not modify the global DSH installation.
Do not force-install this release on another DSH version. Remove it before upgrading DSH and repeat the contract audit described below.
Install
Check the active version:
dsh --version
Install from npm into the Web profile:
dsh plugin --profile web add dsh-codex-timeline
The repository also ships a version-checking PowerShell helper:
powershell -ExecutionPolicy Bypass -File .\install.ps1
Restart DSH Web and refresh the page. Verify the composed bundle without booting it:
dsh --profile web --dump-config | Select-String -Pattern "dsh-codex-timeline|ui-conversation"
The output should contain # == dsh-codex-timeline; the built-in ui-conversation row should be disabled: true, and a new codex-timeline row should name dsh-codex-timeline.
Migrating from the legacy local override
If you installed the early same-name Conversation tarball, remove it before adding the standard bundle:
dsh plugin --profile web remove "@deepseek-ai/dsh-client-ui-conversation"
dsh plugin --profile web add dsh-codex-timeline
Uninstall
dsh plugin --profile web remove dsh-codex-timeline
Or run:
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
Restart DSH Web to return to the built-in Conversation UI.
Features
- Creates one marker only for a real user Turn. Tool calls, approval UI, plan UI, subagents, and assistant streaming chunks do not create noisy markers.
- Tracks the current viewport Turn without pulling a reader back to the bottom while output streams.
- Expands nearby short bars into a stepped shape on hover and temporarily follows the pointer; leaving restores the viewport highlight.
- Shows item x/y, time, status, two prompt lines, two model-answer lines, and real Turn duration, TTFT, and tok/s when available.
- Supports click, Enter, Space, arrow keys, Home, End,
focus-visible, andprefers-reduced-motion. - Reuses the official DSH history loader behind a compact top ellipsis; stable node IDs preserve the reader anchor after a prepend.
- “Automatically load full history” repeatedly calls DSH's native history pager at 80 ms intervals until the complete old transcript is rendered in Chat.
- Searches available Turn previews and materialized transcript text locally, showing highlighted keyword context. Search data is never sent to the model or telemetry.
- Hides automatically below three user messages, unless earlier history still exists.
- Collapses on narrow screens without covering the composer or reducing message readability.
- The settings page (Settings → Plugins → Plugin configuration) offers an enable toggle, “Automatically load full history,” and three position/spacing sliders; every preference is written through to the DSH settings document (settings.yaml) immediately and survives reloads and browser switches.
- The top-left ⋮ / search controls stay anchored; the position sliders move only the marker column.
Privacy
Prompt summaries, answer previews, search indexes, and hover/focus state are computed from the official Chat snapshot in the current browser. The plugin adds no model context, network request, or telemetry event.
Development and validation
pnpm install
pnpm run check
pnpm pack --pack-destination artifacts
Validate a local tarball against a profile:
dsh plugin --profile web add ".\artifacts\dsh-codex-timeline-0.2.0.tgz"
dsh --profile web --dump-config
lib/client.js is the SHA-256-pinned compatibility artifact generated for rc.6. scripts/prepare-dist.mjs only normalizes package identity and local build paths; scripts/verify-dist.mjs checks its slot, observer, interaction, and hash contracts. src/navigation-model.mjs retains independently testable Turn projection and search logic. See NOTICE for upstream attribution.
Upgrade audit
Never broaden the DSH peer range without a new audit. At minimum, run:
dsh --version
dsh --profile web --dump-config
pnpm run check
pnpm pack --pack-destination artifacts
pnpm run test
Recheck:
- the
ui-conversationrow and client module loader rules; ConversationTimelineSnapshot, Chat snapshot, Turn locations, and stable node IDs;- the Chat scroll owner, history prepend, bottom-follow logic, and navigation slot;
- settings scope, locale, and slot injection contracts;
- real-browser behavior for light/dark themes, narrow screens, keyboard use, reduced motion, streaming, tool-heavy Turns, reconnects, and history loading.
If a capability changes, publish a separately verified adapter. Do not let this release replace an unknown Conversation implementation.
License
MIT. The package contains an rc.6 compatibility adapter built from MIT-licensed DeepSeek Harness sources; see NOTICE.