Skip to content

[🐛 Bug]: Alert detail Timeline cannot be scrolled with mouse wheel / trackpad #6759

Description

@franciscocpg

Describe the bug

In the alert detail side panel, the Timeline section is clipped to 500px but cannot be scrolled with the mouse wheel or trackpad, so entries below the fold are unreachable. On my instance 658px out of 1158px of timeline content was hidden.

The container itself is fine: setting scrollTop programmatically works and sticks. The problem is that the wheel gesture never reaches it.

Root cause

react-chrono renders a large number of nested scroll containers (overflow: auto / overflow: hidden) that have zero scroll extent — including TimelineContentDetailsWrapper, which is the element directly under the cursor. Chrome latches the wheel gesture onto the nearest scroll container from the hit test; since that container and everything above it up to the card have no scrollable extent, the gesture is consumed and never chains to the tremor-Card-root that actually has the 658px of extent.

Measurements taken on a live instance (Chrome DevTools + scripted wheel events):

  • card.scrollTop = 300 → sticks (still 300 after 150ms and after 1.65s), so the card is scrollable
  • Card computed style: max-height: 500px, overflow-y: auto; content height 1158px → 658px hidden
  • Real wheel over the Timeline: the event is delivered (deltaY: 300) but with cancelable: false, and no element in the document emits a scroll event
  • No preventDefault() anywhere in the ancestor chain (defaultPrevented: false at every level)
  • scrollIntoView and scrollTo patched on Element.prototype: never called
  • Element under the cursor: TimelineContentDetailsWrapper, overflow-y: auto, real max scroll extent 0. Roughly 428 such zero-extent scroll containers exist inside the card
  • Wheel with the cursor outside the chrono subtree (e.g. over Description) scrolls the side panel normally to its full extent (728px)

Confirmed by inverting it: forcing overflow: visible on those wrappers makes wheel scrolling work immediately (scrollTop observed going 0 → 400 → 658).

Note: removing max-h-[500px] from the Card alone does not fix it. I tested that — the card then grows to its full height and the side panel gains 2043px of scroll extent, but the gesture is still swallowed inside the react-chrono subtree.

To Reproduce

  1. Have an alert with enough timeline entries to exceed 500px of height (a handful of workflow enrichment entries is enough)
  2. Click the alert in the feed to open the detail side panel
  3. Put the cursor over the Timeline area and scroll with a mouse wheel or trackpad
  4. Nothing scrolls; the entries below the fold cannot be reached

Expected behavior

Wheel/trackpad over the Timeline should scroll the timeline, or chain to the side panel.

Screenshots

Screen recording attached below.

Workaround

div[class*="TimelineContentDetailsWrapper"],
div[class*="TimelineMainWrapper"] { overflow: visible !important; }

Suggested fix

Give react-chrono a bounded height so that its own scroll container owns the overflow, instead of clipping it from the outside with the card's max-height. Alternatively, remove the zero-extent overflow from the chrono wrappers so the gesture can chain to the card.

Additional context

Secondary issue, only visible once scrolling works: the periodic alert refresh resets scrollTop to 0, so the reading position is lost mid-scroll.

Related: #4618 reports the same class of problem on the incident timeline (closed without a fix). Interestingly the bot reply there already pointed at the max-h-[500px] overflow-y-auto card, which matches what I measured.

Environment

  • Keep 0.54.2, self-hosted on Kubernetes via the keephq/keep Helm chart (chart version 0.1.96)
  • Chrome on macOS

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