notACMS 1.2.0 — la version de l'audit
Un audit complet du code, de la sécurité et des thèmes en une seule version : ~170 correctifs, un pipeline de build consolidé, une API de thèmes documentée et quelques changements cassants assumés.
La version de l'audit
1.2.0 est le résultat d'un audit complet de notACMS — architecture, sécurité, qualité du code et les deux arborescences de templates. Environ 170 problèmes ont été corrigés. Les points forts :
Robustesse
- Un fichier markdown au frontmatter invalide ne fait plus planter une langue entière ni le build — il est ignoré et signalé avec son chemin et le détail de l'erreur.
- Un
slug:manquant ne peut plus détourner silencieusement la page d'accueil ;posts_per_page: 0ne plante plus le blog ; les URL dupliquées, les clés de répertoire ambiguës et les tags invalides produisent désormais des avertissements de build explicites. - Les brouillons et les pages planifiées sont maintenant réellement exclus des builds, des menus et de
/llms.txt— seuls les billets étaient filtrés jusqu'ici. app:build -o <dir>refuse de vider un répertoire autre que le répertoire statique configuré sans--force.- Visiter
/pl/pour la première fois ne redirige plus vers la version anglaise — l'URL est interprétée comme un choix de langue et un cookie est enregistré. Le cookie est maintenant conditionnel àSecurepour fonctionner aussi en HTTP. - Les extraits des résultats de recherche affichent désormais les surlignages comme de vraies balises
<mark>, et non comme du texte littéral<mark>. - Le
_site.yamldu thème de base contient maintenant des valeurs fictives pourcontact_form— plus d'erreur de build à la première installation.
Sécurité
- ImageMagick passe maintenant par
Symfony\Processavec des tableaux d'arguments —exec()a disparu. - Turnstile valide le hostname de la réponse par rapport à
base_urlet journalise une erreur quand les clés de test toujours-valides sont actives en production. Un contrôle au démarrage avertit siAPP_SECRETest resté le placeholder par défaut. - La sortie JSON-LD est hex-échappée (
</script>dans un titre ne peut plus s'en échapper), les catalogues de traduction ne contiennent plus de HTML, et les en-têtes de sécurité nginx s'appliquent maintenant aussi aux réponses/assets/et/media/. - L'API de contact préfixée par la langue était inaccessible dans le déploiement Docker à cause d'un bug de regex nginx — corrigé.
Pour les créateurs de thèmes
- Nouveau : THEME_BUILDING.md — le contrat complet de l'API de thèmes : contextes de templates par route, fonctions et globales Twig, l'API ContentItem et les clés de traduction que chaque thème doit définir.
#[LocalizedRoute]fonctionne maintenant danslocal/src/Controller/, le changement de langue fonctionne correctement sur les sites à 3 langues et plus, et le pipeline de build statique est décomposé en services réutilisables.
Nouveautés
- Le build statique génère désormais un fichier
/llms.txtpar langue — les billets les plus récents dans un format lisible par les LLM. Configurable viallms_limitdans_site.yaml(par défaut : 5). Le template est personnalisable par thème via le namespace Twig@base.
Changements cassants
Quelques-uns — chacun avec une migration en une ligne. directoryKey() renvoie maintenant les chemins de contenu complets (la recherche par nom de base fonctionne toujours), getTree() a été déplacé vers ContentTreeProviderInterface, blogPosting() accepte une map nommée, la clé de contexte lang_switch_url a disparu, quatre clés de traduction inutilisées ont été supprimées et le paquet old-template de la 1.0 a été retiré. Le guide complet : UPGRADE-1.2.md.