Skip to content

[Feature]: Pin the latest user message to the top of the chat viewport (two-line sticky prompt, with a setting to disable) #6152

Description

@joshoastler

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I am describing a concrete problem or use case, not just a vague idea.

Area

apps/web

Problem or use case

In a long thread, or after a single large response, there is no way to see what my most recent instruction was without scrolling back up through the whole reply to find it. I keep several threads open across different projects and flick between them, and every time I return to one I have to reconstruct where I was — which means scrolling up, reading my own prompt, then scrolling back down to the current position.

This is worst when the message was a slash command. If I sent something like /done, the entire response is a long report, and the one line that tells me what this thread is currently doing is buried above all of it.

The existing navigation work makes that scroll cheaper but does not remove it. #1915 delivered the timeline minimap with hover previews and click-to-scroll, and #4023 proposes arrows and keybindings to jump to the previous or next user prompt. Both are retrieval: I have to realise I have lost my bearings, then take a deliberate action to recover them, and #4023's own author notes the minimap "can be hard to select a specific message". What I want is orientation without an action — the answer already on screen when I arrive in the thread.

Proposed solution

Pin the most recent user message to the top of the chat viewport:

  • Always on while viewing a thread, not conditional on whether a turn is currently running.
  • Show a maximum of two to three lines, with the overflow fading out rather than being hard-truncated or ellipsised.
  • Show the text as it was actually submitted. If I submitted /done, the pin shows /done, not the expanded skill or command prompt behind it. The literal submitted line is the thing that tells me where I am.
  • Clicking the pin scrolls the conversation to that message.
  • A setting to turn it off, for people who would rather not give up the vertical space.

Why this matters

The pinned line answers "what did I ask this thread to do?" passively, which is the question I have every single time I switch back into a thread. For slash commands it is the difference between one glance and a scroll through an entire generated report. It also compounds with multi-thread work: the more threads I keep open, the more often I pay the reorientation cost, and that cost is exactly what makes flicking between threads feel expensive.

I had this behaviour in the Claude Code VS Code extension, where the latest user message stayed stuck at the top, and it was the thing I missed most when moving to T3 Code. Reporting that as my own experience of a prior tool rather than as a claim about how that extension is implemented.

Smallest useful scope

A single non-configurable pinned line showing the latest submitted user message, with fade on overflow. Click-to-scroll and the disable setting can both follow.

Alternatives considered

  • Use the timeline minimap from [Feature]: Add chat outline navigation strip #1915. It works, but it is a deliberate hover-and-read action to answer a question I have constantly, and small targets make it fiddly.
  • Wait for [Feature]: Minimap arrows/keybindins to navigate to previous/next user prompt #4023's jump-to-prompt arrows. Same objection: faster retrieval, but still retrieval. It also lands me at the top of the conversation, so I then have to scroll back down to where I was.
  • Rely on the thread title. Titles are generated and summarise the thread as a whole, not the instruction currently in flight, so they do not answer the question after the first turn.
  • Scroll up manually. This is the current behaviour and the reason for the request.

Risks or tradeoffs

  • It costs permanent vertical space at the top of the chat, which is why the disable setting matters, and why the line cap should be tight rather than generous.
  • There is a design question about whether the pin should hide while the latest user message is already visible on screen. Hiding avoids showing the same text twice, but it also makes the header appear and disappear as you scroll, which is more visually noisy than simply leaving it in place. I would lean toward always visible and would rather that be a deliberate choice than an accident.
  • Very long single-line prompts, pasted content, and images need a sensible rule for what the two-line preview actually shows.
  • It should behave consistently across desktop, web and mobile rather than being desktop-only, and mobile has the least vertical space to give.

Examples or references

Contribution

  • I would be open to helping implement this.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    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