Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions apps/web/src/components/ChatView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5350,16 +5350,8 @@ function ChatViewContent(props: ChatViewProps) {
<div
ref={setComposerOverlayElement}
data-chat-composer-overlay="true"
className="pointer-events-none absolute inset-x-0 bottom-0 z-20 pt-1.5 sm:pt-2"
className="pointer-events-none absolute inset-x-0 bottom-0 z-20 pt-1.5 pb-[calc(env(safe-area-inset-bottom)+0.75rem)] sm:pt-2 sm:pb-[calc(env(safe-area-inset-bottom)+1rem)]"

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.

Bottom safe-area taps hit timeline

Medium Severity

Bottom spacing moved onto the pointer-events-none composer overlay, but the removed chat-composer-lower-chrome sibling was the only in-flow layer in that band with default pointer hit-testing. Taps in the safe-area and extra bottom padding can reach the scrolling timeline underneath instead of being absorbed above it.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 4a342fb. Configure here.

>
<div
aria-hidden="true"
className="chat-composer-horizontal-inset pointer-events-none absolute inset-x-0 top-1.5 bottom-0 z-0 sm:top-2"
>
<div className="chat-content-lane relative h-full overflow-clip rounded-t-[20px]">
<div className="chat-composer-shared-blur absolute -inset-8" />
</div>
</div>
<div className="chat-composer-horizontal-inset">
<div className="pointer-events-auto relative z-10 isolate">
{isServerThread && activeThread ? (
Expand Down Expand Up @@ -5445,7 +5437,6 @@ function ChatViewContent(props: ChatViewProps) {
</div>
</div>
</div>
<div className="chat-composer-horizontal-inset chat-composer-lower-chrome relative z-10 pb-[calc(env(safe-area-inset-bottom)+0.75rem)] sm:pb-[calc(env(safe-area-inset-bottom)+1rem)]" />
</div>

{pullRequestDialogState ? (
Expand Down
26 changes: 3 additions & 23 deletions apps/web/src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -177,41 +177,22 @@
);
}

.floating-glass-surface,
.chat-composer-lower-chrome {
background: color-mix(in srgb, var(--card) 20%, transparent);
}

.floating-glass-surface {
background: color-mix(in srgb, var(--card) 20%, transparent);
box-shadow:
0 18px 48px -20px rgb(0 0 0 / 28%),
0 4px 14px -7px rgb(0 0 0 / 22%);
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
}

.chat-composer-shared-blur {
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
}

.dark .floating-glass-surface,
.dark .chat-composer-lower-chrome {
background: color-mix(in srgb, var(--card) 45%, transparent);
}

.dark .floating-glass-surface {
background: color-mix(in srgb, var(--card) 45%, transparent);
box-shadow:
0 18px 48px -20px rgb(0 0 0 / 60%),
0 4px 14px -7px rgb(0 0 0 / 40%);
}

.chat-composer-lower-chrome {
margin-top: -1px;
margin-inline-end: var(--app-scrollbar-width);
padding-top: 1px;
}

@media (min-width: 40rem) {
.messages-timeline-row-frame {
padding-inline-start: 1.25rem;
Expand All @@ -227,8 +208,7 @@
}

@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
.floating-glass-surface,
.chat-composer-lower-chrome {
.floating-glass-surface {
background: var(--card);
}
}
Expand Down
Loading