fix(pwa): disable pinch-to-zoom and block residual body scroll (#16)

- Added user-scalable=no, maximum-scale=1 to viewport meta tag to prevent
  pinch-to-zoom in standalone PWA mode
- Added overflow: hidden to html, body so any minimal content overflow
  cannot make the body scrollable (belt-and-suspenders alongside
  overscroll-behavior: none)
- Service worker cache bumped to v28/v27
This commit is contained in:
Ulas
2026-04-06 10:56:45 +02:00
parent dd6c8a313a
commit 8079c81e22
4 changed files with 17 additions and 6 deletions
+7
View File
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.14.4] - 2026-04-06
### Fixed
- PWA iOS: pinch-to-zoom disabled - added `user-scalable=no, maximum-scale=1` to viewport meta tag for native-app feel (#16)
- PWA iOS: residual body scroll fully blocked - added `overflow: hidden` to `html, body` so any minimal content overflow can no longer make the page body scrollable (#16)
- Service worker cache bumped to v28/v27 (#16)
## [0.14.3] - 2026-04-06
### Fixed
+2 -2
View File
@@ -2,8 +2,8 @@
<html lang="de">
<head>
<meta charset="UTF-8" />
<!-- Viewport: edge-to-edge, kein Auto-Zoom bei Inputs -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<!-- Viewport: edge-to-edge, kein Zoom (PWA-native feel) -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no, maximum-scale=1" />
<!-- PWA / Theme -->
<meta name="theme-color" content="#007AFF" media="(prefers-color-scheme: light)" />
+5 -1
View File
@@ -4,8 +4,12 @@
* Abhängigkeiten: tokens.css, layout.css
*/
/* ── Kein Rubber-Banding / Pull-to-Refresh des Browsers ── */
/* ── Kein Rubber-Banding, kein Body-Scroll ──
* overflow: hidden verhindert, dass body scrollbar wird, falls ein
* Element minimal überläuft. overscroll-behavior: none deaktiviert
* Pull-to-Refresh und Rubber-Banding. */
html, body {
overflow: hidden;
overscroll-behavior: none;
}
+3 -3
View File
@@ -12,9 +12,9 @@
* API: Immer Netzwerk (kein Caching von Nutzerdaten)
*/
const SHELL_CACHE = 'oikos-shell-v27';
const PAGES_CACHE = 'oikos-pages-v26';
const ASSETS_CACHE = 'oikos-assets-v26';
const SHELL_CACHE = 'oikos-shell-v28';
const PAGES_CACHE = 'oikos-pages-v27';
const ASSETS_CACHE = 'oikos-assets-v27';
const ALL_CACHES = [SHELL_CACHE, PAGES_CACHE, ASSETS_CACHE];
// App-Shell: sofort benötigt für ersten Render