From 56de22ef9a12e9fa692f782fcd09f3876f9206f8 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 19 Jul 2026 18:51:14 +0000 Subject: [PATCH 1/9] fix(ui): restore Safari edge-to-edge after hidden-composer regression PR #932 reintroduced env(safe-area-inset-bottom) into the hidden composer content reserve and inflated no-composer shell padding, undoing #922 and leaving a toolbar-sized blank band. Restore the 0.75rem hidden contract, stop stacking shell pad under DocumentViewer routes, and sync hide/show motion with reduced-motion respect. Co-authored-by: BigSimmo --- src/app/globals.css | 9 +++++++++ src/components/ClinicalDashboard.tsx | 7 ++++--- src/components/DocumentViewer.tsx | 5 ++++- .../global-search-shell.tsx | 19 ++++++++++++++----- ...clinical-dashboard-merge-artifacts.test.ts | 16 +++++++++++----- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 20df4b99c0..b346ffe5c8 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2596,3 +2596,12 @@ html[data-motion="reduced"] .source-capsule-hit[aria-expanded="true"]:hover .sou transition: padding-bottom 240ms cubic-bezier(0.4, 0, 0.2, 1); } } + +@media (max-width: 639px) and (prefers-reduced-motion: reduce) { + #main-content, + #main-content[data-bottom-composer-hidden="true"], + [data-testid="document-viewer-content"], + [data-testid="document-viewer-content"][data-scroll-hidden="true"] { + transition: none; + } +} diff --git a/src/components/ClinicalDashboard.tsx b/src/components/ClinicalDashboard.tsx index 1f74aa26a8..79e3fa337f 100644 --- a/src/components/ClinicalDashboard.tsx +++ b/src/components/ClinicalDashboard.tsx @@ -3259,9 +3259,10 @@ export function ClinicalDashboard({ : compactMobileBottomSearch ? "calc(5rem + var(--safe-area-bottom))" : "calc(5.25rem + var(--safe-area-bottom))"; - const mobileComposerReserve = bottomComposerHidden - ? "max(0.75rem, env(safe-area-inset-bottom))" - : visibleMobileComposerReserve; + // Safari's bottom safe-area inset includes its translucent browser toolbar. + // Reusing that inset after the app composer hides recreates a toolbar-sized + // blank band, so the hidden state intentionally keeps only a small content pad. + const mobileComposerReserve = bottomComposerHidden ? "0.75rem" : visibleMobileComposerReserve; const renderDegradedNotice = () => (