notACMS 1.2.0 — wydanie po audycie
Kompletny audyt kodu, bezpieczeństwa i szablonów w jednej wersji: ~170 poprawek, solidniejszy pipeline budowania, dokumentacja API motywów i kilka niekompatybilnych zmian.
Wydanie po audycie
1.2.0 to wynik kompletnego audytu notACMS — architektury, bezpieczeństwa, jakości kodu i obu drzew szablonów. Naprawiono około 170 problemów. Najważniejsze zmiany:
Odporność
- Plik markdown z błędnym frontmatterem nie psuje już całej wersji językowej ani nie przerywa builda — zostaje pominięty i zgłoszony ze ścieżką oraz treścią błędu.
- Brakujący
slug:nie może już po cichu zastąpić strony głównej;posts_per_page: 0nie wysypuje bloga; zduplikowane adresy URL, niejednoznaczne klucze katalogów i nieprawidłowe tagi generują teraz czytelne ostrzeżenia builda. - Szkice i zaplanowane strony są teraz naprawdę pomijane przy budowaniu, nie trafiają do menu ani do
/llms.txt— wcześniej filtrowane były tylko wpisy. app:build -o <katalog>bez flagi--forceodmówi wyczyszczenia katalogu innego niż skonfigurowany katalog statyczny.- Pierwsze wejście na
/pl/nie przekierowuje już do wersji angielskiej — adres URL jest traktowany jako wybór języka i zapisywany w cookie. Cookie jest teraz warunkowo oznaczane jakoSecure, dzięki czemu mechanizm działa też w środowiskach HTTP. - Wyniki wyszukiwania wyświetlają teraz wyróżnienia jako prawdziwe znaczniki
<mark>, a nie jako dosłowny tekst<mark>. - Bazowy
_site.yamlszablonu startowego zawiera teraz przykładowe wartościcontact_form— świeża instalacja nie kończy się już błędem builda.
Bezpieczeństwo
- ImageMagick działa teraz przez
Symfony\Processz tablicami argumentów —exec()znikło. - Turnstile weryfikuje hostname odpowiedzi względem
base_urli loguje błąd, gdy w produkcji aktywne są testowe klucze. Przy starcie sprawdzane jest też, czyAPP_SECRETnie jest wciąż placeholderem. - Output JSON-LD jest hex-escapowany (
</script>w tytule nie wyłamie ze skryptu), katalogi tłumaczeń nie zawierają już HTML-a, a nagłówki bezpieczeństwa nginx obejmują teraz też odpowiedzi/assets/i/media/. - Lokalizowane API formularza kontaktowego było nieosiągalne w deploymencie Docker przez błąd w regexie nginx — naprawione.
Dla twórców motywów
- Nowy THEME_BUILDING.md: pełny kontrakt API motywów — konteksty szablonów per trasa, funkcje i zmienne globalne Twig, API ContentItem oraz klucze tłumaczeń wymagane przez każdy motyw.
#[LocalizedRoute]działa teraz wlocal/src/Controller/, przełączanie języków działa poprawnie przy 3 i więcej językach, a pipeline budowania statycznego został rozbity na wielokrotnie używalne serwisy.
Nowości
- Build statyczny generuje teraz plik
/llms.txtdla każdej wersji językowej — lista najnowszych wpisów w formacie czytelnym dla modeli językowych. Konfigurowane przezllms_limitw_site.yaml(domyślnie: 5). Szablon jest nadpisywalny per-motyw przez przestrzeń nazw@baseTwig.
Breaking changes
Kilka — każda z jednolinijkową migracją. directoryKey() zwraca teraz pełną ścieżkę treści (szukanie po samej nazwie nadal działa), getTree() przeniesione do ContentTreeProviderInterface, blogPosting() przyjmuje nazwaną mapę, klucz kontekstu lang_switch_url znikł, usunięto cztery nieużywane klucze tłumaczeń, a pakiet old-template z wersji 1.0 został wycofany. Pełny przewodnik migracji: UPGRADE-1.2.md.