From eb233b9f8ced80b097f9c9902abab59c59cadd30 Mon Sep 17 00:00:00 2001 From: "Thierry V." <46031203+thierryvm@users.noreply.github.com> Date: Thu, 1 Oct 2026 19:15:14 +0200 Subject: [PATCH] fix(pwa): keep the installed app's content below iOS 26's edge blur The opaque strip of #398, as tall as the status bar, did not stop the Liquid Glass edge blur on the reporter's iPhone 14 (retested 1 October 2026). The fix confirmed on devices elsewhere keeps content out of the blur: --inset-top (theme.css) is the safe-area inset, plus 2.5rem in the installed app on iOS in portrait, and every top edge uses it (app layout, sidebar, landing, privacy/changelog/story navs, login, PWA install and support modals, AI tutor drawer). The strip fills that band at z-25, under the sidebar overlay. Modal overlays scroll and center their card with my-auto, so a card taller than the screen is never cut at the top. Nothing changes in a browser tab or on desktop. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 10 ++++++ STORY.md | 10 ++++++ src/app/components/Landing.tsx | 11 ++++--- src/app/components/Layout.tsx | 8 +++-- src/app/components/MarkdownPage.tsx | 2 +- src/app/components/PWAInstallModal.tsx | 8 ++--- src/app/components/PrivacyPolicy.tsx | 2 +- src/app/components/Sidebar.tsx | 5 +-- src/app/components/StatusBarBackdrop.tsx | 18 +++++++---- src/app/components/ai/AiTutorPanel.tsx | 2 +- src/app/components/auth/LoginModal.tsx | 6 ++-- .../components/support/SupportTicketModal.tsx | 4 +-- src/styles/theme.css | 24 ++++++++++++++ src/test/statusBarBackdrop.test.tsx | 32 ++++++++++++++++--- 14 files changed, 111 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb62341f..897888ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ --- +## 📱 1er octobre 2026 — Le haut de l'app installée sur iPhone, deuxième essai + +*App installée sur l'écran d'accueil · iOS 26 · retour sur un iPhone 14* + +- Le correctif du 29 septembre (une bande opaque derrière la barre d'état) n'a pas suffi : retesté sur l'iPhone, le flou d'iOS 26 recouvrait toujours le haut de l'app. +- Ce flou est dessiné par iOS lui-même, au-dessus de la page, et aucun réglage ne l'enlève. Dans l'app installée sur iPhone, le contenu du haut (barre de navigation, menu, fenêtre de connexion, tuteur IA) démarre maintenant 2,5rem plus bas, sous la zone floue, et la bande opaque couvre ce même espace. +- Rien ne change dans Safari ni sur ordinateur. L'app installée tenue à l'horizontale garde l'ancien espacement. + +--- + ## 🤝 1er octobre 2026 — Le module GitHub devient une suite de gestes *6 leçons · exercices en étapes · sorties vérifiées sur Git 2.56 et PowerShell 7* diff --git a/STORY.md b/STORY.md index c64b1db5..d29dcbea 100644 --- a/STORY.md +++ b/STORY.md @@ -1245,6 +1245,16 @@ Six validateurs de plus ont disparu. Les écarts entre la théorie et le termina --- +### Le flou qu'aucun test ne voit (1er octobre 2026) + +Le 29 septembre, j'avais corrigé le flou en haut de l'app installée sur iPhone avec une bande opaque derrière la barre d'état. Plusieurs projets décrivaient cette astuce, les tests passaient, la page s'affichait bien dans tous mes navigateurs. Thierry a rouvert l'app sur son iPhone : le flou était toujours là. + +Ce défaut n'existe que dans une app installée, sur un vrai iPhone. Aucun navigateur de test ne le reproduit, donc aucun test automatique ne pouvait me prévenir. En relisant les correctifs des autres projets, j'ai vu ce qui m'avait échappé : la plupart précisaient eux-mêmes qu'ils n'avaient pas été vérifiés sur un appareil. Un seul l'avait été, et il ne combat pas le flou : il en éloigne le contenu. + +C'est la version appliquée. Dans l'app installée sur iPhone, le haut de l'app descend de 2,5rem, et le flou ne recouvre plus qu'une bande de couleur unie. Le verdict reste celui de l'iPhone de Thierry, pas celui des tests. + +--- + ## Épilogue ouvert Il y a des questions auxquelles on n'a pas encore de réponse. diff --git a/src/app/components/Landing.tsx b/src/app/components/Landing.tsx index 4ac203f0..cc87d5e2 100644 --- a/src/app/components/Landing.tsx +++ b/src/app/components/Landing.tsx @@ -111,16 +111,17 @@ export function Landing() { )} {/* ── NAV ─────────────────────────────────────────────────── */} - {/* THI-152 brick 7bis: pt-[max(1rem,env(safe-area-inset-top))] + {/* THI-152 brick 7bis: pt-[max(1rem,var(--inset-top))] shifts the nav (Terminal logo + GitHub + Login + "Commencer →") - below the iOS status bar in PWA standalone mode (Add to Home - Screen). On Safari classic mobile and on desktop, env() resolves - to 0 → max(1rem, 0) = 1rem (= py-4 baseline, no regression). + below the iOS status bar and its edge blur in PWA standalone mode + (Add to Home Screen; --inset-top in theme.css). On Safari classic + mobile and on desktop, it resolves to 0 → max(1rem, 0) = 1rem + (= py-4 baseline, no regression). Pattern matches the footer (line 593) `pb-[max(2rem,env(...))]`. Layout.tsx already handles its own mobile top bar via the flex-1 wrapper safe-area paddings (mini-PR 7/9), but Landing does NOT use Layout — it has its own nav, hence this dedicated fix. */} -