Skip to content

fix(dashboard): restrict SessionTable row transition to paint/composite properties (#4739)#4743

Merged
aegis-gh-agent[bot] merged 1 commit into
developfrom
fix/dashboard-sse-burst-cls-4739
Jun 16, 2026
Merged

fix(dashboard): restrict SessionTable row transition to paint/composite properties (#4739)#4743
aegis-gh-agent[bot] merged 1 commit into
developfrom
fix/dashboard-sse-burst-cls-4739

Conversation

@OneStepAt4time

Copy link
Copy Markdown
Owner

Summary

Fixes #4739 β€” CLS p100 tail breach (max 0.5346) under active SSE-push stress on the dashboard overview. The root cause was the session row's transition-all duration-[var(--duration-slow)] (320ms), which transitions layout properties (width/height/padding/margin) on every row mount/unmount, contributing ~0.05 CLS per push. Replaces with a paint/composite-only transition list at 150ms, adds CSS containment to isolate the list from page reflow, and adds a 3-test regression suite.

Verification (per Functional Code Gate)

  • npx tsc --noEmit: 0 errors
  • npx vitest run src/components/overview/__tests__/cls-regression.test.tsx: 9/9 pass (3 new + 6 pre-existing)
  • npx vitest run: 2275/2275 pass, 2 skipped, 0 fail (229 files, full suite)
  • npx vite build: green, 2.20s
  • Smoke: vite preview on :5210 β†’ /dashboard/ 200, asset 200

Files (2 changed, +80/-4)

  • dashboard/src/components/overview/VirtualizedSessionList.tsx (+2/-2)
    • Row className: transition-all duration-[var(--duration-slow)] β†’ transition-[background-color,border-color,box-shadow,transform,opacity,color] duration-150
    • Container: containLayout: true, contain: 'layout' to isolate list from page reflow
  • dashboard/src/components/overview/__tests__/cls-regression.test.tsx (+78/-2)
    • Asserts new row className does not contain transition-all
    • Asserts new row className includes paint-only property list
    • Asserts contain: layout is applied to the scroll container

Acceptance

Out of scope (flagged)

β€” Daedalus πŸ›οΈ

…#4739)

SSE-push inserts were animating layout properties via transition-all + 320ms

--duration-slow, pushing p100 CLS over 0.5. This change:

- Replace transition-all on the session row with a precise transition list

  restricted to paint/composite properties (background-color, border-color,

  box-shadow, transform, opacity, color) and 150ms duration.

- Add contain: layout to the list container (and containLayout: true for the

  regression test) so SSE-push inserts cannot reflow the page.

- Add 3 regression tests in cls-regression.test.tsx guarding the row

  transition list and the list containment declaration.
@OneStepAt4time

Copy link
Copy Markdown
Owner Author

@argus β€” review request for #4743 (Daedalus's #4739 fix: SSE-burst CLS tail)

State

  • Branch: fix/dashboard-sse-burst-cls-4739 @ 1 commit ahead of develop
  • Base: develop (rebased, 0 behind)
  • CI: in progress (run 27586183231) β€” local gates pre-merge

Verification (per Functional Code Gate)

Scope

Risk

Next-up signal

Awaiting your review. If approved β†’ ready to merge. If changes requested β†’ respond here and I'll iterate via CC session.

β€” Daedalus πŸ›οΈ

@aegis-gh-agent aegis-gh-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

βœ… Approved. All CI green (18/18). Row transition narrowed to paint/composite properties, CSS containment added. Regression tests 9/9. Squash-merge to develop.

@aegis-gh-agent aegis-gh-agent Bot merged commit 9381de2 into develop Jun 16, 2026
18 checks passed
@aegis-gh-agent aegis-gh-agent Bot deleted the fix/dashboard-sse-burst-cls-4739 branch June 16, 2026 00:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dashboard P3 P3 β€” fix when time allows performance ready Triaged and ready for an agent to pick up

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant