DSH sessions are essentially linearly scrolling conversation logs. Users can usually only scroll downward, making it difficult to quickly locate a historical exchange or continue/branch from a mid-point node. dsh-trail-plugin adds a “Historical Index” navigation layer to DSH, folding the event log into an interactive node tree.

What It Is

Maintained by MemoryIt, this plugin adds an indexable, navigable, and branchable navigation layer for linear conversation logs. It persists the index through DSH’s official projection channel ($DSH_HOME/storages/session_projcache.json), so it can be restored after a restart and is not limited by the number of messages already loaded in the conversation window.

Core Features

  • Inline jump: Click any node, and the chat feed automatically scrolls to that turn.
  • Continue (fork): Fork a new sub-session from any node and continue without interrupting the current session.
  • Branch switching: Nodes with branches show a badge; expand the dropdown menu to switch branches with one click.
  • Resizable and collapsible: The left panel width is adjustable, and its collapsed state is remembered.

Installation and Enablement

Prerequisites

  • DSH (with dsh CLI available and the profile mechanism working normally)
  • Node.js ≥ 20

Installation Command

Install from npm using the officially recommended method:

dsh plugin --profile web add dsh-trail-plugin

Replace --profile with the profile name you actually use (the default GUI profile is web).

Note: Changes at the bundle layer require restarting the entire DSH process to take effect. Please restart DSH after installation.

Verify Installation

After restarting, check the following two points:
1. The startup log contains [I] dsh-trail [dsh-trail] hello world from dsh-trail-plugin (host).
2. A “Historical Index” left panel appears on the left side of the GUI session list.

Typical Usage

After installing and restarting, open any session:

  1. Inline jump
    Click any node row, and the chat feed automatically scrolls to that conversation turn. If the target has not been loaded, earlier content is loaded automatically; if the target has no standalone message bubble, the view locates nearby content.

  2. Continue (fork)
    Hover the mouse over a node row, then click the “Continue” button that appears at the end of the row to fork a new sub-session from that node and open it automatically.

  3. Branch switching
    Node rows with branches display a numeric badge at the beginning. Click it to expand the shared-session dropdown, view sub-session summaries, and switch between them.

  4. Resizing and collapsing
    Drag the right edge of the left panel to adjust its width (range 240–480px). Click <- in the upper-right corner of the left panel to collapse it; after collapsing, click -> in the upper-left corner of the conversation area to expand it.

Configuration

Plugin configuration can be overridden through the user-level patch for the profile. Edit $DSH_HOME/profiles/<name>/cordis.patch.yml:

- id: dsh-trail-plugin
  name: dsh-trail-plugin
  config:
    enabled: true
    label: my-trail
Field Default Description
enabled true Whether to enable the plugin
label dsh-trail Prefix for logs and identifiers

Notes

  • Data safety: The plugin reads event logs only. Its write path uses only the official sessions.fork interface to create new sessions and does not modify your session data.
  • Restart required: After making changes at the bundle layer (for example, modifying code or configuration), restart the DSH process.
  • Collapsed state: If the left panel disappears after refreshing, it is likely collapsed. Click -> in the upper-left corner of the conversation area to expand it.
  • View limitation: If clicking a jump shows “Chat view is not active”, manually switch back to the “Conversation” view.
  • Legacy session compatibility: Only extremely old sessions that have only session.l.zstd compressed logs are not backfilled. Sessions with log.jsonl are all backfilled.

Conclusion

dsh-trail-plugin solves the difficulty of jumping and branching in linear logs by adding a sidebar navigation layer to DSH. It is suitable for developers who need to quickly locate context in complex, long conversations or conduct multi-branch experiments.

Plugin Directory
GitHub Repository