Changelog complet
- Le chemin de sauvegarde et de restauration chiffre les données, valide strictement les artefacts et restaure l’état attendu avec rollback contrôlé.
- Les sondes application exécutent une vraie requête Laravel au lieu de valider uniquement un port ou une page statique.
- Les workers et le scheduler sont suivis par identité de processus et heartbeat, avec budgets et files distincts.
- Les dépendances, actions CI et images déjà utilisées sont contrôlées par des références reproductibles et immuables.
- Le déploiement production reste volontairement bloqué jusqu’à la validation opérateur finale.
Sauvegarde et restauration
- Les sauvegardes couvrent PostgreSQL, Redis, Meilisearch et les fichiers privés requis sans publier de secret en clair.
- Le harnais de restauration refuse les archives ambiguës, borne les ressources, contient les sous-processus et vérifie l’état final avant succès.
- Les interruptions et échecs préservent un résultat explicite, nettoient le texte en clair et restaurent l’état initial quand le contrat l’autorise.
Santé du runtime
- Laravel expose une liveness autonome et une readiness bornée pour la base, Redis, le stockage et la révision servie.
- PHP-FPM, les workers et le scheduler reçoivent les variables d’environnement avec un accès de groupe strict, jamais avec un fichier lisible par tous.
- Les healthchecks Docker interrogent Laravel et attestent le vrai processus PHP ainsi que ses heartbeats.
Fiabilité de livraison
- Les références exécutables et les lockfiles sont vérifiés automatiquement pour détecter toute dérive mutable.
- Les logs applicatifs et Docker disposent de limites de rétention afin d’éviter une saturation silencieuse du disque.
- Le verrou de déploiement v0.8 reste actif tant que les gates finales et la validation opérateur ne sont pas terminées.
Source: v0.8 stabilization, recovery and runtime health 2026-08-02
- Les mutations DNS sont préparées dans des brouillons persistants, validées ensemble puis appliquées atomiquement avec une seule synchronisation POP.
- La console Monitoring domaine réunit vue d’ensemble, checks, diagnostics, historique, agents, incidents, maintenances, alertes et réglages.
- Les résultats managés et agents partagent un cycle de vie versionné qui rejette les générations obsolètes et préserve l’ordre des transitions.
- Les incidents automatiques, maintenances récurrentes et notifications email/webhook/Slack/Discord sont corrélés et isolés par organisation.
- Les pages de statut publiques disposent d’un éditeur, d’un aperçu, d’un cache de projection et d’abonnements email confirmés.
- Les heartbeats workers et la santé des files distinguent activité normale, retard, indisponibilité et job réellement bloqué.
- Les tâches orphelines sont rapprochées des jobs réels afin de ne plus rester indéfiniment en attente dans la console.
- Les déploiements POP sont dédupliqués, suivis par phase et compatibles avec les jobs mis en file avant la mise à jour.
- Le POP informal-coffee a été récupéré après déploiement du correctif et confirmé active/online.
- Le runtime de déploiement conserve workers et site public, renouvelle les certificats edge et valide la configuration Nginx.
Changements DNS révisables
- Créations, éditions, suppressions et actions groupées produisent un change set persistant au lieu de modifier immédiatement la zone publiée.
- La validation centralisée protège les références de zone, les types de records, les conflits CNAME et les changements concurrents.
- La page DNS montre les changements en attente, leur effet avant/après et les confirmations adaptées au nombre de records.
- L’application verrouille la zone, écrit tout le brouillon atomiquement et déclenche une seule synchronisation DNS.
- Un déploiement échoué conserve un état reprenable et une action de nouvelle tentative explicite.
Monitoring domaine complet
- Les checks HTTP, TCP, DNS, TLS et Ping disposent d’un état commun, de métriques historiques, de diagnostics et d’un cycle pause/reprise/reconfiguration.
- Les agents peuvent être créés, enrôlés, renouvelés, suspendus et révoqués sans accepter de résultats anciens ou réaffectés.
- Les incidents automatiques sont corrélés aux checks et restent cohérents pendant replay, changements de clé et fenêtres de maintenance.
- L’espace incidents/maintenances fournit timeline, notes internes, communications publiques, édition versionnée et contrôles de concurrence.
- Les notifications respectent les canaux configurés, horaires calmes, répétitions, déduplication et journal de livraison.
- Les pages publiques et abonnements email utilisent des projections bornées, mises en cache et invalidées lors des changements visibles.
- La rétention, les rollups et la suppression des données monitoring restent bornés et isolés par organisation.
Tâches, files et déploiements POP
- Chaque worker publie son identité, les files couvertes, son démarrage, son dernier heartbeat et son arrêt.
- La santé d’une file combine backlog, âge des jobs, réservations, délai de reprise et disponibilité réelle des workers.
- Les tâches opérationnelles orphelines sont clôturées ou annulées lorsque leur job a disparu ou a été remplacé.
- Un seul déploiement actif est autorisé par POP et la même tâche suit les phases Storage, Mail et Edge avec progression bornée.
- Les jobs POP sérialisés avant l’ajout du suivi reçoivent des valeurs par défaut rétrocompatibles au lieu d’échouer avant Ansible.
- Les workers occupés par des jobs longs restent reconnus pendant leur budget de reprise, tandis que le démarrage exige toujours un heartbeat récent.
Runtime et validation
- Les boucles de workers survivent aux signaux de redémarrage et le déploiement attend le retour de chaque worker requis.
- Le déploiement préserve le mount du site public, valide Nginx et enregistre la révision réellement servie.
- Les certificats SSL edge expirés ou proches de l’expiration sont renouvelés avant leur synchronisation.
- Suite Laravel complète avant le hotfix final: 1 470 tests, 10 431 assertions et 2 tests ignorés.
- Validation finale ciblée POP/files/nodes: 38 tests et 229 assertions, plus Pint et le garde-fou permissions.
- Suites Go edge-node, Jest CLI (46 tests), build Vite et validations runtime Docker/site/workers exécutés avant publication.
- Production confirmée sur 1d208c07454d avec migrations à jour, conteneurs sains, tâches utilisateur vides et POP informal-coffee online.
Source: DNS change sets, complete domain monitoring and queue/task reliability 2026-07-29
- Les services privés globaux déclenchent automatiquement la préparation et la synchronisation des POPs VPN disponibles lors de leur création.
- L’enrôlement CLI d’un appareil réseau privé répond immédiatement après création du peer et planifie les synchronisations POP WireGuard en queue.
- Le CLI 1.0.5 privilégie les réponses DNS IPv4 pour ne plus échouer sur une AAAA publiée mais non servie par un POP.
- Les profils POP privés dont le noeud n’existe plus ou n’est plus éligible sont exclus des compteurs, des validations CIDR et des payloads d’enrôlement.
- La commande planifiée private-origins:guard contrôle les origines privées actives, détecte DNS manquant, AAAA dangereuse, POP non prêt ou HTTPS public cassé, puis déclenche les réparations sûres.
- Les sondes publiques du garde utilisent des résolveurs configurables et testent HTTPS via l’adresse A résolue, ce qui évite les faux positifs du DNS interne Docker.
- La vue GeoDNS default publie maintenant un POP privé prêt même quand le choix géographique ne peut pas sélectionner de POP localisé.
- La zone système cdn.pizza ne publie plus d’AAAA CDN/WAF automatiques pour ses hosts proxifiés tant que CDN_PIZZA_BASE_PROXY_IPV6 n’est pas activé.
- GeoDnsService cible maintenant les POPs serviteurs, les nodes du registre nameserver et les IP publiques réellement résolues depuis bufala.cdn.pizza et diavola.cdn.pizza.
- Un POP qui confirme une configuration WireGuard prête et appliquée relance la synchronisation DNS des services privés concernés.
- Les pages d’erreur CDN/console sont brandées et exposent un identifiant de requête utile au support, y compris dans le challenge WAF.
- Le catalogue /releases empêche qu’une configuration APP_VERSION restée sur une ancienne version affiche deux versions comme actuelles.
- La couverture de rendu admin et les notes de release sont alignées avec la consolidation finale sur main.
Réseaux privés
- La création d’un service privé global prépare les POPs DNS liés puis synchronise les POPs VPN déjà attachés.
- Les services privés ciblés conservent leurs garde-fous et synchronisent seulement le POP explicitement choisi.
- Les POPs obsolètes ne bloquent plus les changements de CIDR et ne polluent plus les états "à reprendre".
- Les profils POP privés déjà appliqués ne sont plus marqués cassés quand une tentative de refresh échoue mais que la version et le hash actifs restent corrects.
DNS public
- La synchronisation de zone inclut les nameservers publics vivants résolus depuis les NS globaux afin d’éviter les réponses NXDOMAIN persistantes.
- Les réponses CDN/WAF automatiques de la zone de base restent en IPv4 par défaut pour éviter de publier des AAAA avant que HTTPS IPv6 soit réellement servi.
- Les origines privées ne publient plus de AAAA publique tant que le chemin IPv6 privé n’est pas explicitement supporté.
- La vue default reçoit un POP privé prêt en fallback, afin qu’un resolver sans métadonnée GeoDNS ne tombe plus sur NXDOMAIN pour un service privé pourtant prêt.
- Les IP de nameserver non rattachées à un edge connu sont journalisées via ThrottledLog sans exposer de secret.
- Les nouveaux targets de synchronisation ne changent pas le routage GeoDNS public: ils servent la zone, mais ne sont pas injectés comme réponses si leur pool public ne le permet pas.
Garde automatique
- private-origins:guard tourne toutes les 5 minutes avec withoutOverlapping et une limite configurable par exécution.
- Le garde déclenche une resynchronisation DNS de maintenance quand le public ne sert pas le A attendu ou sert encore une AAAA non autorisée.
- Le garde relance les synchronisations policy POP réparables, avec verrou court pour éviter d’empiler les mêmes réparations.
- Les alertes private_origin_unhealthy et private_origin_dns_ipv6_unsafe sont ouvertes seulement si le problème reste visible, puis résolues automatiquement au retour à l’état sain.
Diagnostic et exploitation
- Les appels API du CLI utilisent l’ordre DNS IPv4 en premier, ce qui évite les erreurs ECONNREFUSED quand une IPv6 publique est annoncée avant d’être servie sur HTTPS.
- Les pages d’erreur disposent d’un rendu CDN.PIZZA cohérent pour les statuts console et edge courants.
- Les erreurs edge et WAF transportent un identifiant de requête visible afin de raccourcir le diagnostic support.
- Le test de rendu admin couvre davantage de pages console critiques avant publication.
Validation
- Suite Laravel complète: 910 tests passants et 2 ignorés.
- Suite Jest CLI complète: 43 tests passants, avec couverture du fallback IPv4.
- Tests ciblés pour la propagation DNS des réseaux privés, le garde private-origin, les POPs obsolètes, la base-zone/default GeoDNS, les pages d’erreur, les release notes et le rendu admin.
- Validation live des services privés upnt.ch: A public présent, aucune AAAA publique et HTTP 200 via le CDN.
- Pint, git diff --check, tests/build du site public et scripts/check-permissions.sh exécutés avant push.
Source: private network DNS propagation, guard automation, branded error pages and main consolidation 2026-07-23
- La branche publiée regroupe les lots récents: analytics domaine, cockpit CDN, réseaux privés guidés, CLI 1.0.4, quarantaine POP par origine et durcissement edge DNS.
- Le site public quitte website-dev pour une source canonique website-src et une sortie statique complète sous website/.
- La vitrine dispose de pages FR/EN/DE, canonical/hreflang, sitemap, robots, JSON-LD, Open Graph/Twitter card et assets locaux versionnés.
- Les CTAs de création de compte portent une attribution first-party minimale, conservée sans identifiant visiteur ni donnée sensible.
- Docker/Nginx sert maintenant le site public via un vhost dédié et un healthcheck séparé de la console.
- La page Sécurité et accès gagne une mise en page plus lisible, des textes harmonisés, des pluriels propres et un responsive sans débordement.
- Les notes publiques /releases et le CHANGELOG GitHub sont alignés sur cette publication complète.
Site public généré
- website-src devient la source de contenu, templates, SEO et génération statique du site public.
- website/ contient les pages publiées, les alias de compatibilité et les assets locaux nécessaires au vhost public.
- Les pages produit, réseau, développeurs, prix, sécurité et sponsors existent en français, anglais et allemand avec switcher de langue.
- Les anciennes pages .html et features deviennent des redirections/noindex pour préserver les liens sans dupliquer le contenu.
- Le JavaScript public hydrate le statut réseau, les POPs, les prix TLD et les liens utiles depuis /api/public/site-data avec cache local résilient.
Attribution et inscription
- Les liens d’inscription générés transportent src, page, cta et lang pour comprendre le funnel public.
- WebAuthController filtre ces valeurs en session puis les persiste dans les settings de l’organisation créée.
- L’attribution exclut referrer brut, URL complète, identifiant visiteur, email, user-agent et IP.
Interface Sécurité et accès
- Le conteneur de page est limité à une largeur lisible sur grands écrans tout en restant fluide.
- Le hero utilise une surface plus douce, des badges cohérents et un bloc de dernière connexion moins massif.
- Les cartes identité, mot de passe, sessions et accès API sont visuellement alignées avec le reste de la console.
- Les panneaux Vue d’ensemble, WebAuthn, TOTP, mot de passe, notifications, sessions et tokens gardent des rayons de 8px et une ombre légère.
- Les libellés ambigus ou trop techniques ont été remplacés par des formulations plus naturelles pour les utilisateurs francophones.
- Les sessions actives, autres sessions et tokens API utilisent trans_choice pour afficher correctement zéro, un ou plusieurs éléments.
- Les fichiers de langue anglais, allemand et français contiennent les nouvelles chaînes affichées par la page.
Publication du train complet
- Les lots 0.7.7 à 0.7.9 restent détaillés dans leurs entrées dédiées et sont embarqués dans la branche publiée.
- Le changelog GitHub et le catalogue /releases couvrent le CLI 1.0.4, le cockpit CDN, l’analytics, les réseaux privés, la santé POP et les changements edge.
- AGENTS.md rappelle de ne pas développer sur le serveur de production et de pousser les changements avant validation/déploiement.
Validation
- ReleaseNotesPageTest et ProfileSecuritySettingsTest passent avec 28 tests et 260 assertions.
- Le smoke Playwright connecté vérifie que /settings reste rendu sans retour login ni erreur client.
- Un contrôle Playwright desktop/mobile vérifie le rendu, l’absence de débordement horizontal et la navigation entre onglets privés.
- Les traductions JSON, git diff --check et scripts/check-permissions.sh ont été exécutés.
- La validation globale attendue pour la branche complète couvre Laravel, CLI, edge-node, website-src, docker compose et la syntaxe Ansible.
Source: full worktree publication, public site generator and console polish 2026-07-21
- La page statistiques domaine supporte 24h, 7j et 30j avec requêtes, bande passante, trafic facturable, cache hit, visiteurs uniques, erreurs et latences p95.
- Un avis global analyse erreurs origine, bruit 4xx, cache, latence et répartition POP sans afficher les IP visiteurs brutes.
- La revue de configuration cdn.pizza propose des réglages applicables ou manuels et peut appliquer les actions sûres HTTPS visiteur et cache standard.
- La configuration CDN dispose d’un onglet dédié pour origine/cache, purge, diagnostic et santé origine par POP.
- La page DNS se concentre sur les records et ajoute actions groupées, proxy bulk et TTL personnalisés bornés.
- Les réseaux privés gagnent un mode guidé, une administration avancée par onglets, des ACL CIDR éditables et des services privés mieux cadrés.
- Les checks de santé nodes réessayent les probes, résolvent les alertes obsolètes et évitent de remettre online un POP encore en alerte.
- Le sync DNS edge prune les anciennes vues, vérifie le reload CoreDNS, tente un restart contrôlé et supprime les blocs récursifs publics hérités.
Analytics et configuration domaine
- DomainStatsService centralise les métriques rollup et logs pour la page web et l’API /api/zones/{id}/stats.
- Les métriques couvrent requêtes, bande passante, billable bytes, cache HIT/MISS/BYPASS, pays, méthodes, statuts HTTP, chemins lents, chemins en erreur, référents, user agents et requêtes récentes.
- Les longues périodes gardent les lectures détaillées bornées et n’exposent pas d’adresse IP brute dans la vue.
- DomainConfigurationAdvisor produit une note de configuration et distingue les recommandations applicables automatiquement des vérifications manuelles.
CDN et DNS
- Nouvel onglet CDN pour piloter origine/cache, purger une URL, purger tout le cache et afficher le diagnostic opérationnel.
- La santé origine par POP affiche les POPs sains, dégradés ou en quarantaine avec la dernière erreur utile.
- La page DNS renvoie vers la politique CDN au lieu de mélanger cache/origine et records DNS.
- Les actions groupées peuvent supprimer des records sélectionnés ou activer/désactiver le proxy uniquement sur les types compatibles.
- Les TTL personnalisés sont acceptés dans la plage supportée et ne polluent plus les types qui n’utilisent pas la priorité.
Réseaux privés
- Le mode guidé expose les prochaines actions, le plan de mise en service, les ressources réseau et les commandes CLI attendues.
- La vue avancée regroupe vue d’ensemble, services privés, POPs VPN, accès appareils, sécurité et paramètres.
- Les règles réseau personnalisées stockent CIDR source/destination, sont éditables, et restent en brouillon tant que les POPs ne confirment pas l’application ACL.
- Les modèles LAN privé, ping diagnostic, web interne et admin vers réseau privé créent des règles idempotentes et activables quand l’infrastructure est prête.
- Les services privés clarifient la différence entre création et annonce CDN, synchronisent les POPs prêts et bloquent les détachements dangereux.
Santé nodes et edge DNS
- nodes:check-health réessaie les probes HTTP/TCP, ignore le port DNS public pour les POPs drainés et résout les alertes offline périmées.
- Les heartbeats et métriques node ne peuvent plus effacer implicitement une alerte offline non résolue.
- L’admin peut réactiver un POP drainé et la suppression de nodes retire les tokens, désactive le pool public et marque la retraite avant suppression logique.
- Le handler DNS edge supprime les anciennes vues de zone, vérifie le SOA après reload, tente un restart CoreDNS contrôlé si le reload est insuffisant, puis rollback si la vérification échoue.
- Le playbook edge installe le droit sudo minimal pour reload/restart CoreDNS et le vhost Docker sert le site public statique séparément de la console.
Validation
- Tests Laravel analytics domaine, revue de configuration, page CDN, actions DNS groupées, TTL personnalisés, réseau privé guidé/avancé, ACL, services privés, santé nodes et release notes.
- Tests Go edge-node pour logs enrichis, host_header, vues DNS, pruning de zone, reload/restart CoreDNS vérifié et absence de log CoreDNS managé.
- Tests Playwright console étendus pour les parcours connectés et le layout WAF.
Source: domain analytics, CDN cockpit, private network guided workflow and edge DNS hardening 2026-07-18
- Le CLI ajoute files, file:show, file:delete, network:show, status-agent:key, billing:plans et billing:checkout.
- Les commandes de lecture principales acceptent --json pour CI, scripts et diagnostics opérateur.
- La purge globale demande désormais --all, avec --yes pour les usages non interactifs.
- logout distingue le token stocké localement de CDN_PIZZA_TOKEN afin d’éviter une révocation accidentelle en CI.
- Les uploads valident les chemins locaux et exposent cache_ttl, direct_public_link et storage_nodes.
- status-agent:run sérialise ses cycles afin d’éviter des heartbeats ou résultats concurrents.
- La page /cli documente la nouvelle surface CLI/API et le tarball @cdn.pizza/cli 1.0.4.
Commandes CLI
- files, file:show et file:delete couvrent les endpoints fichiers déjà publics côté API.
- network:show expose les détails du réseau privé et la disponibilité WireGuard avant création de clés connector.
- status-agent:key crée les clés cps_... depuis la CLI et complète status-agent:enroll/status/run.
- billing:plans et billing:checkout couvrent la consultation des plans et la création d’une session Payrexx.
Fiabilité opérateur
- config affiche l’URL API effective, la source du token et l’état de connexion sans afficher le bearer token.
- logout ne révoque CDN_PIZZA_TOKEN que si --revoke-env est passé explicitement.
- Les options numériques et les préfixes de tokens cpn_/cps_ sont validés avant les appels API.
- Le package npm utilise une whitelist de fichiers afin de ne plus publier les tests.
Documentation et distribution
- La référence console /cli liste les nouvelles commandes, les endpoints status-agent, billing checkout et fichiers.
- Le fallback version CLI du control-plane et le package npm sont alignés sur 1.0.4.
- Les traductions EN/DE de la page CLI/API sont complétées.
Validation
- Suite Jest CLI complète: 42 tests passants.
- CliPageTest couvre les nouvelles commandes affichées sur /cli.
- translations:scan strict EN/DE, npm audit, npm pack --dry-run, git diff --check et scripts/check-permissions.sh exécutés.
Source: CLI reliability and command coverage pass 2026-07-12
- Les erreurs origine répétées via un POP déclenchent une quarantaine par zone/POP au lieu d’une intervention manuelle globale.
- Le mode CDN Auto respecte la quarantaine dans GeoDNS, le refresh du pool Auto et la bascule vers le mode Auto.
- La commande planifiée zones:check-origin-health teste uniquement les hosts proxifiés et ignore les records DNS-only comme les CNAME GitBook docs.
- La restauration automatique réactive le POP pour la zone après probes sains et expiration de la quarantaine.
- La version publique, les données live et le fallback statique du site exposent maintenant la version produit 0.7.7.
Routage POP par zone
- zone_pops stocke l’état de santé origine, les compteurs de succès/échec, la dernière erreur et la fin de quarantaine.
- GeoDnsService filtre les POPs en quarantaine origine avant de générer les vues country, nearest, continent et fallback.
- DomainEffectiveState signale une raison zone-spécifique quand un POP est filtré pour origine en erreur.
Automatisation
- zones:check-origin-health force la résolution du host vers chaque POP afin de tester le chemin visiteur réel POP vers origine.
- Deux échecs consécutifs placent le POP en quarantaine pour la zone et dispatchent SyncDnsZone sur la queue dns-maintenance.
- Deux succès après expiration restaurent le POP et redéclenchent une synchronisation DNS.
- Les records non proxifiés restent hors scope, ce qui préserve docs.up-network.ch et les CNAME GitBook DNS-only.
Version publique
- L’API /api/public/site-data utilise une clé cache versionnée afin qu’un ancien payload 0.7.6 ne puisse plus masquer la release courante.
- Le site statique charge site-lunoz.js?v=88, renouvelle son cache local en v4 et affiche v0.7.7 même si les données live sont temporairement indisponibles.
Validation
- Tests Laravel ajoutés pour la quarantaine après Bad Gateway répétés, la restauration après probes sains et l’exclusion des records DNS-only.
- Tests GeoDNS et Domain POPs étendus pour empêcher le mode Auto de republier un POP en quarantaine origine.
- Validation live up-network.ch: 95 probes origine, aucune dégradation persistante, apex HTTPS 200 et docs HTTPS 200 via GitBook.
Source: per-zone POP origin health quarantine and up-network.ch CDN migration hardening 2026-07-12
- Les hostnames status personnalisés servent la bonne page tenant via status.cdn.pizza sans boucle HTTPS ni exposition du mauvais tenant.
- Le provisionnement du hostname status est transactionnel afin d’éviter un état partiel enabled=true sans record DNS synchronisable.
- Les edge nodes redémarrent CoreDNS uniquement quand le reload ne prouve pas le nouveau SOA, puis publient les métadonnées d’origine après vérification.
- Les monitors publics acceptent maintenant le type Ping ICMP avec validation des cibles publiques avant exécution.
- Les pages status avec checks publics ne montrent plus un placeholder de composants vides quand aucun composant global n’est publié.
- Le patch a été validé en live sur les 23 POPs actifs pour status.up-network.ch.
Status par domaine
- GeoDNS route les hostnames status vers le fallback status canonique avec Host status.cdn.pizza et conserve le hostname public dans un header interne.
- Le middleware status lit ce header uniquement depuis le host canonique afin de sélectionner la page tenant sans accepter un spoof direct sur les autres hosts.
- La sauvegarde de la page status et le provisioning DNS partagent une transaction pour éviter les pages activées partiellement après erreur.
Edge et DNS
- Le modèle d’origine edge supporte host_header et transmet X-CDN-Pizza-Forwarded-Host au fallback status.
- La synchronisation DNS vérifie le SOA local après reload CoreDNS et bascule sur un restart contrôlé si le reload laisse une ancienne zone en mémoire.
- Les métadonnées origins.json ne sont persistées qu’après validation du reload ou du restart.
Monitoring
- Nouveau type de monitor public Ping ICMP dans la console domaine.
- Les cibles ping passent par MonitorTargetGuard comme HTTP/TCP/TLS afin de refuser les hosts privés, réservés, locaux ou non résolus.
- Le runner ping utilise un timeout borné et stocke le host demandé, l’IP validée et le code de sortie.
- La page publique masque le placeholder de composants vides dès que des checks publics sont publiés.
Validation
- Tests Laravel ajoutés pour le provisioning status transactionnel, le routage status via host canonique et le monitor Ping ICMP.
- Test public ajouté pour éviter la régression No public components configured sur les pages status avec checks.
- Tests Go ajoutés pour host_header edge, header forwarded-host et fallback restart CoreDNS après échec de vérification reload.
- Validation live status.up-network.ch: sync DNS 23/23, HTTPS 200 sur chaque POP actif et authoritative DNS bufala/diavola.
Source: domain status host routing hotfix, ICMP ping monitor and CoreDNS reload fallback 2026-07-03
- L’ajout de domaine peut importer un export DNS BIND/zone file et pré-sélectionner les records importables.
- Le mode CNAME est présenté comme mode réduit afin de pousser le mode NS complet quand import DNS, DNSSEC, wildcard SSL, status domaine et records automatiques sont nécessaires.
- Les domaines enregistrés et renouvelés via cdn.pizza affichent un badge Domaine géré basé sur une détection registrar centralisée.
- DNSSEC publie et retire automatiquement le DS chez InternetBS pour les domaines gérés par cdn.pizza, avec rollback local ou état de revue si la confirmation registrar est ambiguë.
- GeoDNS émet les réponses AAAA des POPs quand elles existent et synchronise aussi les noeuds attachés au registre nameserver.
- Les échecs ACME ne font plus perdre un wildcard SSL encore valide.
- Les origines de streams actives sont résolues et rejetées si elles pointent vers une IP privée, réservée ou un POP cdn.pizza.
- Le parcours Partner POP approuvé permet de créer un token d’enrôlement depuis la console ou l’API via un service centralisé.
- Les webhooks Payrexx ne prennent plus les anciennes références abonnement héritées.
- Le site public ajoute Open Graph/Twitter card, JSON-LD, FAQ, contenu SEO et sitemap enrichi.
DNS et registrar
- Nouveau parseur DnsZoneFileImporter pour records A, AAAA, CNAME, MX, TXT, NS, SRV et CAA.
- Les SOA et NS apex hérités sont ignorés lors de l’import pour garder la délégation cdn.pizza propre.
- Les records proxy par défaut ne sont pas ajoutés automatiquement quand un import complet est sélectionné.
- Le panneau DNSSEC indique quand cdn.pizza publie automatiquement le DS chez InternetBS.
- InternetBsClient sait pousser ou vider les DNSSEC DS via Domain/Update et marque ces mutations comme ambiguës si la confirmation distante n’est pas certaine.
Routage, SSL et edge
- GeoDNS ajoute les AAAA pour les records proxy et apex quand les POPs disposent d’une IPv6.
- Le sync DNS cible aussi les noeuds du NameserverRegistry afin que bufala.cdn.pizza et diavola.cdn.pizza restent servis.
- IssueWildcardSslCertificate conserve un état actif lorsqu’un certificat valide existe encore après un échec ACME.
- Les sections CoreDNS managées ne réactivent plus le logging par requête.
Sécurité applicative
- StreamProxyService résout les origines actives et bloque IP privées, réservées, locales et boucles vers les POPs.
- NodeController limite la liste des nodes à l’organisation authentifiée, refuse les métriques négatives et vérifie les POPs autorisés par zone.
- ResetPasswordNotification reconstruit une URL absolue depuis APP_URL.
- WafMiddleware affine les signatures .env, .env.* et .git pour réduire les faux positifs sans relâcher les blocages sensibles.
- PayrexxCheckoutController retire le support des références d’abonnement héritées.
Partner POP et site public
- PartnerPopEnrollmentTokenService centralise la création des tokens à usage unique 24h.
- La console affiche la prochaine étape post-approbation et permet de copier la commande d’enrôlement.
- Les routes API et web utilisent le même contrôle canCreateEnrollmentToken.
- Le site public enrichit titres, descriptions, Open Graph, Twitter card, JSON-LD, FAQ et sitemap lastmod/changefreq/priority.
Validation
- Tests Laravel import DNS, formulaire DNS, DNSSEC registrar, SSL auto, streams, API hardening, nodes uptime, Partner POP, Payrexx, reset password, zones API et GeoDNS.
- Tests Go edge-node pour empêcher le retour du log CoreDNS dans les zones managées.
- Tests unitaires InternetBS DNSSEC et NameserverRegistry.
Source: dns zone file import, managed registrar DNSSEC, Partner POP enrollment and security hardening 2026-07-03
- La note d’inscription n’est plus formulée comme une bêta privée.
- Les layouts auth, console et release notes utilisent un vocabulaire public cohérent.
- Les liens login/register et le sitemap du site public FR/EN/DE sont alignés sur les URLs de production.
- Le setup de zone cdn.pizza et le seed DNS de base évitent les incohérences autour du domaine système.
- La synchronisation SSL système est mieux couverte et évite les réécritures inutiles.
Inscription et site public
- Renommage du partial beta-note pour refléter la bêta publique.
- Messages d’inscription FR/EN/DE mis à jour dans les vues auth et console.
- Pages publiques et sitemap harmonisés vers console.cdn.pizza.
SSL système
- SetupCdnPizzaZone et BaseDnsRecordsSeeder alignés sur les hostnames système.
- SystemSslCertificateSyncService durci pour mieux préserver l’état attendu.
Validation
- Tests SetupCdnPizzaZoneCommand et SystemSslCertificateSyncService.
- Tests auth, dashboard et release notes ajustés.
Source: public beta signup messaging, public website promotion and system SSL hardening 2026-06-25
- La console applique un middleware de headers de sécurité centralisé.
- La configuration session est vérifiée pour la surface web publique.
- Les actions groupées admin nodes sont couvertes par une suite dédiée.
- Les données publiques et pages status/domain POPs suivent mieux l’éligibilité réelle des noeuds.
- Les dépendances CLI et control-plane sont réalignées avec les versions livrées.
Sécurité console
- EnsureSecurityHeaders et SecurityHeaders ajoutent des headers cohérents sur la console.
- La session Laravel garde des réglages plus stricts pour la bêta publique.
Exploitation nodes
- NodeAdminController supporte les actions groupées nécessaires à l’exploitation.
- DomainEffectiveState, GeoDNS et WAF tiennent mieux compte des POPs éligibles.
Validation
- Tests ConsoleSecurityHeaders, SessionSecurityConfig, NodeBulkActions, DomainPopsPage, PublicStatusPage, GeoDNS et API publique.
Source: public beta readiness, console security headers and node operations 2026-06-25
- Les pages Partner POP exposent les ressources attendues et la portée réseau avant certification.
- Les demandes Sponsor POP du site public passent par le panel pour garder un workflow traçable.
- La page status public normalise ses graisses typographiques.
- L’admin et l’API Partner POP exposent les informations utiles pour la certification.
Partner et Sponsor POP
- Copies FR/EN/DE clarifiées sur ressources, réseau et sponsor.
- Partial service-scope ajouté pour éviter les divergences entre vues.
- Liens sponsor du site public redirigés vers la console.
Validation
- Tests Partner POP admin, API et web étendus.
- Test status page pour figer le rendu typographique.
Source: Partner POP resource requirements, sponsor site routing and status typography 2026-06-23/24
- Ajout du modèle, service et job de certification Partner POP.
- Les demandes Partner POP stockent les champs nécessaires au suivi de certification.
- L’admin peut suivre l’état de certification et déclencher le contrôle.
- L’API publique ne publie que les POPs partenaires certifiés.
- La documentation agent contient le design et le plan d’implémentation Partner POP.
Certification
- RunPartnerPopCertification orchestre les contrôles post-approbation.
- PartnerPopCertificationService centralise l’évaluation et les messages.
- StatusPageService et PublicSiteDataController tiennent compte des POPs partenaires certifiés.
Validation
- Migration Partner POP automation ajoutée.
- Tests Partner POP admin, API, web et PublicSiteDataApi.
Source: Partner POP automation design and certification workflow 2026-06-23
- Chaque domaine peut avoir une page de status isolée avec titre, sous-titre, composants, incidents et monitors publics.
- Les zones gérées en NS peuvent provisionner automatiquement leur hostname status proxifié; les zones CNAME restent sans mutation DNS automatique.
- Les monitors HTTP, TCP, DNS et TLS s’exécutent sur une queue dédiée avec latence, état courant et détection des runs bloqués.
- Le nouvel agent cdn-pizza peut être enrôlé sur une machine légère pour remonter heartbeat, configuration et résultats sans exposer de secret.
- Les zones DNS gérées par CDN.PIZZA peuvent activer DNSSEC depuis la page DNS, avec DS à publier, signature de zone et vérification du DS parent.
- La console et les mails transactionnels suivent maintenant la locale utilisateur FR/EN/DE jusque dans les notifications billing, sécurité et invitation.
- L’inscription bêta est ouverte sans code d’invitation et demande la langue par défaut utilisée ensuite par la session, le profil et les mails.
- Le WAF montre l’effet réel des règles, notamment le mode Surveillance, et les certificats SSL générés peuvent être exportés en bundle PEM.
- Les cibles publiques sont filtrées contre les réseaux locaux, privés et réservés afin de réduire le risque SSRF.
- Le rollout est tolérant au schéma et le déploiement Docker/Nginx/CoreDNS évite les 500/502 persistants ou les reloads DNS non restaurés.
Pages status domaine
- Nouvelle page de gestion depuis le domaine pour activer, personnaliser et prévisualiser le status.
- Rendu public isolé par hostname afin qu’un domaine ne puisse pas voir les composants ou incidents d’un autre.
- Provisioning DNS automatique limité aux zones en mode NS, avec record A proxifié vers l’origine fallback cdn.pizza.
- Les domaines en mode CNAME affichent une limite explicite et ne déclenchent pas de changement DNS côté plateforme.
Monitors et files
- Création de monitors HTTP, TCP, DNS et TLS avec intervalle, timeout, seuils HTTP et visibilité publique configurables.
- Résultats historisés avec statut, latence, erreur normalisée et horodatage de check.
- Nouveaux jobs et commandes pour dispatcher les checks dus, marquer les runs stale et surveiller la queue monitors.
- Worker Docker dédié aux monitors afin de ne pas mélanger les probes de santé avec les queues déploiement/default.
Agent status
- Commandes CLI status-agent: enroll, status et run.
- Enrollment par token court et à usage limité, stockage local sous ~/.cdn-pizza/status-agents avec permissions strictes.
- Heartbeat et publication de résultats via bearer token hashé; l’API ignore les identités envoyées dans le body.
- Configuration agent renvoyée seulement pour la page status et l’organisation authentifiées.
DNSSEC domaine
- Nouveau panneau DNSSEC pour les zones gérées par les nameservers CDN.PIZZA: activation, désactivation, état signé et DS à transmettre au registrar.
- Génération de clés KSK/ZSK et signature des zones avant synchronisation vers les edge nodes.
- Vérification du DS parent afin d’indiquer si la délégation publiée chez le registrar correspond au DS attendu.
- Les records DNSSEC techniques DS et DNSKEY sont exclus du formulaire DNS standard pour éviter des configurations partielles ou contradictoires.
- Les domaines en mode CNAME affichent une explication dédiée: DNSSEC reste géré chez le fournisseur DNS externe.
Localisation et mails
- Locales centralisées dans config/locales.php et App\Support\SupportedLocales pour français, anglais et allemand.
- Inscription avec choix de langue par défaut, persistance users.locale, réhydratation de session au login, TOTP et WebAuthn.
- Les modèles User implémentent HasLocalePreference afin que NotificationSender applique la locale du destinataire.
- Les notifications billing et sécurité résolvent maintenant titres, corps, labels de contexte et actions au moment du rendu mail.
- Les invitations envoyées à une adresse anonyme portent explicitement la locale de l’inviteur.
- Scanner translations:scan étendu avec --strict, --locale et --path pour garder les catalogues FR/EN/DE complets.
Console WAF, SSL et exploitation
- La page WAF présente l’état effectif du trafic, le mode appliqué, la readiness challenge, le filtrage pays, le rate limit et l’ordre d’évaluation.
- Le mode Surveillance journalise les blocklists pays côté edge au lieu de bloquer, et la console affiche cet effet réel.
- Export PEM disponible pour les certificats SSL automatiques actifs, générés et déjà poussés sur les POPs.
- Le health-check des POPs CDN vérifie aussi le port 53 pour retirer du DNS les noeuds dont le DNS public ne répond plus.
- Le sync CoreDNS privilégie systemctl reload, restaure après rollback et évite un restart complet quand un reload suffit.
- Logo CDN.PIZZA harmonisé sur console, releases et vitrine générée.
Sécurité et rollout
- Blocage des targets locales, privées, réservées, documentation, multicast et liens locaux pour les monitors publics.
- Aucun token, endpoint interne ou détail privé de node n’est rendu dans la page status publique.
- Garde de compatibilité dans le service status pour éviter un 500 si /api/public/site-data est appelé avant la fin des migrations.
- Migrations appliquées pour les pages status, monitors, résultats, clés d’enrollment et agents.
- Image Laravel reconstruite avec ldns-tools pour générer et signer les zones DNSSEC dans les conteneurs applicatifs.
- Nginx résout désormais dynamiquement l’upstream app via le resolver Docker afin de ne pas garder une ancienne IP de conteneur après recreate.
Validation
- Tests Laravel pour pages status domaine, monitors, API agent, page publique et rollout /api/public/site-data.
- Tests Jest CLI pour l’agent status, les tokens et les sorties sans secret.
- Tests mail/localisation pour session FR/EN/DE, rendu réel via NotificationSender, billing, sécurité et invitations anonymes.
- Tests WAF pour état effectif, mode Surveillance, layout progressif et comportement edge des blocklists pays.
- Tests SSL export, santé POP DNS :53 et reload/rollback CoreDNS.
- Tests Laravel DNS/DNSSEC/GeoDNS pour résolution DS, formulaire DNS, activation DNSSEC, signature de zone et sync signée.
- Endpoint /api/public/site-data vérifié en 200 après migration et cache clear.
- Binaire ldns-keygen et ldns-signzone vérifiés dans les conteneurs applicatifs après rebuild Docker.
- Console vérifiée en 200 sur /login après correction Nginx et redémarrage/recreate des services applicatifs.
- Scanner strict traductions, Pint ciblé, git diff --check et garde-fou permissions exécutés.
Source: domain status pages, monitors, lightweight status agent, DNSSEC and localized mail 2026-06-23
- La console dispose de nouvelles validations bêta: smoke Playwright authentifiée, seed sandbox et tests BaseDNS, SSL, billing, Payrexx, fichiers, purge et GeoDNS.
- La navigation console est regroupée en catégories Services, Opérations et Paramètres, avec le compte et les réglages mieux alignés à droite.
- Le CDN HTTP peut maintenant mettre en cache les réponses d’origine sûres avec modes, TTL POP, TTL navigateur et stratégie query string par domaine.
- Les edge nodes évitent automatiquement de cacher les requêtes sensibles: Authorization, Cookie, Range, Set-Cookie et directives privées/no-store/no-cache.
- La page DNS présente un bloc CDN HTTP clair qui sépare origine web, cache edge et portée des records Proxy actif.
- Le site public de développement a été poli pour la bêta avec une section console réelle et un carousel panel plus stable.
Console bêta
- Ajout d’un environnement Playwright console avec utilisateur sandbox, base SQLite dédiée, serveur de test et teardown propre.
- Renforcement des parcours testés: facturation, dépôts Payrexx, fichiers, purge cache, BaseDNS admin, certificats SSL admin, GeoDNS et endpoint nodes.
- Les jobs de purge et de synchronisation fichiers transportent mieux le contexte zone et node pour éviter les actions ambiguës.
Navigation console
- Regroupement des entrées secondaires en menus déroulants Services, Opérations et Paramètres.
- Réduction du poids visuel de la navbar sur desktop et vérification du comportement mobile authentifié.
- Déplacement logique du bloc compte/réglages vers la droite afin de séparer navigation produit et actions utilisateur.
Cache CDN
- Nouveaux réglages domaine: mode cache, TTL edge, TTL navigateur, query string incluse ou ignorée et bypass cookies.
- Les payloads DNS sync transmettent la politique cache aux edge nodes pour les hostnames proxyfiés.
- Le cache edge ne stocke que les réponses HTTP sûres et sert les HEAD depuis le cache sans peupler de nouvelles entrées.
- Les purges restent disponibles via API et les stratégies par domaine sont couvertes par tests Laravel, Go et API zones.
DNS et interface cache
- Le bloc DNS “CDN HTTP : origine et cache” explique que les records DNS-only restent de simples réponses DNS.
- Les réglages sont séparés entre Origine web et Cache edge, avec libellés explicites pour connexion origine, HTTPS visiteur, TTL POP et cache navigateur.
- Correction CSP de la page DNS grâce au nonce sur le script dynamique du formulaire DNS.
Site public dev
- Section console réelle et carousel panel ajustés pour mieux montrer le produit sans inventer d’interface.
- Amélioration responsive et réduction des répétitions visuelles dans les pages de préparation bêta.
- Contrôles des données publiques pour éviter les valeurs frontend incohérentes.
Validation
- Tests Laravel ciblés sur DNS/cache, release notes et parcours bêta.
- Tests Go edge-node pour cache HTTP, sync DNS et règles de bypass.
- Validation Playwright desktop/mobile de la navigation et du panneau DNS/cache, sans erreur console/CSP.
- Pint et garde-fou permissions exécutés sur les changements livrés.
Source: beta console readiness, navigation grouping and configurable CDN cache 2026-06-21
- La page WAF expose un état de protection effectif avant les réglages.
- Les actions Bloquer et Challenge affichent leur effet réel en Surveillance.
- Le filtrage pays côté edge respecte désormais le mode Surveillance et journalise au lieu de bloquer.
- Les libellés des actions custom, managed, géo et rate limit sont harmonisés.
Console WAF
- Ajout d’un bloc État de protection avec trafic protégé/non protégé, mode effectif, challenge, géo, rate limit et ordre d’évaluation.
- Affichage explicite Action configurée / Effet maintenant pour éviter de promettre un blocage lorsque le WAF est en Surveillance.
- Copies clarifiées sur les listes pays et IP pour rappeler que l’effet dépend du mode WAF.
Edge WAF
- Le filtrage géographique utilise la même résolution d’action que les autres règles WAF.
- En mode Surveillance, les pays blocklistés sont journalisés au lieu d’être bloqués.
Validation
- Tests Go edge WAF pour les blocklists pays en Surveillance.
- Tests Laravel de rendu WAF pour trafic non protégé, Surveillance et protection active.
- Validation Playwright desktop/mobile et garde-fou permissions.
Source: waf clarity and monitor mode consistency 2026-06-21
- Le site public présente désormais les surfaces clés pour la bêta: fonctionnalités, réseau live, CLI/API, sponsors, prix, sécurité et pages multilingues FR/EN/DE.
- La homepage remplace les aperçus inventés par un carousel de captures réelles du panel issues d’un compte sandbox isolé, sans données client.
- La page réseau utilise une carte Leaflet fondée sur les coordonnées réelles des POPs, avec flags robustes et inventaire public cohérent.
- Les données publiques exposent les tiers POP réels Margherita/Diavola et évitent les valeurs frontend hardcodées.
- Le branding public a été consolidé autour du logo cloud + pizza, des icônes Lunoz/Boxicons et du crédit UP-NETWORK Sàrl.
Site public
- Pages publiques structurées pour la bêta: accueil, fonctionnalités, réseau live, développeurs, sponsors, prix et sécurité.
- Versions statiques FR, EN et DE avec URLs propres, liens hreflang/canonical et sitemap public.
- Suppression des notes internes/SEO visibles au profit d’un contenu public orienté produit.
Console et preuve produit
- Carousel de captures réelles du panel: tableau de bord, domaines, DNS, WAF, fichiers et réseaux privés.
- Captures labellisées comme sandbox isolée afin de rendre la console tangible sans exposer de données client.
- Mise en scène homepage plus compacte pour la bêta publique, avec contrôles accessibles et états actifs.
Réseau live et données publiques
- Carte Leaflet sombre avec coordonnées POP réelles, markers/flags stabilisés et regroupement plus lisible.
- Inventaire POP public aligné avec les données backend: statut, régions, tiers et prix par GB.
- Cartes POP plus denses: statuts compacts et suppression des répétitions de données manquantes.
Branding et exploitation
- Logo cloud + pizza appliqué au site public, à la console et aux variantes statiques.
- Remplacement des décorations emoji par les icônes Lunoz/Boxicons adaptées au style cdn.pizza.
- Version console et changelog remis à jour pour suivre la préparation de sortie bêta publique.
Source: public beta preparation + public site commits 2026-06-19/20
- Les dépôts Payrexx sont liés à leur référence locale avant tout crédit wallet.
- Le montant, la gateway et la devise attendus sont vérifiés contre les données confirmées par Payrexx.
- Les rejouements ou transactions externes ne peuvent plus créditer un dépôt en attente sans correspondance.
- La console expose ce durcissement dans le changelog public et le footer de version.
Billing
- Le webhook refuse les transactions confirmées qui ne pointent pas vers le dépôt pending correspondant.
- Les écarts de montant, monnaie ou passerelle restent en attente au lieu de créditer automatiquement le wallet.
- Les tests de régression couvrent le binding transaction/dépôt et les cas de spoofing webhook.
Console
- Version bêta mise à jour en v0.5.3 dans le footer console et auth.
- Entrée changelog publique ajoutée pour tracer le correctif de sécurité Payrexx.
Source: security/payrexx-webhook-hardening
- Les policies réseau default-deny couvrent aussi les routes privées configurées côté edge.
- Les règles ACL personnalisées invalides restent en brouillon et ne cassent plus l’application edge.
- Les coupons trafic sont réconciliés lors des corrections de consommation à la baisse.
- Les builds et playbooks évitent d’exposer les secrets dans les images ou logs de déploiement.
Sécurité réseau
- Application nftables sérialisée côté edge pour éviter les courses entre pushes de policy.
- Default-deny appliqué même sans règle active afin d’éviter les échecs ouverts.
- Activation ACL bloquée tant que les règles ne disposent pas de données CIDR appliquables.
Billing et exploitation
- Allowance premium 100 GB alignée entre API, console et configuration.
- Crédits coupons restaurés quand une rerun journalière corrige la consommation à la baisse.
- Docker, CoreDNS, GitHub Actions et templates Ansible durcis pour une reprise de développement propre.
Source: working tree 2026-06-04
- Les formulaires data-confirm ouvrent un dialogue intégré au panel Lunoz via SweetAlert2.
- Les alertes JS visibles sur nodes, POPs, renouvellement registrar et bulk actions utilisent le même helper panel.
- Les confirm/alert natifs sont bannis des vues Blade actives par test automatique.
- La suppression groupée des nodes conserve la confirmation serveur confirm_bulk_delete et les protections nameservers critiques.
Interface
- Chargement global des assets SweetAlert2 du template Lunoz et styles compatibles dark mode.
- Libellés de confirmation centralisés et traduits depuis le layout applicatif.
- Fallback Bootstrap fermé si SweetAlert2 n’est pas disponible, sans soumission silencieuse.
Sécurité et accessibilité
- Messages injectés en texte, pas en HTML, afin de limiter les risques XSS.
- Suppression des handlers inline onclick/onsubmit confirm pour rester compatible CSP.
- Contrats de tests ajoutés pour empêcher le retour de window.confirm, alert ou confirm natif dans le panel.
Source: working tree 2026-06-01
- Les edge nodes reportent version, commit, date de build et capabilities dans heartbeat et health.
- Le control-plane stocke la compatibilité des nodes et bloque les métadonnées private-origin sur les builds qui ne prouvent pas le support.
- Commande d’audit nodes:audit-compatibility et badges admin fleet pour repérer les nodes unknown/incompatible.
- Passe sécurité: SSRF IPv6 transition, WebDAV, reset password, BYOC, webhooks, supply-chain PHP/Go et action GitHub de déploiement.
Compatibilité edge
- Capability requise: private_origin_metadata_v1.
- Statuts normalisés: compatible, incompatible ou unknown selon les métadonnées reçues.
- Les fingerprints DNS tiennent compte du support capability afin de resynchroniser après upgrade ou downgrade.
Sécurité
- SafeOutboundHttpClient bloque les formes IPv6 de transition vers des cibles privées ou réservées.
- Les URLs webhook loggées sont nettoyées de userinfo et query string.
- Le reset password révoque les tokens et sessions database existants.
Origines privées et BYOC
- Les POPs sans capability private-origin ne reçoivent plus de métadonnées d’origine privée.
- Les nodes BYOC sont rattachées à l’organisation courante et la rotation de token exige la clé actuelle.
- Les stats et messages multi-tenant évitent d’exposer des POPs, réseaux ou CIDR d’autres organisations.
Edge et supply-chain
- Le stockage public edge ne sert plus l’espace interne .metadata/.
- La sync DNS edge purge les hôtes managés hors zone au reload/sync.
- Go, dépendances PHP et images Docker edge sont mis à jour avec versions plus explicites.
Source: docs/SECURITY-AUDIT-2026-05-29.md + docs/superpowers/plans/2026-05-29-edge-node-compatibility-contract.md
- Footer console et auth relié au changelog public.
- Catalogue centralisé des versions bêta avec dates, statut, sources et détails.
- Page publique /releases avec définition de versioning et historique complet.
Versioning
- La version courante est reconstruite depuis le catalogue et retombe sur la dernière entrée si APP_VERSION est vide ou obsolète.
- Les versions précédentes restent visibles avec leur date de publication locale et leur source documentaire.
Interface
- Le badge v0.4.2 du footer devient un lien accessible vers le changelog.
- La page publique reste disponible sans authentification pour les footers des écrans de login.
Source: working tree 2026-05-29
- Branches codex consolidées dans main sans travail unique restant.
- Garde-fou permissions ajouté avec scripts de contrôle/correction et hook pre-commit.
- Contraste du layout Laravel corrigé pour les tables en mode sombre.
- Validation complète Laravel, Go, CLI, permissions et diff Git.
Exploitation
- La suite du développement repart explicitement de main.
- Les scripts de permissions protègent les fichiers suivis sans relâcher storage, cache, .env ou secrets runtime.
Validation
- Laravel: 545 tests et 3202 assertions.
- Edge-node: go test ./... validé.
- CLI: 6 suites Jest et 15 tests validés.
Source: docs/UPDATE-2026-05-26.md
- Protection dev par mot de passe et personnalisation du challenge WAF.
- Synchronisation réseau privée plus stricte entre control-plane et edge nodes.
- Webhooks customer, client HTTP sortant sûr et protections SSRF.
- Pages Organisation/Billing alignées avec le wallet pay-as-you-go.
Réseau et edge
- Policies réseau vérifiées par hash, node, profil POP et statut réel de l’applier.
- Edge-node renforcé pour WireGuard, WAF dev auth, DNS CoreDNS et redémarrages robustes.
Console
- Page CLI enrichie avec commandes, endpoints API, erreurs HTTP et notes de sécurité.
- Navigation console refactorisée avec topbar, menu horizontal et corrections mobile.
Sécurité
- Validation des URL webhooks et SEO via SafeOutboundHttpClient.
- Détails de facturation masqués aux rôles non managers.
Source: docs/UPDATE-2026-05-23.md
- WebAuthn/passkeys pour la 2FA et durcissement des tokens API.
- Coupons trafic, registrar en queue et renouvellement des domaines gérés.
- Jobs DNS/registrar visibles dans les tâches opérationnelles.
- Edge management protégé par CIDR et proxy origin durci.
Compte et admin
- Création de tokens API protégée par mot de passe courant.
- Mode admin protégé par 2FA avec gestion utilisateurs enrichie.
DNS et POPs
- Synchronisation DNS, suppression DNS et base-zone déplacées en jobs.
- Sélection des POPs actifs et probes de latence dédiées à la queue latency.
Source: docs/UPDATE-2026-05-19.md
- Organisations avec rôles, invitations et remplacement d’organisation personnelle vide.
- Support client avec tickets, réponses, notes internes et pièces jointes.
- Registrar Internet.bs, mail géré, WebDAV et stockage répliqué.
- WAF avec presets, listes pays/IP, challenge et synchronisation edge.
Produit
- Pages POP/réseau remaniées avec smart routing et probes de qualité inter-noeuds.
- Audits SEO avancés sandboxés avec débit wallet et artefacts.
Technique
- Middleware de rôle organisation sur les mutations customer.
- Nouvelles migrations pour tickets, invitations, mail, SEO, probes et codes d’invitation.
Source: docs/UPDATE-2026-05-17.md
- Structure initiale du control-plane Laravel.
- Edge-node Go et CLI séparés du control-plane.
- Site public statique et premières conventions de dépôt.
Base
- Point de départ de l’historique bêta avant les notes de mise à jour datées.
Source: commit 87c75ea