1dbe6d8dd3
- CHANGELOG.md : structure semver (1.0.0 / 1.1.0 / 1.2.0) remplace le journal non versionné - public/version.txt : généré à chaque push depuis la première entrée CHANGELOG - scripts/push.sh : extrait la version CHANGELOG avant git add - src/UpdateChecker.php : compare version déployée vs version Gitea (raw file), cache 1 h - templates/layout.php : bandeau alerte admin (nouvelle version / migrations en attente) - templates/admin.php : dashboard moteur Folio (version déployée / disponible) - scripts/migrate_content.php + migration_001 : ajout # titre dans les articles existants - templates/maintenance.php : page HTTP 503 pendant une migration - src/helpers.php : extractMarkdownTitle(), normalisation \r\n dans lineDiff() - templates/wizard/step1.php : suppression champ titre, plan TOC dynamique - public/assets/js/wizard.js : scope titleEl, scrollToCursor, buildToc, handlers externalisés Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
79 lines
3.5 KiB
Markdown
79 lines
3.5 KiB
Markdown
# 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.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-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
|