# Changelog Toutes les modifications notables sont documentées ici. Format : [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/) — versionnage [semver](https://semver.org/lang/fr/). --- ## [Unreleased] --- ## [1.3.0] - 2026-05-15 ### Ajouté - Onglet **Statistiques** dans l'admin : pages les plus visitées, livres consultés, répartition par AS (#64) - `AccessLogParser` : lecture des logs Apache (plain, `.gz`, `.tar.gz`), cache 10 min - `AsnLookup` : résolution ASN via ip-api.com (batch, cache 30 j), détection LAN automatique - Filtrage des AS par groupes configurables (motifs case-insensitive, formulaire admin) - Pattern de log configurable via l'UI (onglet Recherches) avec support glob ### Corrigé - Permissions rsync : `--chmod=Fug+rw,Fo-w` assure la lisibilité groupe sur les fichiers déployés - `saveSiteSettings()` et `saveSmtpSettings()` : retournent un `bool` et affichent une erreur si l'écriture échoue - `scripts/setup.sh` : script d'initialisation Folio (composer, répertoires, droits, migrations, groupe `adm`) --- ## [1.2.2] - 2026-05-14 ### Corrigé - URL introuvable : redirige vers la page de recherche (`/search?q=…`) au lieu du premier résultat (#61) --- ## [1.2.1] - 2026-05-14 ### Corrigé - Cache article invalidé si `index.md` est plus récent que `meta.json` (migration de contenu ne se reflétait pas) - Migration 001 : `touch(meta.json)` après écriture de `index.md` pour invalider le cache - `post_view.php` : le `# Titre` Markdown est retiré du rendu (déjà affiché par le template) - Wizard étape 1 : en-tête affiche « Modifier » sans répéter le titre de l'article - `wizard.js` : suppression de `scrollToCursor` (calcul erroné sur textarea auto-resize) ; Ctrl+Home / Ctrl+End scrollent correctement via `scrollIntoView` --- ## [1.2.0] - 2026-05-14 ### Ajouté - Wizard multi-étapes pour la création (5 écrans) et l'édition (6 écrans) d'articles (#58) - Auto-sauvegarde en brouillon (debounce 3 s) avec indicateur visible - Étape tags : champ plat avec détection automatique depuis le texte (abréviations, CamelCase, noms propres) - Étape SEO : aperçu moteur de recherche en temps réel - Étape 6 (édition) : diff ligne à ligne avant confirmation - Plan Markdown dynamique (TOC) dans la colonne droite de l'éditeur - Titre extrait du premier `# …` du contenu Markdown (plus de champ titre séparé) - Système de migrations de contenu (`scripts/migrate_content.php`) - Mode maintenance automatique (`data/.maintenance` → page HTTP 503) - Migration `001` : ajout du titre Markdown dans les articles existants - Bouton "Mettre à jour" dans l'administration (sans accès CLI) - `UpdateChecker` : détection de mise à jour et migrations en attente - Bandeau d'alerte pour les administrateurs sur toutes les pages - Dashboard `/admin` : version déployée vs version disponible ### Modifié - `ArticleManager` : +6 méthodes pour les brouillons overlay - `lineDiff` : normalisation `\r\n` → `\n`, seuil relevé à 2 000 000, fallback ligne par ligne - `push.sh` : génère `public/version.txt` (numéro de version semver) à chaque release ### Corrigé - Diff étape 6 "violent" (tout supprimé/ajouté) dû aux fins de ligne `\r\n` du navigateur --- ## [1.1.0] - 2026-05-13 ### Ajouté - **Réactions visiteurs** : boutons 👍 / 🔥 / 🤔 sous chaque article, toggle async avec fallback formulaire natif - **Commentaires avec vérification email** : code 6 chiffres, honeypot + CSRF, modération dans `/admin` - **URLs propres** : `/edit/`, `/new`, `/admin`, `/categorie/`, `/files//add`, `/import/`, etc. - **Moteur de recherche** : index trigramme+substring pré-construit, résultats scorés avec mise en évidence ### Amélioré - **Cache multi-niveaux** : chargement réduit de ~5 s à ~0,4 s sur 1 000+ articles (mémoïsation, cache disque, slug index O(1)) - **Upload fichiers** : détection et message d'erreur explicite pour les fichiers > limite PHP ### Corrigé - Métadonnées fichiers (`addFileMeta`) : guard `file_exists()` trop strict supprimé - Sidebar droite article : classe Bootstrap `flex-nowrap-lg` → `flex-lg-nowrap` - Flux RSS : exclusion catégories privées, redirection 301 `/rss` → `/feed` --- ## [1.0.0] - 2026-05-09 ### Ajouté - Moteur de blog PHP Folio — première release versionnée - Articles en Markdown avec fichiers attachés, liens externes, images de couverture - Authentification par lien magique envoyé par email (#29) - SSO via Keycloak/OIDC avec PKCE - Rôles, capacités et gestion des utilisateurs - Catégories avec swatches couleur générées algorithmiquement - Tags par type avec suggestions - SEO : canonical, `sitemap.xml`, `robots.txt`, JSON-LD, `og:image` - Avant-premières (articles futurs visibles aux utilisateurs autorisés) - Pagination curseur (sans offset SQL) - Import depuis URL (EXIF, OpenGraph, PDF) - Historique des révisions avec diff - Flux RSS (`/feed`) paginé avec autodiscovery - Formulaire de contact (CSRF, honeypot, rate-limit) - Pages légales (LCEN/RGPD), licences, à propos - Migrations SQL versionnées (`database/migrate.php`) - Système de déploiement par rsync