{{-- v1.4 §5.4 — Enregistrement du service worker et gestion de l'abonnement push. Le service worker ne met RIEN en cache (voir public/sw.js) : il ne sert qu'aux notifications. Aucune demande de permission n'est faite ici — elle part uniquement d'un clic de l'utilisateur sur l'écran « Notifications », comme l'exigent les navigateurs. v3.12.0 — `data-navigate-once` : le panneau navigue désormais côté client (mode SPA), et Livewire ré-exécute par défaut les scripts du corps à chaque changement d'écran. Ce script n'a de sens qu'une fois — il pose `window.soclePush` et un écouteur `load` qui ne se redéclenchera jamais. Sans cet attribut, on empilerait un écouteur mort par clic. v4.14.0 §C — `$routesPush` permet à un autre HÔTE de servir le même script vers SES adresses. Le nouvel espace client vit sur son propre sous-domaine : appeler `push.key` de APP_DOMAIN depuis là partirait vers un autre domaine, sans le cookie de session. Absent — le cas des quatre panneaux — rien ne change d'un caractère. v4.17.1 §B — La brique annonce qu'elle est PRÊTE (`socle:push-pret`) : un écran qui l'a lue trop tôt ré-évalue l'état au lieu d'afficher « indisponible » à tort. Dans les deux apps (client, Studio), elle est en outre montée AVANT l'écran, dans le gabarit. v4.16.1 §C — LA DÉTECTION SUR IPHONE, corrigée ICI et nulle part ailleurs. Ce script est le point unique consommé par QUATRE écrans (le Compte du nouvel espace, l'ancien espace client, le profil des panneaux, et les quatre panneaux qui le chargent). Il exigeait `window.Notification`, qu'une application iOS INSTALLÉE n'expose pas alors que le push y fonctionne par le service worker (iOS 16.4+) : l'écran disait « Indisponibles ici » à tort. Désormais : - `supporte()` ne demande que le service worker et `PushManager` ; - tout ce qui lit `Notification` le fait à condition qu'il existe ; - la permission passe par `Notification.requestPermission` quand elle existe, sinon par `pushManager.subscribe`, qui déclenche l'invite native d'iOS ; - un état NEUF, `installer-dabord`, dit qu'on est sur iPhone dans Safari sans l'app sur l'écran d'accueil — là, le push n'existe pas encore, mais ce n'est pas « non supporté ». --}} @php $routesPush = $routesPush ?? ['cle' => route('push.key'), 'abonnement' => route('push.subscribe')]; @endphp