Description
On iOS (native app), opening the Shells panel as a mobile full-screen drawer (via the top-right ⋮ session menu) renders its header flush at the top of the screen, under the status bar / Dynamic Island. On a notched iPhone the "Shells" title, the ✕ close button, and the "+ New shell" row are partly obscured and hard/impossible to tap. Expected: the header should sit below the status bar / Dynamic Island.
Root cause: the Shells drawer is rendered by MobilePanelDrawer (web/src/shell/MobilePanelDrawer.tsx), a fixed inset-0 overlay whose <header> uses px-4 py-2 with no safe-area top inset — unlike the rest of the app, which folds in the --omnigent-safe-top variable (e.g. LoginPage/RegisterPage, and the image-viewer close button fixed in #4690 / #4692). The native shell injects viewport-fit=cover, so env(safe-area-inset-*) is nonzero and the header lands under the island.
Related but distinct from the Workspace-rail work in #3585 / #3587 (a different component).
Steps to reproduce
- Open the Omnigent iOS app on a notched iPhone (e.g. iPhone 15/16/17 Pro with Dynamic Island) — real device or Simulator.
- Open a chat/session.
- Tap the top-right ⋮ session menu, then tap Shells.
- Observe the drawer header: the "Shells" title, the ✕ close, and the "New shell" row sit under the status bar / Dynamic Island — obscured and hard to tap.
Note: does not reproduce in plain mobile Safari — the native shell injects viewport-fit=cover (the web build's index.html doesn't), so env(safe-area-inset-*) reads 0 there.
Screenshot
Shells drawer on iPhone 17 Pro (iOS 26.5) — the "Shells" title collides with the status-bar clock and the ✕ sits under the Dynamic Island:
Version
main @ 0bea9873
OS
iOS 26.5 (and earlier notched iOS)
Harness
Not applicable
Description
On iOS (native app), opening the Shells panel as a mobile full-screen drawer (via the top-right ⋮ session menu) renders its header flush at the top of the screen, under the status bar / Dynamic Island. On a notched iPhone the "Shells" title, the ✕ close button, and the "+ New shell" row are partly obscured and hard/impossible to tap. Expected: the header should sit below the status bar / Dynamic Island.
Root cause: the Shells drawer is rendered by
MobilePanelDrawer(web/src/shell/MobilePanelDrawer.tsx), afixed inset-0overlay whose<header>usespx-4 py-2with no safe-area top inset — unlike the rest of the app, which folds in the--omnigent-safe-topvariable (e.g.LoginPage/RegisterPage, and the image-viewer close button fixed in #4690 / #4692). The native shell injectsviewport-fit=cover, soenv(safe-area-inset-*)is nonzero and the header lands under the island.Related but distinct from the Workspace-rail work in #3585 / #3587 (a different component).
Steps to reproduce
Note: does not reproduce in plain mobile Safari — the native shell injects
viewport-fit=cover(the web build'sindex.htmldoesn't), soenv(safe-area-inset-*)reads0there.Screenshot
Shells drawer on iPhone 17 Pro (iOS 26.5) — the "Shells" title collides with the status-bar clock and the ✕ sits under the Dynamic Island:
Version
main @ 0bea9873OS
iOS 26.5 (and earlier notched iOS)
Harness
Not applicable