Task #459: Hide iPad Safari URL bar across all apps (notes + home)

Problem: On iPad Safari, the executive-meetings app collapsed the URL
bar on scroll (native-app feel), but Notes and Home kept it visible
permanently because their root containers were not document-scrollable.
- notes.tsx used `h-screen ... overflow-hidden` with an internal
  `flex-1 min-h-0 overflow-y-auto` scroll region.
- home.tsx used `min-h-screen ... overflow-hidden`.
With no document-level scroll, iOS Safari has no trigger to hide the
URL bar.

Fix (quick-fix path the user picked, no PWA install meta):
- notes.tsx: root → `min-h-[100dvh] os-bg flex flex-col` (removed
  `overflow-hidden`, swapped `h-screen` → `min-h-[100dvh]`). Header now
  `sticky top-0 z-10` so it stays pinned. Inner body wrapper changed
  from `flex-1 min-h-0 overflow-y-auto flex flex-col` to
  `flex-1 flex flex-col` so the document (not an inner div) scrolls —
  giving Safari the trigger it needs.
- home.tsx: root → `min-h-[100dvh] os-bg flex flex-col relative`
  (removed `overflow-hidden`).

Why `100dvh`: dynamic viewport height sizes against the *visible*
area, so the layout reflows cleanly when the URL bar appears/hides.

Out of scope (matches task): no PWA meta tags, no other pages touched
(spot-checked others: chat/services/orders/notifications/admin already
use min-h-screen without overflow-hidden), no styling changes, executive-
meetings page untouched (it's the reference).

Verification: tsc --noEmit clean. Pre-existing test workflow failure on
unrelated executive-meetings.ts type errors is out of scope.
This commit is contained in:
Riyadh
2026-05-10 11:22:31 +00:00
parent a2e5f54aaf
commit f3dc7b7002
2 changed files with 20 additions and 4 deletions
+6 -1
View File
@@ -497,7 +497,12 @@ export default function HomePage() {
const initials = (displayName || "?").trim().slice(0, 1).toUpperCase();
return (
<div className="min-h-screen os-bg flex flex-col overflow-hidden relative">
// Task #459: removed `overflow-hidden` and switched to `min-h-[100dvh]`
// so iOS Safari can collapse its URL bar on scroll, matching the
// executive-meetings page behavior. `100dvh` (dynamic viewport
// height) sizes against the visible area, so the layout reflows
// cleanly when the URL bar shows/hides.
<div className="min-h-[100dvh] os-bg flex flex-col relative">
{/*
Status Bar
--------------------------------------------------------------