docs: changelog v2026-05-12

This commit is contained in:
Cedric Abonnel
2026-05-12 10:13:59 +02:00
parent 2b6956fa47
commit 0bda55c803
+82 -33
View File
@@ -1,42 +1,91 @@
# Changelog
# Changelog — varlog
Toutes les modifications notables sont documentées ici.
Format : [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/)
## [Unreleased] — 2026-05-12
## [Unreleased]
### Fonctionnalités
### Fixed
- Permissions du fichier `.env` corrigées (`chown cedrix:www-data`) pour que PHP-FPM (`www-data`) puisse le lire (erreur 500)
- PHPStan : namespaces manquants `\PDOException` et `\InvalidArgumentException` dans `UserRepository` (#1)
- PHPStan : `UserRepository` instancié sans argument PDO dans `AuthService::changePassword()` (#2)
- PHPStan : `MailQueue` et `MailService` injectent désormais un `PDO` directement au lieu d'appeler `Database::getConnection()` inexistante (#3)
- PHPStan : bootstrap `phpstan-bootstrap.php` ajouté pour définir `BASE_PATH` lors de l'analyse statique (#4)
- PHPStan : comparaison `200 > 0` toujours vraie supprimée dans `MailService` ; `addScope()` reçoit désormais un array dans `auth.php` (#5)
- **URLs propres** : toutes les routes internes migrent vers des chemins lisibles.
Les anciennes URLs `/?action=…` restent fonctionnelles (compatibilité).
| Ancienne URL | Nouvelle URL |
|---|---|
| `/?action=edit&uuid=<u>` | `/edit/<u>` |
| `/?action=sources&uuid=<u>` | `/sources/<u>` |
| `/?action=diff&uuid=<u>&rev=<n>` | `/diff/<u>/<n>` |
| `/?action=create` | `/new` |
| `/?action=admin[&tab=<t>]` | `/admin[/<t>]` |
| `/?action=categories` | `/categories` |
| `/?action=profile` | `/profile` |
| `/?action=about\|legal\|licenses\|contact` | `/about`, `/legal`… |
| `/?action=regen_thumbs` | `/admin/regen-thumbs` |
| `/?action=add_files&uuid=<u>` | `/files/<u>/add` |
| `/?action=import_image&uuid=<u>` | `/import/<u>` |
| `/?cat=<cat>` | `/categorie/<cat>` |
| `/?cursor=<uuid>` | `/page/<uuid>` |
### Removed
- Méthode privée inutilisée `UserRepository::nullIfEmpty()` (#1)
- Chargement de la police Inter depuis `fonts.googleapis.com` remplacé par un auto-hébergement local (#7)
- Tags `<link rel="preconnect">` vers Google Fonts supprimés du layout (#7)
- **Moteur de recherche** : index trigram+substring pré-construit (`search_index.json`,
reconstruit à chaque écriture), accessible depuis la navbar.
### Added
- Police Inter auto-hébergée dans `public/assets/fonts/` (woff2, latin + latin-ext, OFL-1.1) (#7)
- Favicon SVG `public/assets/favicon.svg` aux couleurs du site (#8)
- Page `/route.php?action=licenses` listant les licences des composants tiers (Bootstrap, PHPMailer, Inter, Claude Code…)
- Moteur renommé **Folio** (MIT) — `LICENSE` et `public/LICENSE` ajoutés, `composer.json` mis à jour
### Corrections
### Added
- Initialisation du dépôt git sur le serveur
- Réorganisation des dossiers (`includes/``src/` et `templates/`, `docs/`, `database/`)
- Scripts de déploiement (`sync.sh`, `commit.sh`, `deploy.sh`, `sync-server-config.sh`)
- Copie locale des configs serveur Apache et PHP-FPM
- **Métadonnées fichiers (sources)** : `addFileMeta()` ne sauvegardait pas l'auteur et
l'URL source en raison d'un guard `file_exists()` trop strict — supprimé.
- **Authentification OIDC** (`State invalide.`) : `session_start()` était appelé avant
`bootstrap.php` dans les fichiers OIDC, écrasant les paramètres de cookie
(`SameSite=Lax`, `Secure`, `HttpOnly`) — corrigé dans `start.php`, `callback.php`
et `me.php`.
- **Sidebar droite de l'article** : classe Bootstrap `flex-nowrap-lg` inexistante,
remplacée par `flex-lg-nowrap` — la sidebar ne tombe plus en bas de page.
- **Date d'affichage en liste** : `created_at` affiché à la place de `published_at`
— corrigé avec fallback approprié.
- **Formulaire d'édition** : "Fichiers existants" déplacé dans la colonne de droite ;
attribution auteur/source étendue à tous les types de fichiers (pas seulement images).
- **Historique des révisions** : plus de révision créée si le contenu et le titre
sont inchangés. Ajout des boutons de suppression par révision et suppression globale.
- **Canonical URL catégorie** : passe de `/?cat=…` à `/categorie/…`.
### Chore
- `data/` retiré du suivi git et ajouté au `.gitignore` (le contenu du blog
n'a pas vocation à être versionné avec le moteur).
---
<!-- Format des entrées :
## [x.y.z] - YYYY-MM-DD
### Added — nouvelles fonctionnalités
### Changed — modifications de fonctionnalités existantes
### Fixed — corrections de bugs
### Removed — suppressions
### Security — corrections de failles
-->
## 2026-05-09
### Fonctionnalités
- **SEO** : balises canonical, `sitemap.xml`, `robots.txt`, JSON-LD (`BlogPosting` /
`WebSite`), `noindex` sur les pages d'administration.
- **Recherche** : page de résultats avec score de pertinence, mise en évidence des
termes, lien vers la catégorie depuis les résultats.
- **Support HEIC/HEIF** : conversion automatique en JPEG à l'upload.
- **Support SVG** : upload autorisé, servi avec Content-Type correct.
- **Avant-première** : article visible en liste mais verrouillé avant sa date de
publication.
- **Pagination curseur** : navigation par UUID de dernier article vu, sans offset SQL.
- **Layout article 3 colonnes** : sidebar gauche (catégorie), contenu central,
sidebar droite (pièces jointes, liens externes, articles liés).
- **Import depuis URL** : téléchargement de fichiers distants avec extraction
automatique des métadonnées (EXIF, OpenGraph, PDF).
- **Gestion des pièces jointes** dans le formulaire d'édition, avec attribution
auteur/source affichée dans la vue article.
### Corrections
- Login intégré dans `layout.php`, chemins CSS en absolu.
- Redéclaration de `url()` dans `config.php` — fatal error corrigée.
- Correction permissions `www-data` sur `data/`.
---
## 2026-04 et antérieur
- Flux RSS paginé (`/feed`, `/rss`, `/rss.xml`) avec autodiscovery.
- Stockage des articles en fichiers Markdown (migration depuis base de données).
- SSO via Keycloak/OIDC avec PKCE.
- Images de couverture (liste, vue article, `og:image`).
- Brouillons visibles uniquement par l'auteur.
- Formulaire de contact (CSRF, honeypot, rate-limit).
- Pages : mentions légales (LCEN/RGPD), licences, à propos.
- Auto-hébergement Bootstrap 5, police Inter, favicon SVG.
- Headers HTTP de sécurité, CSP stricte.