53dbce5bb0
- oidc/start.php : arrêt immédiat (500) si session_start() échoue, évite un flux OIDC condamné à l'échec silencieux (ex. session.save_path absent) - oidc/callback.php : même garde + error_log sur échec du contrôle de state pour faciliter le diagnostic (STATE absent/présent + session_id) - consignes.md : règle PHP-FPM — toujours user=www-data, pas le compte admin Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.8 KiB
7.8 KiB
Changelog
Toutes les modifications notables sont documentées ici. Format : Keep a Changelog — versionnage semver.
[Unreleased]
[1.6.2] - 2026-05-15
Corrigé
oidc/start.php: garde explicite aprèssession_start()— erreur 500 immédiate sisession.save_pathest inaccessible, évite un flux OIDC condamné à l'échec silencieuxoidc/callback.php: même garde de session ;error_logen cas d'échec du contrôle de state pour faciliter le diagnosticconsignes.md: règle ajoutée — pool PHP-FPM avecuser = www-data, pas le compte admin personnel
[1.6.1] - 2026-05-15
Corrigé
login/index.php,login/magic.php,logout.php: ordre de chargement corrigé (config.phpavantbootstrap.php) pour queSESSION_NAMEsoit défini avantsession_start()data/site/retiré du suivi git du moteur (contenu site-spécifique) ;.gitignoremis à jour
[1.6.0] - 2026-05-15
Ajouté
- Admin → Dashboard : bouton unique Mettre à jour (git pull + migrations SQL + migrations contenu) remplace les boutons séparés
- Branche
dev: branche d'intégration permanente pour le développement quotidien
Corrigé
run_engine_update: vérifie que le remote gitorigincorrespond àFOLIO_REPO_URLavant toutgit pull(évite le pull sur le mauvais dépôt)
[1.5.0] - 2026-05-15
Ajouté
- Admin → Site : configuration de l'URL du dépôt Folio et de la branche suivie pour les mises à jour, sans modifier le
.env(folio_repo_url,folio_update_branchdanssite_settings.json) APP_TIMEZONE: fuseau horaire configurable via.env(défautEurope/Paris), appliqué globalement dansbootstrap.php
Corrigé
- Bouton « Vérifier » masqué avec message explicatif si
FOLIO_REPO_URLn'est pas configuré (ni dans.envni dans l'admin) FOLIO_REPO_URLetFOLIO_UPDATE_BRANCHdocumentés dans.env.examplescripts/push.sh: ne pousse plus directement surmain— pousse sur la branche courante pour forcer le passage par une PR
[1.4.0] - 2026-05-15
Ajouté
DATA_PATH: chemin des articles configurable via.env, indépendant du document root — permet de stocker/datahors de l'arborescence web (ex./srv/data/folio)DataGit: auto-commit git sur toutes les écritures articles et livres (création, modification, suppression, métadonnées, tags, fichiers, liens…) saufautosave— no-op silencieux siDATA_PATHn'est pas un dépôt git- Admin — Moteur Folio : affiche la branche suivie pour les mises à jour (
FOLIO_UPDATE_BRANCH, défautmain), la date du dernier contrôle, et un bouton Vérifier pour forcer la vérification sans attendre le TTL du cache (1 h)
Modifié
UpdateChecker: branche cible configurable viaFOLIO_UPDATE_BRANCH(plus demainhardcodé dans l'URL Gitea)
[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 minAsnLookup: 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-wassure la lisibilité groupe sur les fichiers déployés saveSiteSettings()etsaveSmtpSettings(): retournent unboolet affichent une erreur si l'écriture échouescripts/setup.sh: script d'initialisation Folio (composer, répertoires, droits, migrations, groupeadm)
[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.mdest plus récent quemeta.json(migration de contenu ne se reflétait pas) - Migration 001 :
touch(meta.json)après écriture deindex.mdpour invalider le cache post_view.php: le# TitreMarkdown 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 descrollToCursor(calcul erroné sur textarea auto-resize) ; Ctrl+Home / Ctrl+End scrollent correctement viascrollIntoView
[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)
- Mode maintenance automatique (
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 overlaylineDiff: normalisation\r\n→\n, seuil relevé à 2 000 000, fallback ligne par lignepush.sh: génèrepublic/version.txt(numéro de version semver) à chaque release
Corrigé
- Diff étape 6 "violent" (tout supprimé/ajouté) dû aux fins de ligne
\r\ndu 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/<u>,/new,/admin,/categorie/<cat>,/files/<u>/add,/import/<u>, 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) : guardfile_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