Repository navigation
Releases
dsh-section-nav v0.5.0
The rail can now be stowed out of the way.
Manual collapse. The rail takes a fixed slice of the gutter, and there was previously no way to reclaim it while reading a wide answer short of resizing the window. A collapse control in the rail heading now stows the whole rail into a small button at its right edge; clicking that button restores it. The button is the rail's only affordance while collapsed, so the rail is always reachable. The choice is remembered across reloads and Sessions.
This is deliberately different from the mini mode removed in v0.3.0: that collapsed entries into markers whenever the gutter was narrow, which cost readability without being asked for. This only reacts to an explicit click.
dsh-section-nav v0.4.0
The rail no longer pages a whole session up front.
Lazy history. Opening a long session used to page the entire transcript before the rail settled, which was slow and made the rail compete with the chat for the scroll position. The rail now renders only the newest 8 turns and grows that window by 8 per request, paging in just enough history to back it.
An explicit load control. Scrolling up was previously the only way to reach older turns, which was undiscoverable: nothing in the rail said more history existed or how to get it. The load control now sits as the first row of the list, so it appears exactly when you scroll to the top. It shows a pending state while fetching and, once the Host has no more pages, disables itself with "no older turns left". Scrolling up at the top still works as before.
Bookmarks are unaffected. A bookmark pointing outside the rendered window still pages history on demand to reach its target.
dsh-section-nav v0.3.0
Three changes to the always-visible directory rail.
Two-part hover card. Hovering a rail entry used to show the browser's native tooltip, which could only carry the user message text on a plain dark box. The card now renders inside the plugin's shadow root, styled with the host's semantic tokens so it follows the DSH theme: the user's request on the main line and a two-line excerpt of that turn's final model answer beneath it. Reasoning disclosures are stripped, so the excerpt opens on the answer rather than the thinking preamble.
Navigation that holds. Clicking a rail entry while older history was still paging ended with the viewport parked on the wrong rows: paging scrolls the transcript to the top to reach the load-earlier control, and the 8s pause window did not cover a long page-out. The rail now remembers the navigated turn and re-aligns it after each page.
The rail no longer collapses. The mini mode replaced every title with a marker whenever the gutter was too narrow, which made the rail unreadable exactly when scanning it mattered most. It now narrows to a minimum width and pins to the viewport edge instead, so titles stay visible and truncate earlier.
The newest entry stays in view. Entries run oldest to newest, so a session with more turns than the rail could show pushed its newest ones below the fold; the rail only ever scrolled an entry into view once it became the active section, which never happens for turns below the reading line. The rail now follows the tail while the list overflows, and stops following as soon as you scroll up to read older turns.
BREAKING CHANGE: the mini rail mode and its marker-only layout are gone, and the rail is wider at every viewport size.
dsh-section-nav v0.2.9
The directory rail now sizes by available gutter space instead of fixed viewport breakpoints: full/compact/mini are chosen by fit, and full/compact widths grow up to 420px/300px into the free space. This prevents a wide layout from still showing a compressed rail.
dsh-section-nav v0.2.7
Fixes cross-session cache contamination: while switching Sessions, the plugin waits for the transcript DOM signature to change (or a 3s fallback) before parsing it, so old rows cannot be merged into the new Session's cached directory. Builds on v0.2.6 per-Session directory caching for fast switching.
dsh-section-nav v0.2.6
dsh-section-nav v0.2.6
Makes session switching much faster by caching each Session's directory.
- The plugin keeps an in-memory directory cache per conversation key: section metadata, text hashes, turn indexes, stable message ids, and whether the Host has more history.
- Leaving a Session saves its current directory. Switching back renders the cached entries immediately, then merges the live DOM tail, instead of rebuilding the whole directory from scratch.
- If a Session's cache is marked history-exhausted, switching back no longer restarts the "load earlier" pager. Only genuinely incomplete Sessions continue paging in the background.
- Cached entries remain clickable: if an older page is not mounted yet, the click queues a pending navigation and resumes history paging until the target row appears.
- The cache is capped at 24 recent Sessions to bound memory.
Install/update with:
dsh plugin --profile web add github:jolaaa999/dsh-section-nav#v0.2.6dsh-section-nav v0.2.5
dsh-section-nav v0.2.5
Fixes the "click a recent entry and jump into old history" bug.
- Navigation now resolves the clicked entry by its stable
data-chat-anchor-key/data-chat-flow-keyat click time, falling back to turn index and only then to the originally captured DOM element. A recycled or replaced DOM node can no longer redirect a recent click into an older row. - Background history paging is paused for 8 seconds on every rail click and bookmark jump, and the in-flight paging generation is invalidated. The pager can no longer prepend older pages while the rail is scrolling to a recent entry.
- Extra pause checks before scrolling to top and before clicking the paging control prevent a late pager iteration from fighting the user's navigation.
Install/update with:
dsh plugin --profile web add github:jolaaa999/dsh-section-nav#v0.2.5dsh-section-nav v0.2.4
dsh-section-nav v0.2.4
This release makes the directory rail always visible and works toward loading the complete session history.
- Always visible: the rail no longer switches to
hidden. When there is not enough room beside the message column, it pins a mini rail to the viewport edge; on the hero/no-session screen it also shows the empty directory instead of disappearing. - Full session history: the history loader now retries continuously from the watchdog instead of giving up when the "load earlier" control is not mounted yet. It scrolls to uncover the control, waits for disabled/loading states, and falls back to the session controller's
loadOlder()when the DOM control is unavailable. - Accurate paging progress: page detection now tracks the first transcript row identity, so live streaming at the tail no longer looks like an older page was loaded.
- Stable reading position: the fallback session-controller path preserves the current scroll offset when it prepends history and the reader is not pinned to the bottom.
- All loaded user turns are listed: the directory rebuilds after every loaded history page, so entries appear from the beginning of the session through the live tail as far as the Host exposes them.
Install/update with:
dsh plugin --profile web add github:jolaaa999/dsh-section-nav#v0.2.4dsh-section-nav v0.2.2
dsh-section-nav v0.2.2
This release fixes the two local-use issues reported after v0.2.1:
- Rail now appears reliably without resizing — the controller refreshes the rail anchor on every watchdog/mutation and after pointer-up layout gestures, instead of waiting for the target element's own resize event.
- The rail no longer covers the transcript width handle — full/compact/mini gaps clear the right width-handle strip, and the fallback edge placement keeps a safe distance from both the message column and the handle.
- The plugin host is now a fixed, pointer-events-none shell — it cannot change the chat layout or intercept pointer events outside the rail/drawer.
- Layout changes are tracked through
[data-conversation-scroll]so sidebar/window moves that shift the centered message column without resizing it are reflected immediately.
Also included from the v0.2.x directory work: historical-answer/user-message directory entries, load-earlier history expansion, and the enlarged edge-aware rail.
dsh-section-nav v0.2.1
dsh-section-nav v0.2.1
The directory now auto-loads older session history:
- On session load, the plugin clicks the product's own
加载更早/Load earlier
control repeatedly until no earlier page remains. - Each loaded page is scanned again, so older user messages join the directory
automatically without manual scrolling. - Progress uses page row identities, so virtualized/replaced rows still count.
- The directory remains one entry per user message.
Install or update with:
dsh plugin --profile web add github:jolaaa999/dsh-section-nav