Skip to content

fix(ui): remove iOS fixed-shell bottom gap#1266

Merged
BigSimmo merged 8 commits into
mainfrom
codex/phone-bottom-band-root-20260727
Jul 26, 2026
Merged

fix(ui): remove iOS fixed-shell bottom gap#1266
BigSimmo merged 8 commits into
mainfrom
codex/phone-bottom-band-root-20260727

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace both viewport-sized fixed phone application roots with one bounded, in-flow dynamic-viewport shell.
  • Preserve the zero hidden-composer reserve while ensuring live content owns the final viewport pixel.
  • Add static and production-browser guards for the physical-iOS fixed-container gap and viewport-resize scroll stability.

RAG impact: no retrieval behaviour change — phone viewport shell and UI regression coverage only.

Verification

  • npm run verify:pr-local — PASS: formatting, lint, typecheck, 3,519 tests, production build, client-secret scan, and 36 offline RAG fixtures.
  • npm run verify:ui — PASS: 314/314 Chromium UI tests across all phone modes.
  • Focused production WebKit — PASS: Therapy hidden-edge/viewport-resize regression and dashboard bottom-stability route.
  • npm run verify:cheap — PASS: 393 test files; 3,519 passed / 2 skipped.
  • npm run verify:release — not run because its live/provider-governance lanes are outside this UI-only change; no OpenAI, Supabase, or Railway API checks were invoked.

Risk and rollout

  • Risk: Low-to-moderate UI geometry change. Highest residual risk is physical-device iOS compositor behaviour beyond desktop WebKit emulation.
  • Rollback: Revert product commit a8efe4a08; retain the append-only review ledger as historical evidence and append a correction if needed.
  • Provider or production effects: Merging to main triggers the repository-configured Railway production auto-deploy. No separate provider mutation is performed.

Clinical Governance Preflight

Not applicable: this change does not touch ingestion, answer generation, retrieval/ranking, source rendering, document access, privacy, production environment, or clinical output.

Notes

  • Release review: APPROVE with no P0-P3 findings.
  • Root cause is the physical-iOS viewport-sized fixed-container paint path; prior dock geometry and reserve assertions were correct but could not observe the OS compositor gap.

Summary by CodeRabbit

  • Bug Fixes
    • Improved iOS phone viewport rendering to prevent blank gaps/clipped bottom content.
    • Kept shared phone shells in normal flow so main content remains the in-flow scroll area.
    • Refined search scroll hide/reveal behavior on phones and stabilized calculator sheet open/close focus handling.
  • Tests
    • Added and strengthened UI/guard tests for phone shell class usage, bottom-edge paint ownership, viewport resize behavior, microtask-based dock focus reset, and hydrated global search input readiness.

@supabase

supabase Bot commented Jul 26, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 4d696ecc-7333-437d-b3c8-76c025e65ec9

📥 Commits

Reviewing files that changed from the base of the PR and between e48873e and af8883d.

📒 Files selected for processing (6)
  • docs/branch-review-ledger.md
  • src/app/globals.css
  • src/components/calculators/search-page.tsx
  • tests/mobile-chrome-paint-contract.test.ts
  • tests/ui-phone-scroll.spec.ts
  • tests/ui-tools.spec.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/app/globals.css

📝 Walkthrough

Walkthrough

Phone dashboard and search shells now remain in normal flow on small screens, use phone-scoped viewport sizing, and include fixes and tests for bottom-edge painting, calculator focus reset timing, and hydrated search input handling.

Changes

Phone viewport and interaction contracts

Layer / File(s) Summary
In-flow phone shell contract
docs/search-chrome-behaviour.md, src/app/globals.css, src/components/ClinicalDashboard.tsx, src/components/clinical-dashboard/global-search-shell.tsx, src/components/clinical-dashboard/use-hide-on-scroll.ts
Phone shells no longer use fixed inset positioning; shared CSS applies phone-only vh, svh, and dvh sizing, while the scroll-hide contract is documented for in-flow scrolling.
Bottom-edge rendering validation
tests/clinical-dashboard-merge-artifacts.test.ts, tests/ui-phone-scroll.spec.ts, docs/branch-review-ledger.md
Static and UI checks verify shell positioning, bottom-pixel ownership, viewport alignment, resize scroll preservation, and recorded verification results.
Calculator and search interaction synchronization
src/components/calculators/search-page.tsx, tests/mobile-chrome-paint-contract.test.ts, tests/ui-tools.spec.ts
Calculator dock focus clearing uses a queued microtask, while shared search tests wait for React onChange hydration and verify accepted input values.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Suggested labels: codex

Suggested reviewers: cursoragent

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: removing the iOS fixed-shell bottom gap.
Description check ✅ Passed The description follows the repository template and includes summary, verification, risk, governance, and notes with relevant details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/phone-bottom-band-root-20260727

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/branch-review-ledger.md`:
- Line 1109: Update the review-ledger entry dated 2026-07-27 to use the actual
completion date, or remove/defer the row until the review has occurred; do not
record a future release review.

In `@src/app/globals.css`:
- Around line 2345-2348: Remove the duplicate min-height and height declarations
in the affected global stylesheet rule. Keep the 100vh values as defaults and
move the 100svh overrides into a dedicated `@supports` block, following the
existing 100dvh pattern.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: dff3d251-c181-4e26-8c89-1774db93d17b

📥 Commits

Reviewing files that changed from the base of the PR and between cc1abfe and e48873e.

📒 Files selected for processing (8)
  • docs/branch-review-ledger.md
  • docs/search-chrome-behaviour.md
  • src/app/globals.css
  • src/components/ClinicalDashboard.tsx
  • src/components/clinical-dashboard/global-search-shell.tsx
  • src/components/clinical-dashboard/use-hide-on-scroll.ts
  • tests/clinical-dashboard-merge-artifacts.test.ts
  • tests/ui-phone-scroll.spec.ts

Comment thread docs/branch-review-ledger.md
Comment thread src/app/globals.css Outdated
@github-actions

Copy link
Copy Markdown
Contributor

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • Production UIneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.
  • PR requiredneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.

Compared with main CI run #5899 (success).

Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger.

@BigSimmo
BigSimmo merged commit a3420d0 into main Jul 26, 2026
43 checks passed
@BigSimmo
BigSimmo deleted the codex/phone-bottom-band-root-20260727 branch July 26, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant