Files
folio/CHANGELOG.md
T

7.0 KiB

Changelog

Toutes les modifications notables sont documentées ici. Format : Keep a Changelog — versionnage semver.


[Unreleased]


[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 git origin correspond à FOLIO_REPO_URL avant tout git 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_branch dans site_settings.json)
  • APP_TIMEZONE : fuseau horaire configurable via .env (défaut Europe/Paris), appliqué globalement dans bootstrap.php

Corrigé

  • Bouton « Vérifier » masqué avec message explicatif si FOLIO_REPO_URL n'est pas configuré (ni dans .env ni dans l'admin)
  • FOLIO_REPO_URL et FOLIO_UPDATE_BRANCH documentés dans .env.example
  • scripts/push.sh : ne pousse plus directement sur main — 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 /data hors 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…) sauf autosave — no-op silencieux si DATA_PATH n'est pas un dépôt git
  • Admin — Moteur Folio : affiche la branche suivie pour les mises à jour (FOLIO_UPDATE_BRANCH, défaut main), 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 via FOLIO_UPDATE_BRANCH (plus de main hardcodé 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 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/<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) : guard file_exists() trop strict supprimé
  • Sidebar droite article : classe Bootstrap flex-nowrap-lgflex-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