fix(privacy): keep the back control clear of the notch on phones - #1621
Conversation
/privacy sits outside the search shell, so it owns the OS top inset itself. searchPageShell's py-3 top pad is not enough under a status bar or Dynamic Island when apple-mobile-web-app-status-bar-style=black-translucent, leaving the back control partly behind the notch. Replaces the top pad with max(0.75rem, var(--safe-area-top)) (1.25rem at sm) and gives the back control a min-h-12 row, matching this repo's 48px production tap-target rule rather than the generic 44px guidance. Split out of the stale draft PR #1582, which mixed this production fix with three redesign mockups and 4.2 MB of PNG screenshots and has been red since 2026-08-02 on an unrelated type-scale violation (text-[10px]) in one of those mockup components. The fix is independent of that work and does not need to wait for it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T97Kqdj9Xh1Cubv5ms3KVy
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in:27 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
Comment |
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Extract searchPageShellStandalone so /privacy and /reference/colour-coding own the OS top inset without py-/pt- override ordering, use min-h-tap for the back row, and pin the contract with a static render test. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Addressed the three standalone-shell review notes on this head (
Also synced |
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
ef92d62 to
23a4b8fCompare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
…safe-area Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Addresses Devin — the prior babysit closeout row pointed at a SHA that does not exist in the repo, so ledger lookup could never match it.
CI triageCI failed on this PR. Automated classification of the 2 failed job(s):
Compared with main CI run #8289 (cancelled). Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
/privacyand/reference/colour-codingsit outside the search shell, so they own the OS top inset themselves. BaresearchPageShell'spy-3top pad is not enough under a status bar or Dynamic Island whenapple-mobile-web-app-status-bar-style=black-translucent, leaving the back control partly behind the notch.searchPageShellStandalonewithmax(0.75rem, var(--safe-area-top))(1.25rematsm) baked into the top pad and nopy-*axis padding, so call sites do not rely on Tailwind side-vs-axis utility sort order (andcnhas no tailwind-merge).min-h-taprow (canonical--spacing-tap/ 48px token).tests/search-page-shell-standalone.contract.test.tspins the primitive shape, both call sites, and rendered markup.Provenance: split out of stale draft PR #1582, which mixed this production fix with three privacy-page redesign mockups and 4.2 MB of PNG screenshots. That PR had been red since 2026-08-02 on an unrelated type-scale violation and 28 commits behind main; it is now closed.
Verification
npx vitest run tests/search-page-shell-standalone.contract.test.ts tests/privacy-ui.test.ts tests/privacy.test.ts tests/navigation-back-button.dom.test.tsx— 4 files passed, 32 tests passednpm run test— Test Files 505 passed (505); Tests 5331 passed | 4 skipped (5335)npm run lint— clean (--max-warnings 0)npm run typecheck— cleannpm run build— success; Client bundle secret surface check passednpm run check:rag:fixtures— Offline RAG fixture and manifest validation passed (36 golden cases, 23 suites)5c8b586a— run 31028743070: PR required success; Production UI critical + shards 1/2/3 success; Build / Static PR / Unit coverage / Safety and config checks successUI verification not run locally: Playwright lock/browser mismatch in this environment (
playwright: installed 1.62.0 does not match locked 1.62.1/ Chromium build mismatch). Tracked as ledger#240. Equivalent Chromium evidence was produced by CI on matching browsers (listed above).Risk and rollout
max()means the padding can only grow to the safe-area inset, never shrink below the existing0.75rem/1.25rem, so on a device with no inset the rendering is unchanged. Themin-h-taprow around the back control is additive. Colour-coding gets the same treatment as privacy so the notch exposure is not left on the other standalone shell page.git revertthe fix commits; nothing else depends on the new primitive beyond the two call sites.Clinical Governance Preflight
Clinical KB Database(sjrfecxgysukkwxsowpy)This section is completed because
scripts/pr-policy.mjsclassifiessrc/app/privacy/**as a clinical-risk path. The change itself is top padding and a control row height: it alters no clinical content, no source governance, no document access, and no privacy behaviour, so every item above holds unchanged rather than by remediation.RAG impact: no retrieval behaviour change — CSS padding on standalone policy/reference pages; no file under any retrieval, ranking, selection, or answer surface is touched.