Skip to content

[FEATURE]: Persistent right-side message navigation sidebar in the desktop app session view #32999

Closed as not planned

Description

@7nicetoseeu

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 in packages/app/src/pages/session.tsx:227 (the exact list of user messages to show).
  • scrollToMessage(message, "smooth") — already implemented in packages/app/src/pages/session/use-session-hash-scroll.ts:88, handles reveal + DOM scroll + hash update.
  • anchor(id) — DOM id resolver, passed into MessageTimeline at session.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 and session.message.next/previous keybinds, 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 /timeline is 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, reusing visibleUserMessages and scrollToMessage.

Activity

  1. github-actions commented on Jun 19, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    • [FEATURE]:User message quick-jump sidebar #32165: Requests a sidebar/list of user messages in a session for quick-jump navigation — same core feature as described here (narrower scope is TUI vs. desktop app, but the request is effectively identical)

    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.

  2. 7nicetoseeu commented on Jun 19, 2026

    @7nicetoseeu
    Author

    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:

    • It reuses visibleUserMessages() (packages/app/src/pages/session.tsx:227)
    • It reuses scrollToMessage(msg, "smooth") (packages/app/src/pages/session/use-session-hash-scroll.ts:88, does DOM scrollTo + hash update)
    • It slots into SessionSidePanel (packages/app/src/pages/session/session-side-panel.tsx), which already exists as the desktop app's right-side panel

    None 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.

  3. twocold0451 commented on Jul 17, 2026

    @twocold0451

    I have a working packages/app implementation 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.

    Image Image
  4. github-actions commented on Sep 17, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

  5. rajendranimje commented on Oct 30, 2026

    @rajendranimje

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions