fix(web): stop composer banner glass overlap - #8034
Conversation
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a localized visual bug fix that restores the composer attachment mask and adds adaptive timeline fades beneath the existing composer overlay. It changes only chat rendering and masking, with no data, API, security, billing, or deployment impact. You can add or adjust custom eligibility rules. Learn more. |
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Dismissing prior approval to re-evaluate 3298ebb
There was a problem hiding this comment.
One finding on the new glass override in apps/web/src/index.css. Restoring the mask (dropping before:mask-none) looks right; pinning --glass-opacity to 100% for this one surface is the part that introduces a consistency regression.
Posted via Macroscope — UI Consistency
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
There was a problem hiding this comment.
Two findings on the new timeline mask. The shared virtualized-scroll-fade contract is the right owner here, but the mask geometry it is handed is unclamped and drops the shared top-fade profile.
Posted via Macroscope — UI Consistency
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
There was a problem hiding this comment.
Reviewed the composer/timeline fade changes for consistency with the shared scroll-fade contract. One finding on the new timeline bottom mask.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 87166b0. Configure here.
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

summary
before:mask-noneassertion from fix(web): keep server update banners flush with the composer #8000this keeps #8000's intended content occlusion without its overlap regression or a hardcoded opaque banner.
verification
vp test run --project unit src/components/chat/ComposerBannerStack.test.tsx src/components/chat/MessagesTimeline.test.tsxvp lint apps/web/src/components/chat/ComposerBannerStack.tsx apps/web/src/components/chat/ComposerBannerStack.test.tsx apps/web/src/components/chat/MessagesTimeline.tsxvp fmt --check apps/web/src/components/chat/ComposerBannerStack.tsx apps/web/src/components/chat/ComposerBannerStack.test.tsx apps/web/src/components/chat/MessagesTimeline.tsxmin(9999px, 60%)instead of hiding the full timelinevisual proof uses the real app and production composer/banner/timeline components with a synthetic in-flight update item and synthetic background conversation text.
original text show-through
overlap regression
after
request provenance
Note
Low Risk
Visual CSS/masking only in the chat timeline and composer banners; no auth, data, or API changes. Overlay-height clamp reduces the chance of a bad measurement hiding the whole list.
Overview
Stops conversation text from showing through glass composer banners while restoring the shared attachment mask so banner fill no longer stacks under the translucent composer.
When the composer overlay is present, the virtualized timeline now fades to fully transparent before the measured overlay (clamped to 60% of viewport height). Combined top+bottom masks keep the existing eased topbar profile and an opaque scrollbar lane; the minimap stays outside the mask. Attached banners drop
before:mask-noneso they use the shared 17px seam again.Reviewed by Cursor Bugbot for commit 8462523. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix composer banner glass overlap with adaptive scroll-fade masks
before:mask-noneclass fromComposerBannerStackAlertso attached banners no longer disable the mask gradient, causing the glass overlap.timeline-scroll-bottom-fadeandtimeline-scroll-combined-fadeCSS utilities in index.css that reserve bottom space via the--timeline-composer-overlay-heightvariable (capped at60%).contentInsetEndAdjustmentandtopFadeEnabled.contentInsetEndAdjustment > 0, the timeline switches fromtopbar-scroll-fadeto the new combined/bottom fade classes; review the gradient stops andsmvariant in index.css for correct rendering across viewport sizes.Macroscope summarized 8462523.