fix(app): apply safe-area sizing to iOS home-screen apps (#46703)

This commit is contained in:
Brendan Allan
2026-09-02 09:15:08 +08:00
committed by GitHub
Unverified
parent c8f81c8b83
commit 2de99a2885
3 changed files with 18 additions and 0 deletions
+1
View File
@@ -73,6 +73,7 @@ if (root instanceof HTMLElement && root.dataset.opencodeMounted === undefined) {
const auth = authFromToken(new URLSearchParams(location.search).get("auth_token"))
clearAuthToken()
const standalone = isStandalone()
root.dataset.standalone = String(standalone)
if (standalone) restorePwaRoute()
const server: ServerConnection.Http = {
type: "http",
+5
View File
@@ -32,6 +32,11 @@
}
}
/* iOS can report navigator.standalone without matching display-mode. */
#root[data-standalone="true"] {
height: 100vh;
}
@layer components {
[data-slot="session-side-panel-presence"][data-opened="true"] {
animation: terminal-panel-presence-in 240ms cubic-bezier(0.22, 1, 0.36, 1);
@@ -19,6 +19,18 @@ test("normal browser windows are not standalone", () => {
expect(isStandalone()).toBe(false)
})
test("detects iOS home-screen apps when the standalone media query does not match", () => {
const descriptor = Object.getOwnPropertyDescriptor(navigator, "standalone")
Object.defineProperty(navigator, "standalone", { configurable: true, value: true })
try {
expect(window.matchMedia("(display-mode: standalone)").matches).toBe(false)
expect(isStandalone()).toBe(true)
} finally {
if (descriptor) Object.defineProperty(navigator, "standalone", descriptor)
if (!descriptor) Reflect.deleteProperty(navigator, "standalone")
}
})
test("restores the last PWA route including query and hash without adding history", () => {
window.history.replaceState({ retained: true }, "", "http://localhost/")
const length = window.history.length