fix(desktop): un-clip hover action bar's upward bleed under content-visibility#1354
Merged
Conversation
…isibility The message-row action bar (react/reply) intentionally bleeds slightly above its row's top edge. After #1338 added `content-visibility: auto` paint containment to timeline rows, that containment clipped the overhang, leaving the reaction bar sheared off at the top. Fix: drop paint containment (`content-visibility: visible`) on a row only while it is hovered/focused — the only time the action bar is visible. Idle and offscreen rows keep `content-visibility: auto`, so the #1338 scroll/perf win is fully preserved. This mirrors the existing `.content-visibility-auto-interactive` pattern in the same file. Adds an e2e regression guard in messaging.spec.ts that asserts a hovered row resolves to `content-visibility: visible` (proven to fail without the rule). Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co> Signed-off-by: Wes <wesbillman@users.noreply.github.com>
tlongwell-block
pushed a commit
that referenced
this pull request
Jun 29, 2026
Brings the merged #1321 multi-tenant relay rewrite (and other main commits) under the chart-fix branch so #1348 renders and tests against current main. No conflicts. Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz> * origin/main: Multi-tenant Buzz relay: community_id as a server-resolved key (comprehensive rewrite) (#1321) Disable persona start while runtime discovery runs (#1353) chore(deps): update dependency @tanstack/react-virtual to v3.14.4 (#1342) Fix sidebar unread indicator placement (#1319) fix(desktop): un-clip hover action bar's upward bleed under content-visibility (#1354) Allow Huddle between 2 humans in DM (#1347) chore(release): release Buzz Desktop version 0.3.36 (#1352) Polish agent runtime cards (#1327) Rework desktop message-timeline scrolling: de-virtualize + native overflow-anchor (#1338) Keep wave huddles pending for placeholder profiles (#1349)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The message-row action bar (react / reply) intentionally bleeds slightly above its row's top edge. After #1338 added
content-visibility: autopaint containment to timeline rows, that containment clipped the overhang — leaving the reaction bar sheared off at the top (both the normal message hover bar and the system "joined the channel" row's react button).Fix
One CSS rule: drop paint containment on a row only while it's hovered / focused — the only time the action bar is visible.
Idle and offscreen rows keep
content-visibility: auto, so the #1338 scroll/perf win is fully preserved. This mirrors the existing.content-visibility-auto-interactivepattern already in the same file, so it's idiomatic here.The original "floating bleed above the message" positioning is untouched — earlier component-level experiments were reverted;
MessageRow/MessageThreadPanelare back toorigin/main.Test
Adds an e2e regression guard in
messaging.spec.tsasserting a hovered row resolves tocontent-visibility: visible. Proven to bite: removing the CSS rule fails the guard.tscclean, biome clean, build greenDiff
2 files / ~14 lines (CSS rule + e2e guard).
Screenshots
Normal message — bleed-above look restored, bar fully rendered:
System "joined the channel" row — react button is now a full circle, no longer sheared: