From e8c6ec49a03b250718b67ebcdefcaecc08132879 Mon Sep 17 00:00:00 2001 From: Oliver Kieselbach Date: Wed, 27 May 2026 17:01:55 +0200 Subject: [PATCH] fix(web): mobile viewport overflow on session-detail page Section headers (Vulnerability Report, Analysis Results, Integrity Bypass) and the page action-bar packed icon + title + counter + severity badges + action button + chevron into a single non-wrapping flex row. On phone-width viewports that row was wider than the card, widening
past the viewport and making horizontally scrollable. iOS Safari then mis-sized the fixed-position mobile drawer/overlay, so the drawer no longer covered the full screen. - globals.css: overflow-x: clip on as a safety net (clip, not hidden, so it does not create a containing block for the fixed drawer/overlay). - The three section headers + page header now wrap (flex-wrap + gap), with shrink-0 on icons/action groups and break-all on the mono finding string. tsc clean; vitest 390/390 pass. Co-Authored-By: Claude Opus 4.7 --- src/Web/autopilot-monitor-web/app/globals.css | 6 ++++++ .../[sessionId]/components/AnalysisResultsSection.tsx | 10 +++++----- .../[sessionId]/components/IntegrityBypassSection.tsx | 10 +++++----- .../components/VulnerabilityReportSection.tsx | 10 +++++----- .../app/sessions/[sessionId]/page.tsx | 4 ++-- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/Web/autopilot-monitor-web/app/globals.css b/src/Web/autopilot-monitor-web/app/globals.css index 3ed1ee71..0fe54fe8 100644 --- a/src/Web/autopilot-monitor-web/app/globals.css +++ b/src/Web/autopilot-monitor-web/app/globals.css @@ -15,6 +15,12 @@ html { scroll-behavior: smooth; overflow-y: auto; + /* Clip (not hidden) any accidental horizontal overflow so a single + too-wide row can't make the whole page horizontally scrollable on + mobile. `clip` — unlike `hidden` — does not establish a scroll + container or a containing block, so fixed-position children (mobile + drawer + overlay) keep sizing against the viewport. */ + overflow-x: clip; scrollbar-gutter: stable; } diff --git a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx index 30001afe..ed48b2ee 100644 --- a/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx +++ b/src/Web/autopilot-monitor-web/app/sessions/[sessionId]/components/AnalysisResultsSection.tsx @@ -66,17 +66,17 @@ export default function AnalysisResultsSection({
setAnalysisExpanded(!analysisExpanded)} - className="flex items-center justify-between w-full text-left mb-4 cursor-pointer" + className="flex items-start justify-between gap-2 w-full text-left mb-4 cursor-pointer" > -
- +
+

Analysis Results

{analysisResults.length > 0 && ( <> ({analysisResults.length} {analysisResults.length === 1 ? 'issue' : 'issues'}) -
+
{analysisResults.filter(r => r.severity === 'critical').length > 0 && ( {analysisResults.filter(r => r.severity === 'critical').length} Critical @@ -96,7 +96,7 @@ export default function AnalysisResultsSection({ )}
-
+