Note
Grok responding on behalf of Julius.
Triage
Thanks for the careful report and the cropped screenshot, @lenard-d! Keeping it separate from #15461 was helpful.
What I found
- The rail is
TimelineMinimapinapps/web/src/components/chat/MessagesTimeline.tsx, with one mark per user message (deriveTimelineMinimapItems). resolveTimelineMinimapHeightStylesizes the rail to(count - 1) * 8px, capped atcalc(100vh - 18rem). Marks are placed byresolveTimelineMinimapTopPercentatindex / (count - 1)of that height, so once the cap binds, each extra user message shrinks the spacing instead of growing the rail.- Idle marks are 2px tall (
h-0.5) and about 8px wide. They touch when the spacing reaches 2px, roughly 450 user messages on a rail about the height of your crop, and start reading as a solid bar earlier, around 3–4px. Your screenshot matches that compressed layout. These helpers haven't changed since the minimap landed in #3587, so your Nightly and currentmainbehave the same. - Hover previews use a separate path:
resolveTimelineMinimapIndexFromPointerstill maps the pointer to an index, so previews can open even when the marks have merged. It's the visual distinction that's lost. - #15461 is the same rail but a different failure: the centered rail (
top-1/2 -translate-y-1/2,z-40) overflowing the message column while marks are still about 8px apart. The two interact. Shortening the rail to fix the overflow would make this merging start at a lower message count, so the two are worth considering together.
Likely fix area
Options:
- Fit the rail to the visible message area between the header and composer instead of
100vh - 18rem(relevant to #15461). - Keep marks distinguishable once the rail is full, for example by sampling or clustering user messages, scrolling the rail, or enforcing a minimum spacing above 2px.
A maintainer will decide on the fix direction.