TYPO3 Release 13.4.20
In der Reihe TYPO3 Release-Notizen beleuchten wir regelmäßig die wichtigsten Bug-Fixes/Security-Issues oder wichtigen Änderungen in einem neuen Patchlevel-Release. Diese Releases sind gemäß Roadmap bereits terminiert und erscheinen grob einmal im Monat.
Bugs haben je nach Projekt unterschiedliche Auswirkungen. Was in einem Projekt kritisch ist, kann in einem anderen kaum eine Rolle spielen. Unsere Gewichtung ist daher subjektiv und soll die Relevanz anderer Fixes nicht herabspielen.
Aktuelles Release
Das aktuelle Release ist ein Maintenance-Release.
Drei wichtige Performance-Verbesserungen für das Backend: Scroll-Performance, Seitenbaum-Performance und keine Ressourcenerschöpfung bei langlebenden Backend-Sessions in Browser-Tabs.
Das CLI-Kommando "cleanup:localprocessedfiles" löscht nicht mehr unnötigerweise zu viele Dateien.
Zwei Anpassungen für CSP-Nonces, vor allem im Caching-Context.
Mehrere Accessibility-Anpassungen im Rahmen des Accessibility-Codesprints wurden umgesetzt.
Der Scheduler-Task zum Leeren der "sys_history" tut nun eben dies nicht mehr, um Audit-Logs und Datenkonsistenz sicherzustellen.
Einige Abhängigkeiten wurden angepasst für PHP 8.5 Kompatibilität.
Insgesamt gab es 85 Änderungen.
Regression-Bugfixes
- Sehr wichtigDas CLI Kommando "cleanup:localprocessedfiles" löscht nun nicht mehr alle Dateien (seit 13.4.19) sondern nur nicht referenzierte.
- WissenswertDie Datei-Erzeugung via ImageBuilder kann in gewissen Szenarien (Classic-Mode, absRefPrefix) einen Pfad erzeugen der zwei Slashes am Anfang enthielt ("//typo3temp") und dann von Browsern als URL falsch aufgelöst wurde.
- Falls im Extension-Manager Extensions aktiviert werden sollen, die nicht alle Abhängigkeiten erfüllen, wird die Fehlermeldung davon nun wieder korrekt ausgewertet und dargestellt
EXT:form
- Korrekte Fehlerausgabe wenn eine YAML-Form-Definition nicht gespeichert werden kann (z.B. aufgrund von fehlenden Schreibrechten)
- Die CSS-Fehlerklasse im "AdvancedPassword" Formularelement wird nun korrekt ausgewertet und markiert einen gesamten Elementblock als Fehleingabe
- Die Sortierung von Formularen im Backend kann nun alle blätterbaren Seiten berücksichtigen, nicht nur die Reihenfolge der Element auf der aktuellen Seite
TypoScript
API (Frontend / Extbase)
EXT:webhooks / EXT:reactions
EXT:indexed_search
- WissenswertNutzung der korrekten "search[sortDesc]" Variable um die auf/absteigende Sortierung korrekt zu nutzen
- Die Kürzung von indizierten Inhalten, die ungültige UTF-8 Zeichen enthalten, führt nun zu keiner PHP-Fehlermeldung mehr
Content Security Policy (CSP)
- WissenswertCSP Nonces werden korrekt ausgegeben auch wenn die Seite teilweise gecacht wurde
- WissenswertVermeidung von CSP Nonce-Headern wenn diese nicht erforderlich sind (vor allem in Caching-Situationen). Siehe Changelog-Eintrag!
Backend: UI
- Sehr wichtigDeutlich verbesserte Performance des Seitenbaums, vor allem bei vielen gleichzeitig ausgeklappten Elementen
- Sehr wichtigBehebung eines großen Memory-Leaks, das auftreten kann wenn lang-lebende Browser-Tabs keinen aktiven Login mehr haben, und in einer Endlosschleife Inhalte anfragen (sofern die "SystemInformationToolbar" aktiv ist) und lokal im DOM einhängen.
- WissenswertDie Scroll-Performance in Backend-Modulen wurde verbessert
- Das EXT:redirects-Modul nutzt kein falsches LLL-Sprachlabel mehr für die "Lösch"-Aktion
- (Accessibility-Sprint): Falls der Farbmodus-Wechsel (Dark/Light-Mode) im Browser deaktiviert ist wird das Wchseln im TYPO3-Backend auch ausgeblendet
- (Accessibility-Sprint): Kontextmenü-Positionierung korrigiert, wenn dies via Tastatur ausgelöst wurde
- (Accessibility-Sprint): Der "Live-Suche"-Button im Backend wird nun korrekt mit aria-haspopup-Label ausgezeichnet
- (Accessibility-Sprint): Aria role=alert für Login-Fehlermeldungen hinzugefügt
- (Accessibility-Sprint): Zeilenhöhe für Links im Loginfenster verbessert
- (Accessibility-Sprint): Die Spaltenköpfe im Seiten-Layout-Modul werden nun als semantische Header-Elemente ausgezeichnet
- (Accessibility-Sprint): Der Fokus-Zustand für "clearable" Input-Elemente wird nun nach Entfernung der Inhalte wiederhergestellt
- (Accessibility-Sprint): Die "Drag-and-Drop"-Elemente des Seitenbaums werden nun als aria-hidden ausgezeichnet, da sie per Tastaturbedienung nicht zur Verfügung stehen.
- (Accessibility-Sprint): Aria-Labels für den "Schließen"-Button modaler Fenster eingefügt
- (Accessibility-Sprint): Korrektur der Rahmendarstellung im Papierkorb-Modul
- (Accessibility-Sprint): Einbindung eines Aria-Labels für Optionen im Seitenbaum
- (Accessibility-Sprint): Alle Eingabefelder des Backend-Logins nutzen nun barrierefreie Labels
- (Accessibility-Sprint): Verbesserte Linkauszeichnung mit Titel-Attribut für "Weitere Optionen..." Button der Datei- und Datensatzliste
- (Accessibility-Sprint): Löschung von modalen Suchfeldinhalten mit "ESC"-Taste
- Passwort-Toggle und Capslock-Warnungsfunktion in Loginformularen funktioniert wieder (versehentlich eingeführt im Accessibility-Sprint, nicht Teil des vorherigen TYPO3-Releases)
- Modals mit "Small" Größe nutzen nun immer eine Mindestgröße
- Korrektur der "max-height" Berechnung der Höhe von Dropdownbuttons in der Buttonleiste in Backendmodulen zur vermeiden von beschnittenen Scrolleisten
- Auch Pseudo-Buttons (z.b. in Modals) lösen nun bei keyup/keydown von Enter/Space konsistent wie in Browsern gewöhnt aus
- Entfernung einer doppelten CSS-Klassenauszeichnung des Linkbrowser-Modals für "Link entfernen"
- Content-Elemente vom Typ "Shortcut" bieten nun einen Link zum Zielelement in der Backend-Elementvorschau
Backend: API
- Sehr wichtigDer Scheduler-Task zum Leeren von "sys_history" Einträgen wird nicht mehr aktiv ausgeführt. sys_history Einträge sind inzwischen wichtig für Audit-Logs und Datenkonsistenz neuerer TYPO3-Versionen und dürfen daher nicht mehr gelöscht werden!
- WissenswertDer Rechte-Check beim Löschen von Inhaltselementen einer kompletten Seite für eingeschränkte Redakteure im DataHandler wird nun anhand aller Datenbankspalten durchgeführt, statt eines eingeschränkten Sets. Somit können diese Datensätze wieder korrekt gelöscht werden.
- Der Ordner "var/transient" wird im Install-Tool Check nun als automatisch anlegbares Verzeichnis markiert
- Der Zugriffscheck auf Backend-Module wird nun rekursiv auf allen Ebenen ausgeführt, nicht nur für die ersten zwei.
- Der "SplitButton" der Button API ermöglicht nun auch dass ein "LinkButton" Element korrekt dargestellt werden kann. Zudem können nun "data" Attributen übergeben werden.
- Der FAL-Status-Report wertet nun nur noch browsable+online Storages aus, und respektiert somit das "browsable" Attribut
- Die MFA-RecoveryCodes nutzen nun einen 63-bit statt 64-bit Wert um dne PHP-Beschränkungen korrekt umzugehen
- Der User-Session Garbage-Collector nutzt nun einen vereinfachten Algorithmus zur Bestimmung der Aufräumwahrscheinlichkeit
- Vermeidung von Cache-Busting-URI-Erzeugung für Verzeichnisse (statt Dateien)
- Sicherstellung, dass die OutputCompression Middleware nur einmalig aktiv wird auch bei Request-Bubbling
- Die link.action und uri.action ViewHelper nutzen dieselben Argumentbeschreibungen
- Die link.action und uri.action ViewHelper teilen nun untereinander Code zur Vereinheitlichung, und nutzen dieselben Argumente
- Der Extbase FileSizeValidator kann nun die genutzte Einheit der Dateigröße (bytes, kilobytes, megabytes, ...) mit einer neuen Option "byteSizeUnits" steuern.
- Der SelectViewHelper nutzt nun die interne Methode zur Erkennung nicht-persistierter Extbase-Objekte statt eines redundanten Checks.
- Wenn im TCA komplette Wizard-Gruppen für neue Inhaltselemente entfernt werden kann die Sortierung der restlichen Gruppen nun korrekt ausgeführt werden
- In der Backend-Vorschau von "shortcut"-Elementen werden aufgrund von Veröffentlichungs-Zeitangaben die versteckten Relationen wieder korrekt ausgewertet (auch an an weiteren Stellen, die das GreedyDatabaseBackend nutzen)
- Die "FIRST_INSTALL" Datei kann nun in Composer-Instalationen auch im Projekt-Root angelegt werden statt nur im "public" Verzeichnis
PHP-Typfehler
- Anpassung für PHP 8.5. Kompatibilität (Aufruf von "ord()")
- Anpassung für PHP 8.5. Kompatibilität (Aufruf von "null als Array-Offset")
- Anpassung für PHP 8.5. Kompatibilität (Überarbeitete float-Auswertung für "MathUtility::canBeInterpretedAsInteger")
- Anpassung für PHP 8.5. Kompatibilität (weitere Überarbeitung von "MathUtility::canBeInterpretedAsInteger")
- Anpassung für PHP 8.5. Kompatibilität (Indexed Search Lexer, boolean Zugriff als Array)
Backend: FormEngine
- (Accessibility-Sprint): Fokus nach dem Leeren eines Datumsfeldes wird beibehalten
- Die "DocHeader"-Buttons werden nun beim Neu-Laden eines FormEngine Formulars (z.b. durch Änderung des Element-Typs) deaktiviert, um Race Conditions oder unbeabsichtigte Aktionen zu verhindern. Diese Daktivierungs-Funktion kann auch für ShortcutonButton und PhpDropDown-Buttons gezielt genutzt werden, siehe ChangeLog-Eintrag
Backend: CKEditor
Backend: EXT:workspaces
Dependencies
- Updates von mehreren Dependencies (Symfony und weitere)
- Update des Color-Pickers "alwan" mit CSS/JS-Anpassungen u.a. für Accessibility
- Update zum Icon-Set 4.4.1, das Icons mit unterschiedlicher Leserichtung (links-nach-rechts, rechts-nach-links) nutzt
- Update von phpdocumentor/reflection-docblock für PHP 8.5 Kompatibilität
