Changelog public

Versions CDN.PIZZA

Version courante v0.8.0 publiée le 2 août 2026. Ce changelog reprend les notes locales du dépôt et donne une lecture cohérente des versions bêta publiques.

Changelog complet

v0.8.0 Actuelle

Stabilité, restauration et santé d’exploitation

Dernière étape avant la version stable : la restauration est bornée et vérifiable, le runtime Laravel contrôle réellement ses dépendances, les workers et le scheduler publient une santé fiable, et les entrées de build critiques sont verrouillées.

  • 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
v0.7.12 Publiée

Monitoring domaine, changements DNS et tâches fiables

Release de fiabilité produit et exploitation: les changements DNS deviennent révisables et atomiques, le monitoring domaine couvre tout le cycle checks/incidents/maintenances/notifications/pages publiques, et les tâches, workers et déploiements POP reflètent enfin leur état réel sans rester bloqués artificiellement en attente.

  • 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
v0.7.11 Publiée

Réseaux privés, DNS public et garde automatique

Patch d’exploitation: les services privés synchronisent automatiquement leurs POPs VPN, le garde private-origins vérifie et répare DNS/policy toutes les 5 minutes, le DNS est poussé vers les nameservers publics réellement servis, les POPs privés obsolètes sont filtrés, le DNS système retire les AAAA proxy non garanties, et le CLI évite les AAAA publiques non joignables.

  • 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
v0.7.10 Publiée

Publication globale, site public et polish console

Release de publication: le train récent est poussé ensemble avec le site public généré depuis website-src, l’attribution signup minimale, le polish Sécurité et accès, et les notes complètes des lots CLI, CDN, réseaux privés et edge DNS.

  • 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
v0.7.9 Publiée

Analytics domaine, cockpit CDN et réseau privé guidé

Patch produit et exploitation: la console domaine gagne une analytics période-aware avec revue de configuration, le pilotage CDN sort du DNS, les réseaux privés deviennent guidés/éditables, et les nodes/edges durcissent leur santé et leur synchronisation CoreDNS.

  • 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
v0.7.8 Publiée

CLI 1.0.4 et référence API

Patch développeur: le CLI 1.0.4 ajoute les commandes fichiers, billing, réseau privé et status-agent attendues, durcit les garde-fous d’exploitation et aligne la page console CLI/API avec le package publié.

  • 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
v0.7.7 Publiée

Quarantaine POP par origine

Patch d’exploitation: les POPs qui cassent une origine précise sont désormais mis en quarantaine uniquement pour la zone concernée, sans drainer tout le POP, avec probes automatiques et resynchronisation DNS.

  • 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
v0.7.6 Publiée

Status domaine, ping monitors et edge reload

Patch correctif: les pages status par domaine routent correctement via le host canonique, les POPs edge valident le reload CoreDNS avant de publier les métadonnées d’origine, et les monitors publics gagnent un check Ping ICMP.

  • 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
v0.7.5 Publiée

Onboarding DNS, registrar géré et durcissement

Patch d’exploitation et de sécurité: import DNS depuis un export zone file, DNSSEC registrar automatisé pour les domaines gérés cdn.pizza, routage DNS/SSL plus robuste, Partner POP post-approbation corrigé et site public mieux indexable.

  • 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
v0.7.4 Publiée

Promotion publique et SSL système

Patch de promotion bêta publique: messages d’inscription alignés sur une bêta ouverte, site public multilingue pointé vers les bons parcours panel et SSL système renforcé.

  • 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
v0.7.3 Publiée

Préparation bêta publique et sécurité navigateur

Patch de préparation bêta: headers navigateur centralisés, sessions durcies, actions admin nodes mieux contrôlées et données publiques plus cohérentes pendant le rollout.

  • 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
v0.7.2 Publiée

Clarté Sponsor POP et parcours panel

Patch de clarté Partner/Sponsor POP: ressources et portée réseau explicites, parcours sponsor ramené dans le panel et rendu status plus stable.

  • 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
v0.7.1 Publiée

Certification Partner POP automatisée

Patch Partner POP: certification automatisée, état admin/API plus visible et publication contrôlée des POPs partenaires dans les données publiques.

  • 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
v0.7.0 Publiée

Status domaine, DNSSEC et mails localisés

Nouvelle surface produit et durcissement bêta: chaque domaine peut publier sa page de status, lancer des monitors, enrôler un agent léger, activer DNSSEC sur les zones NS, recevoir les notifications/mails dans sa langue et exploiter une console WAF/SSL plus explicite.

  • 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
v0.6.2 Publiée

Préparation console bêta et cache CDN

Version de préparation bêta: console plus testée, navigation simplifiée, cache HTTP edge configurable par domaine et interface DNS clarifiée pour comprendre ce qui passe réellement par le CDN.

  • 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
v0.6.1 Publiée

Clarté WAF et mode Surveillance

Patch de clarté WAF: la console distingue l’action configurée de l’effet réel, et l’edge applique une sémantique Surveillance cohérente pour le filtrage pays.

  • 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
v0.6.0 Publiée

Préparation de la bêta publique

Version de préparation à la bêta publique: site public complet, vraie vitrine de la console, réseau live plus crédible, branding cdn.pizza et données publiques alignées avec le produit réel.

  • 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
v0.5.3 Publiée

Sécurité des dépôts Payrexx

Patch sécurité billing: les webhooks Payrexx ne créditent un wallet que si la transaction confirmée correspond au dépôt local attendu.

  • 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
v0.5.2 Publiée

Durcissement ACL, billing et déploiements

Patch de préparation développement: enforcement ACL default-deny, cohérence billing, sécurité dépendances et hygiène de déploiement.

  • 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
v0.5.1 Publiée

Confirmations panel et alertes intégrées

Patch UI/sécurité: les confirmations destructives et alertes du panel ne dépendent plus des popups navigateur désactivables.

  • 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
v0.5.0 Publiée

Sécurité, compatibilité edge et origines privées

Lot courant de durcissement et compatibilité: audit sécurité, contrat de build edge, gate des origines privées et visibilité admin des versions nodes.

  • 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
v0.4.2 Publiée

Changelog public et footer de version

Version de cohérence pour rendre le numéro du footer cliquable et documenter tout l’historique bêta.

  • 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
v0.4.1 Publiée

Consolidation du socle de release

Consolidation de main après les branches agent, garde-fou de permissions et validation complète du lot publié.

  • 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
v0.4.0 Publiée

Console, edge et sécurité

Grand lot console/control-plane/edge: WAF, réseau privé, DNS, webhooks, CLI et facturation pay-as-you-go.

  • 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
v0.3.0 Publiée

Patch plateforme et sécurité compte

Patch plateforme autour de l’authentification, du registrar, du DNS, du routage POP et du durcissement edge.

  • 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
v0.2.0 Publiée

Socle produit privé

Première consolidation applicative large: organisations, support, registrar, mail, fichiers, WAF et POPs.

  • 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
v0.1.0-beta Base

Import initial cdn.pizza

Base Laravel/control-plane, edge-node Go, CLI et site public importés dans le dépôt.

  • 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