fix: contain iOS standalone viewport (#76072)

Contain the Control UI document in iOS Add-to-Home-Screen standalone mode by enabling viewport-fit=cover, applying safe-area-aware body locking, and constraining the app root so inner panes own scrolling.

Thanks @kvncrw.
This commit is contained in:
Kevin
2026-05-02 07:46:41 -05:00
committed by GitHub
parent 8283c5d6cc
commit d22da87126
3 changed files with 40 additions and 1 deletions

View File

@@ -33,6 +33,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- Control UI: contain the standalone iOS PWA viewport with safe-area-aware document locking, so Add-to-Home-Screen launches cannot scroll past the device bounds. Refs #76072. Thanks @kvncrw.
- Agents/restart recovery: match cleaned transcript locks by exact transcript lock paths plus the canonical session fallback, so interrupted main sessions using topic-suffixed transcripts resume after gateway restart. Refs #76052. Thanks @anyech.
- Telegram/native commands: pass persisted session files into plugin commands for topic-bound sessions, so `/codex bind` works from Telegram forum topics. Refs #75845 and #76049. Thanks @MatthewSchleder.
- Security audit/plugins: ignore plugin install backup, disabled, and dependency debris directories when enumerating installed plugin roots, avoiding false-positive findings for `.openclaw-install-backups` after plugin updates. Fixes #75456.

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>OpenClaw Control</title>
<meta name="color-scheme" content="dark light" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />

View File

@@ -106,6 +106,10 @@
--duration-fast: 100ms;
--duration-normal: 180ms;
--duration-slow: 300ms;
--safe-area-top: env(safe-area-inset-top, 0px);
--safe-area-right: env(safe-area-inset-right, 0px);
--safe-area-bottom: env(safe-area-inset-bottom, 0px);
--safe-area-left: env(safe-area-inset-left, 0px);
color-scheme: dark;
}
@@ -532,6 +536,40 @@ openclaw-app {
min-height: 100vh;
}
@media (display-mode: standalone) {
html,
body {
width: 100%;
height: 100%;
overflow: hidden;
overscroll-behavior: none;
}
@supports (height: 100dvh) {
html,
body {
height: 100dvh;
}
}
body {
position: fixed;
inset: 0;
padding-top: var(--safe-area-top);
padding-right: var(--safe-area-right);
padding-bottom: var(--safe-area-bottom);
padding-left: var(--safe-area-left);
}
openclaw-app {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
overflow: hidden;
}
}
a {
color: var(--accent);
text-decoration: underline;