Repository navigation
Description
Description
In long sessions on the desktop app, reviewing earlier turns means scrolling or relying on URL hashes. There's no in-app way to jump straight to a specific user question from a persistent overview.
A persistent navigation sidebar on the right of the session view — listing each user message (truncated question text) and jumping to it on click — would make navigating long conversations much faster.
Request
Add a persistent right-side navigation panel in the session view that:
- Lists every user message in the session, showing the truncated question text as each entry
- Is always visible (not a modal)
- On click of an entry, scrolls the message timeline to that message
Rough sketch:
┌─────────────────────────────┬──────────────┐
│ message timeline │ Messages │
│ │ │
│ ▸ user: How do I parse... │ How do I... │ ← click → jump
│ ▸ assistant: ... │ Add a test │
│ ▸ user: Add a test for... │ Fix the bug │
│ ▸ assistant: ... │ ... │
│ │ │
└─────────────────────────────┴──────────────┘
What already exists in the code (so this is low-friction to implement)
While reading packages/app, I found the building blocks are all already there — this feature is mostly wiring, not new infrastructure:
visibleUserMessages()— already computed inpackages/app/src/pages/session.tsx:227(the exact list of user messages to show).scrollToMessage(message, "smooth")— already implemented inpackages/app/src/pages/session/use-session-hash-scroll.ts:88, handles reveal + DOM scroll + hash update.anchor(id)— DOM id resolver, passed intoMessageTimelineatsession.tsx:1672.SessionSidePanel(packages/app/src/pages/session/session-side-panel.tsx) — the right-side panel already exists and hosts tabs (review / context / file-tree). A new "Messages" tab or sub-panel would slot in here naturally.
So the implementation is roughly: a new panel/tab inside SessionSidePanel that maps over visibleUserMessages(), renders truncated text, and calls scrollToMessage(msg, "smooth") on click.
Current behavior
- No in-app navigation between user messages; only scrolling and URL hash (which isn't user-discoverable)
- The TUI (
packages/tui) has a/timeline"Jump to message" modal andsession.message.next/previouskeybinds, but the desktop app has none of these
Expected behavior
- A persistent, always-visible right-side list of user messages (truncated)
- Click any entry → timeline scrolls to that message
Environment
- opencode desktop app (Windows), latest
- Long sessions where scrolling back to a specific turn is tedious
Notes
- I searched existing issues and didn't find one covering a persistent message-navigation sidebar (the TUI's
/timelineis a modal, and is TUI-only). Apologies if I missed one. - I'm happy to open a PR for this — the change is contained to
SessionSidePanel+ a small new component, reusingvisibleUserMessagesandscrollToMessage.
Activity
github-actions commentedon Jun 19, 2026
This issue might be a duplicate of existing issues. Please check:
Please review the linked issue and consider whether your request is already covered there. If it's distinct enough, feel free to clarify the differences.
7nicetoseeu commentedon Jun 19, 2026
Thanks for the pointer to #32165 — I read it and there's a meaningful distinction worth keeping these separate, which the bot also flagged ("narrower scope is TUI vs. desktop app").
#32165 is explicitly scoped to the TUI (
packages/tui) — "Add a slim sidebar on the right side of the TUI...". The TUI is a separate codebase built on OpenTUI/SolidJS with its own render model (scrollbox,scroll.scrollBy, etc.).This issue (#32999) is for the desktop app (
packages/app), which is a different codebase (web/DOM +@solidjs/router, rendered in Electron). The implementation path is entirely different:visibleUserMessages()(packages/app/src/pages/session.tsx:227)scrollToMessage(msg, "smooth")(packages/app/src/pages/session/use-session-hash-scroll.ts:88, does DOMscrollTo+ hash update)SessionSidePanel(packages/app/src/pages/session/session-side-panel.tsx), which already exists as the desktop app's right-side panelNone of those primitives exist in or are shared with
packages/tui. A PR for one wouldn't land the feature in the other. So the two issues track the same UX outcome but across two independent surfaces, each with its own implementation.I'll leave this open for the desktop-app side and follow #32165 for the TUI side. Happy to help with either/both. If maintainers prefer to track them under one umbrella, I'm fine closing this in favor of #32165 — just let me know.
twocold0451 commentedon Jul 17, 2026
I have a working
packages/appimplementation for this.Instead of adding another permanently open panel, it uses a compact rail on
the right side of the session timeline. The rail expands on hover or keyboard
focus to show user-message previews. It highlights the active message and
smoothly scrolls to a message when selected.
It only appears when the session has multiple user messages and is hidden on
mobile. I have used it locally for several days and added an E2E regression
test plus a production timeline benchmark comparison.
Would this interaction fit the current session UI direction? If so, I can
open a focused PR linked to this issue.
github-actions commentedon Sep 17, 2026
To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.
rajendranimje commentedon Oct 30, 2026
The coding chats do not have outputs which can be quickly browsed and scrolled for earlier prompt context. The prompt navigation is a necessary feature and not optional. Huge time consumed in going up and down in long output text to find out where are the earlier prompts. Must be taken on priority and not as optional for development.