- Shipped
- August 26, 2026 at 9:30 AM UTC
- Author
- kamo
- Commit
- d4d2923
The chats-tab motion.div had `height: undefined` (only `minHeight: '100%'`), so its containing block was auto-height and ConversationsPane's own `height: 100%` root resolved to auto. The pane sized to content instead of being clipped, so its `flex: 1; minHeight: 0; overflowY: auto` list region never became a real scroll container — and useConversationRows roots its IntersectionObserver on that region, whose clipping ancestors above the (non-existent) scroll boundary are invisible to it. The sentinel was permanently intersecting: opening the Chats tab paged through the member's entire conversation list in one shot. Making height unconditional (matching what the members tab already had) gives the pane a real definite height, so its list scrolls internally instead of the whole pane scrolling in the panel's outer scroller. The sub-tab strip becomes sticky as a result — this mirrors the existing Directory status-filter tabs exactly, including the top/bottom scrims falling across it the same way; see this file's own comments at the Directory filter and the scrim wrapper, which already documented this as the intended shape.