Skip to content

[Feature]: scrollbar markers per message boundary for easier conversation navigation #37699

Closed as not planned

Description

@adofeg

Summary

Add visual markers to the TUI scrollbar at each message boundary so users can navigate long conversations quickly without scrolling through entire message bodies.

Problem

When conversations exceed ~50 messages, navigating back to a specific user input becomes painful:

  • Scrolling with PageUp/PageDown shows the message body but you have to read each one to find what you want.
  • No overview — the scrollbar is a single position indicator; it doesn't communicate how many turns exist or where they break.
  • Existing keybinds help (messages_next/messages_previous/messages_last_user in tui.json) but require the user to know the keybinds exist and press them repeatedly.

This is a common UX pattern in:

  • Code editors (minimap markers for search results, breakpoints, git diffs)
  • Chat apps (Slack, Discord: small avatars/dots on the scrollbar)
  • IDEs (IntelliJ: navigation bar showing file structure)

Proposed Behavior

Render a small visual marker on the scrollbar at each message boundary:

Marker style Meaning
Larger notch User input
Smaller notch Assistant message
Distinct color Tool call / error message

Visually something like:

│                          │
│ █                        │  <- message #1 (user)
│  █                       │  <- message #2 (assistant)
│   █                      │  <- message #3 (user)
│    █                     │  <- message #4 (assistant, has tool call)
│     █                    │  <- message #5 (user)
│                          │
│ █ ← you are here         │

Why a Plugin Can't Solve This

I tried. Built conversation-nav (https://gist...) that tracks user inputs to a JSON file and exposes /inputs + /jump N commands. This works as a workaround but:

  • The TUI renderer is not exposed via the plugin API (PluginInput has client, project, directory, $ — no tui/scrollbar/viewport).
  • Themes can change colors but the scrollbar widget itself is hardcoded in the TUI binary.
  • The JSON workaround requires reading a file + remembering keybinds + manual Ctrl+Up presses — still friction.

The feature needs to live in the TUI layer.

Acceptance Criteria

  • Visible marker on the right-edge scrollbar at each message boundary
  • Different visual treatment for user vs assistant messages
  • Works with the existing messages_next/messages_previous keybinds
  • No measurable perf impact in conversations with 200+ messages
  • Optional: configurable via tui.json (enable/disable, colors)

Alternatives Considered

  1. Plugin-based workaround (what I built) — works but doesn't solve the visual problem.
  2. Theme-only — can't distinguish messages by role in current theme schema.
  3. External sidebar — splits attention, breaks the single-pane UX.

Related

  • messages_next/messages_previous/messages_last_user keybinds in tui.json (already exist, currently bound to none)
  • scrollbar_toggle keybind (already exists, currently bound to none)

cc @anomalyco


Posted from opencode CLI via gh issue create.

Activity

  1. github-actions commented on Jul 19, 2026

    @github-actions
    Contributor

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


    For keybind-related notes in this issue (e.g. messages_next, messages_previous, messages_last_user, scrollbar_toggle), please also check our pinned keybinds documentation: #4997

  2. github-actions commented on Sep 18, 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.

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