Aller au contenu principal

Changelog

Historique des évolutions du blog.

Correctif
  • Mise à jour de l'article **Code propre et charge cognitive**
Modification
  • Migration Astro 5 → Astro 6 : `glob()` loader, `render(entry)`, `ClientRouter`, content config dans `src/`
  • Migration Tailwind CSS 3 → Tailwind CSS 4 : `@tailwindcss/vite`, `@theme` en CSS, suppression du config JS
Ajout
  • Analytics Umami : script chargé en lazy après `window.load` pour préserver le Speed Index
Ajout
  • Recherche vocale dans la modale de recherche via la Web Speech API (Chrome, Edge, Safari)
  • Structured data JSON-LD : BlogPosting, Speakable, dateModified et WebSite schema sur la homepage pour le VSEO
Modification
  • Header : disparaît au scroll vers le bas, réapparaît au scroll vers le haut
  • Barre de progression de lecture découplée du header en élément fixe indépendant
Correctif
  • Token FCM retiré du localStorage ; désabonnement via deleteToken() côté client uniquement, sans appel serveur
  • Erreurs ElevenLabs loggées en interne, message générique retourné au client
  • Limite de 4 Ko appliquée sur les corps des requêtes POST des endpoints push
Ajout
  • Rapport d'audit de sécurité (SECURITY-REPORT.md)
Modification
  • Ping des abonnés FCM : passage de hebdomadaire (lundi) à quotidien (9h UTC)
Correctif
  • Barre de progression de lecture : exclut la section « Articles similaires » du calcul
  • Comparaison du secret PUSH_NOTIFY_SECRET en constant-time via crypto.subtle.timingSafeEqual
  • Validation des paramètres slug et date dans l'API audio avant construction des chemins R2
  • Rate limiting : 10 req/60s sur /api/push/subscribe et 20 req/60s sur /api/search
  • Headers de sécurité HTTP sur toutes les réponses API : X-Content-Type-Options, X-Frame-Options, HSTS, Referrer-Policy
Sécurité
  • Clé Firebase API vérifiée dans Firebase Console : restreinte à Cloud Messaging API et au referrer https://dumont.me
Ajout
  • Bouton notifications : affiche « ✓ Inscrit aux notifications » avec un style discret une fois abonné
  • Encart Résumé : résumé en points clés rétractable avec dégradé, déroulable au clic
  • Widget Green IT : poids de la page, énergie consommée par requête et budget carbone sur chaque article
  • Page Changelog : historique public des évolutions du blog, accessible depuis le footer
  • Nouvel article : Quand l'IA code à votre place, qui écrit les règles ? — approche Contract-First en 4 chapitres (JSON Schema, OpenAPI, Schema Registry, Data Contracts)
Modification
  • Notifications push découplées de la requête HTTP via Cloudflare Queue : POST /api/push/notify retourne 202 immédiatement, diffusion FCM en arrière-plan avec jusqu'à 3 tentatives automatiques
Correctif
  • Bannière de révision : affiche la période exacte « telle qu'elle existait du [date] au [date] »
Modification
  • robots.txt enrichi : accès accordé à Claude-User, Claude-SearchBot, ChatGPT-User, OAI-SearchBot, Googlebot, Google-Extended et Perplexity-User

Lancement

Ajout
  • Première version publique : Astro SSG, Tailwind, MDX, lecteur audio ElevenLabs, archivage des révisions sur R2, articles similaires par embeddings vectoriels (Cloudflare Vectorize + Workers AI), recherche full-text Pagefind, API Edge sur Cloudflare Workers
Expérience locale

Discuter avec le blog, depuis votre navigateur

Le modèle LFM2 350M s'exécute sur votre appareil. Environ 300 Mo sont téléchargés avec WebGPU, ou jusqu'à 515 Mo avec WASM/CPU, puis mis en cache ; vos prompts ne sont envoyés à aucun serveur.

Préparation de l'expérience…