Änderungen & Verbesserungen

Release Notes von Structr Version 6

Sehen Sie sich die Geschichte von Structrs immer weiter wachsender Entwicklung in unseren Release Notes an. Hier finden Sie detaillierte Änderungen und Funktionsverbesserungen.

Dezember 17th 2025 Version 6.0.1

Änderungen zwischen 6.0.1 und 6.0.0

Structr 6.0.1 ist eine Wartungsversion, die wichtige Fehlerbehebungen und Verbesserungen der Dokumentation enthält.

Fehlerbehebungen

Kern
  • Flow-Ausführung: Tippfehler in der Flow-Ausführungsmethode behoben, der Ausführungsprobleme verursachen konnte
  • Docker-Konfiguration: Behebung des sed --in-place Fehlers bei in Docker eingehängten Konfigurationsdateien, der zu doppelten Einträgen und Werteverkettungen bei Container-Neustarts führte
  • URL-Pfad-Behandlung: Korrigierte URL-Pfad-Behandlung für Structr-Instanzen, die auf Nicht-Root-Pfaden laufen
  • Arbeitsverzeichnis: Arbeitsverzeichnis nach Operationen korrekt wiederhergestellt
Mehrsprachigkeit/mehrsprachige Unterstützung
  • Kontext-Sperrung: Problem mit der Kontextsperrung in geplanten Aufträgen beim Auftreten von Ausnahmen behoben
  • PolyglotFilesystem: Verschiedene kleine Fehler in PolyglotFilesystem behoben
  • Python-Unterstützung: Python-Hinweis-Anbieter hinzugefügt, um Log-Spam bei jedem Tastenanschlag zu verhindern
  • Token-Behandlung: Null-Prüfung für lastToken hinzugefügt, um mögliche Null-Zeiger-Ausnahmen zu verhindern

Erweiterungen

Benutzeroberfläche
  • Persistenz des Registerkartenstatus: Aktivierte Speicherung der aktiven Registerkarte für jedes Element mit automatischer Bereinigung von localStorage, um ein unendliches Wachstum zu verhindern
  • Navigation in der Dokumentation: Aktivierte Rückwärts-/Vorwärtsnavigation im Dokumentationsbereich
  • Anzeige der Dateiliste: Dynamisches Ausblenden von Spalten im Dateibereich je nach Breite des Ansichtsfensters für eine bessere mobile/responsive Darstellung
  • Typvererbung: Für überschriebene Builtin-Typen werden die vererbten Eigenschaften auf der entsprechenden Registerkarte angezeigt.
Handhabung von Dateien
  • Direktes Schreiben in Dateien: Unterstützung für direktes Schreiben in einen Dateiknoten anstelle von nur OutputStream hinzugefügt
Berechtigungen
  • Video-Dateien: Weitergabe von Berechtigungen für die POSTER_IMAGE-Beziehung zwischen VideoFile und Image hinzugefügt, Beziehungsendpunkte festgelegt

Dokumentation

Neue Dokumentation
  • Volltextsuche: Umfassende Dokumentation und Beispiele für die Funktion searchFulltext() hinzugefügt
  • Virtuelle Typen: Weitere Informationen zur Dokumentation der virtuellen Typen hinzugefügt
  • Mail-Vorlagen: Verbesserte Dokumentation der Mailvorlagen mit zusätzlichen Details
  • Migrationsanleitung: Einträge zum Migrationsleitfaden für Version 6.0 hinzugefügt
Verbesserungen der Dokumentation
  • Funktionssignaturen: Aktualisierte Signaturen für die Funktionen sendPlaintextMail(), functionInfo(), und error()
  • Code-Beispiele: mult() Beispiel in der Code-Dokumentation korrigiert
  • Dokumentation zur Verwendung: Kleine Korrektur in der Dokumentation zur Verwendung von find.contains()
  • Abschnitt Methoden: Aktualisierter Abschnitt über Methoden
  • Mail-Vorlagen-Namen: Namen von Mail-Vorlagen korrigiert (Unterstriche wurden als Markdown interpretiert)
  • Organisation der Version: Veraltete Dokumentation in einen Unterabschnitt „Ältere Versionen“ verschoben
  • Kapitel Referenzen: Aktualisierte Markdown-Dateien für das Kapitel Referenzen
  • Allgemeine Korrekturen: Verschiedene kleinere Probleme und In-Docs-Links behoben
  • Inhaltliche Aktualisierungen: Der Inhalt wurde geändert, um die Fähigkeiten von Structr besser widerzuspiegeln und die Formatierung zu verbessern.
Prüfung
  • Test Aktualisierungen: Fixierte Tests durch Hosting der Beispielseite auf structr.org
  • Funktions-Eigenschaften: Test für die Sortierung von Funktionseigenschaften hinzugefügt, einige Probleme in FunctionProperty behoben

Qualität des Lebens

Code Qualität
  • Protokollierung: Verbesserte Protokollierung und Aktivierung der nativen Protokollierungsausgabe für polyglotte Kontexte
  • Fehlermeldungen: Die Fehlermeldung wurde aus Gründen der Konsistenz von „nicht vorhanden“ in „nicht gefunden“ geändert
  • Tokenisierer: Stummgeschalteter StructrScript-Tokenizer bei der Erzeugung von Hints, um Warnmeldungen im Protokoll zu vermeiden
  • Benennung: Umbenennung von „Klasse deklarieren“ in „Eigenschaft deklarieren“ zur besseren Terminologie

Hinweise zum Upgrade:

  • Dies ist eine Wartungsversion ohne wesentliche Änderungen
  • Empfohlen für alle Structr 6.0.0 Benutzer
  • Allgemeine Informationen zum Upgrade von Structr 6.0 finden Sie im Migrationsleitfaden.

Dezember 8th 2025 Version 6.0.0

Änderungen zwischen 6.0.0 und 5.2.1

Übersicht

Structr 6.0.0 ist ein Major Release, das eine komplette Überarbeitung der Architektur mit dem neuen Traits System, die Migration auf GraalVM 25 / JDK 24, Jetty 12, signifikante Leistungsverbesserungen und eine modernisierte Benutzeroberfläche beinhaltet. Diese Version enthält Änderungen, die eine Migration bestehender Anwendungen erfordern.

Wechselnde Änderungen

Architektur
  • Traits-System: Vollständige Überarbeitung des Typsystems unter Verwendung von Traits anstelle von Java-Klassenvererbung. Dynamische Schemaklassen sind jetzt statischer Java-Code mit Trait-basierter Komposition.
  • Statische Schema-Migration: Die meisten dynamischen Schemaklassen wurden zurück in statischen Java-Code verschoben
  • Dynamische Java-Code-Generierung entfernt: NodeExtender und zugehörige Klassen entfernt
Entfernte Merkmale
  • GraphQL-Unterstützung: Vollständig entfernt (basierte auf veraltetem graphql-java v12)
  • Inhaltsbereich: Vollständig gestrichen (ContentItem, ContentContainer)
  • Crawler-Modul: Entfernt
  • Arbeitsgruppen: Entfernt
  • Editiermodus-Bindung: Veraltete Edit-Mode-Bindung zugunsten von Event Action Mapping entfernt
  • Windows-Unterstützung: Entfernte Windows-bezogene Skripte und start.cmd
  • R-Integration: Entfernte R-Referenzen (nicht in Graal verfügbar)
Entfernte Funktionen und Eigenschaften
  • batch() Funktion entfernt (stattdessen doInNewTransaction() verwenden)
  • keys() und values() Funktionen entfernt ( Object.keys() und Object.values() verwenden)
  • slice() Ausdruck aus StructrScript entfernt
  • validate_email() Funktion entfernt ( is_valid_email() verwenden)
  • restQuery Eigenschaft von DOMNode entfernt ( functionQuery verwenden)
  • debug() Funktion entfernt
  • includeAsJavaScript Attribut für entfernte Dateien
  • includeJs Funktion entfernt (tatsächliche JavaScript-Importe verwenden)
  • xpathQuery, hideOnIndex, hideOnDetail, renderDetails Eigenschaften entfernt
API-Änderungen
  • Alle eingebauten Funktionen wurden in camelCase umbenannt (Abwärtskompatibilitätskonvertierung vorgesehen)
  • Ressourcenzugriff „grants“ umbenannt in „permissions“.
  • Behandlung von Methodenparametern für REST-Aufrufe geändert
  • set() Funktion: dritter Call-Style entfernt
Konfiguration
  • memory.config umbenannt in memory.conf (graceful fallback mit deprecation warning)
  • Standard-Upload-Ordner geändert in /._structr_uploads
  • Einstellungen für anonyme Deployment-Servlets wurden entfernt
  • Die Einstellung force-arrays wurde entfernt.

Wichtige neue Funktionen

Eigenschaften System
  • Vollständige Neuschreibung des Typensystems mit Hilfe der trait-basierten Komposition
  • Unterstützung der Mehrfachvererbung durch Traits
  • Verbesserte Flexibilität und Erweiterbarkeit des Schemas
  • Dienst-Klassen: Neues Konzept für zustandslose Diensttypen, die nicht instanziiert werden können
Integrierte Dokumentation
  • Integriertes Dokumentationssystem mit durchsuchbarem Inhalt
  • Inline-Dokumentation für alle eingebauten Funktionen
  • Dokumentation für Systemtypen, Lebenszyklusmethoden und Dienste
  • Hinweise zur automatischen Vervollständigung aus der Dokumentation der Systemtypen
  • Tastaturkürzel Ctrl+K für die Suche in der Dokumentation
Erweiterungen der Ereignis-Aktionszuordnung
  • Flow (FlowContainer) Selektor im EAM-Dialog
  • Bestätigungsdialogfunktion für die Ereigniszuordnung
  • Unterstützung der Zwei-Faktor-Authentifizierung
  • Unterstützung von benutzerdefinierten Ereignisnamen
  • CSS-Klasse structr-action-running wird bei der Ausführung der Aktion automatisch hinzugefügt
  • Ereignisse structr-action-started und structr-action-finished, die auf Trigger-Elemente ausgelöst werden
Seitenpfade und URL-Routing
  • Dynamische Pfade für Seiten (PagePath Objekte)
  • URL-Routing-Dialog in der Benutzeroberfläche
  • Methoden, die über konfigurierbare HTTP-Verben (GET, POST, usw.) aufgerufen werden können
  • Unterstützung privater Methoden
Volltextsuche
  • Neue Volltextindizierung mit Neo4j-Volltextindizes
  • searchFulltext() und searchRelationshipsFulltext() Funktionen
  • Volltextsuche UI im Dateibereich mit Kontextanzeige
Benutzerdefinierte Funktionen
  • Globale Schemamethoden umbenannt in „benutzerdefinierte Funktionen“.
  • Statische Methoden über Cron aufrufbar
  • Funktionssignaturen mit Unterstützung der Methodenüberladung
  • functionInfo() eingebaute Funktion für die Introspektion von Methoden
Neue eingebaute Funktionen
  • login() – Programmatisch einen Benutzer anmelden
  • is_valid_uuid() – UUID-Format validieren
  • is_valid_email() – E-Mail-Prüfung
  • createFolderPath() – Erstellen von Ordnerhierarchien
  • searchFulltext() / searchRelationshipsFulltext() – Volltextsuche
  • rollbackTransaction() – Manuelles Rollback von Transaktionen
  • addLabels() / removeLabels() – Neo4j Etikettenverwaltung
  • set_log_level() – Konfiguration der Laufzeitprotokollebene
  • functionInfo() – Informationen zur Methode abrufen
Leistungsverbesserungen
  • Transaktionsbasiertes Caching mit Prefetching ersetzt den globalen Knoten-Cache
  • Optimierte HTML/DOM-Rendering-Leistung
  • Verbessertes Prefetching für die Benutzerauthentifizierung und die Weitergabe von Berechtigungen
  • Bessere Handhabung von Exporten großer Datenmengen
  • Optimierte Websocket-Befehle
  • Reduzierte Datenbankabfragen durch Zwischenspeicherung von benutzerdefinierten Funktionen

Erweiterungen der Sicherheit

Upload Servlet Sicherheit
  • Standard-Upload-Ordner muss nicht leer sein
  • Schreibrechte erforderlich für parent/parentId targeting
  • uploadFolderPath beschränkt auf authentifizierte Benutzer im Standardordner
  • Nicht in der Whitelist aufgeführte Eigenschaften werden beim Hochladen von Dateien blockiert
Sonstige Sicherheit
  • Schutz vor serverseitiger Anforderungsfälschung (SSRF) durch Whitelisting im HttpHelper
  • Behebung der ZIP-Slip-Schwachstelle in SyncCommand
  • Aktualisierte Funktionen encrypt()/decrypt() zur Verwendung eines sichereren Modus
  • Leseschutz für Konfigurationsschlüssel, die Geheimnisse enthalten
  • Bouncycastle aktualisiert auf 1.81

Verbesserungen der Benutzeroberfläche

Schema-Editor
  • Schwenk- und Zoomfunktion (Mausrad, Ziehen mit der mittleren Maus)
  • Pfeile der Merkmalsvererbung angezeigt
  • Eingebaute Typen und Beziehungen sichtbar
  • Verbesserte Knotenauswahl und -bewegung
  • Funktion zum Speichern/Wiederherstellen des Layouts
  • „Ausgewählte Typen ausblenden“ Funktionalität
Code Bereich
  • Code-Navigation / „Zur Definition“
  • Verbesserungen im Bulk-Editiermodus
  • Methodenparameter im Ausführungsdialog
  • Verwendungsbeispiele mit Kopierschaltflächen
  • Monaco-Editor-Einstellungen (automatisch schließende Klammern/Anführungszeichen, automatische Umrandung)
  • Anpassbare Monospace-Schriftart/Größe
Dashboard
  • Anzeige der HTTP-Anforderungsstatistik
  • Verfügbare Prozessoren und Speicherinformationen
  • Einrichtungsassistent
  • Verbesserte vis.js-Integration mit Ziehen/Zoomen
  • Aktualisierungsmeldungen für Skriptaufträge
Abschnitt Daten
  • Verbesserte Behandlung von Array-Typen in Erstellungs-/Bearbeitungsdialogen
  • Verbesserungen bei der Auswahl von Datum und Uhrzeit
  • ZonedDateTime-Unterstützung
  • Bessere Handhabung von großen Array-Attributen
  • Persistenz der Spaltensortierung
Allgemeine UI
  • Benachrichtigungssystem mit Glockensymbol und Nachrichtenanzahl
  • Benutzereinstellungen für das automatische Entfernen von zeitlich begrenzten Benachrichtigungen
  • SSO-Anmeldeschaltflächen im Anmeldedialog
  • Konfigurierbares Zurücksetzen der UI-Einstellungen
  • Verbesserte Popup-Dialoge (rasterbasiertes Layout)
  • Benutzerdefinierte Bestätigungsdialoge

Aktualisierungen von Abhängigkeiten

Laufzeit
  • GraalVM: Aktualisiert auf Version 25.0.0 / JDK 24
  • Jetty: Migriert zu Jetty 12
  • Neo4j: Unterstützung für Neo4j 2025
Bibliotheken
  • Apache Commons Lang3: 3.18.0
  • Apache Commons Compress: Sicherheitsupdate
  • Logback: 1.5.20
  • Bouncycastle: 1.81
  • Geotools: 32.4
  • vis.js: Neueste Version
  • Monaco Editor: 0.51
  • Verschiedene andere Aktualisierungen von Abhängigkeiten für Sicherheit und Kompatibilität

Änderungen der Konfiguration

Neue Einstellungen
  • structr.conf Einstellungen für Heap und Zeitzonen-Konfiguration
  • E-Mail-Validierungs-Regex konfigurierbar
  • Konfiguration des passiven FTP-Modus-Portbereichs
  • exec()/exec_binary() Konfiguration der Befehlsprotokollierung
  • Automatisch schließende Klammern/Anführungszeichen für den Monaco-Editor
  • Standardkonfiguration der Protokollierungsebene
  • UUID-Format-Einstellungen (kompakt/gestrichelt/beide)
Entfernte Einstellungen
  • GraphQL-Servlet-Konfiguration
  • Ältere OAuth-Klassen
  • Einsatzservlet anonymer Zugriff
  • Verschiedene veraltete Einstellungen

Bemerkenswerte Fehlerbehebungen

  • Speicherleck in Skripting-Kontexten behoben
  • Probleme mit der Sitzungszeitüberschreitung behoben
  • Die Erzeugung von Miniaturansichten für Bilder mit Alphakanal wurde korrigiert
  • Leistung der Abfrage zur Erlaubnisausbreitung korrigiert
  • Timing der Websocket-Initialisierung korrigiert
  • Auflösung der kreisförmigen Gruppenhierarchie behoben
  • Implementierung des kaskadierenden Löschens korrigiert
  • Behobene LDAP-Gruppenkonfiguration
  • Behobener Export/Import von Deployments für verschiedene Randfälle
  • Probleme bei der Wiederherstellung von Dateien im Stil von Ransomware behoben
  • Probleme bei der E-Mail-Konfiguration behoben

Leitfaden zur Migration

Vor dem Upgrading
  1. Sichern Sie Ihre Datenbank und Verteilungsexporte
  2. Überprüfen Sie die oben genannten Änderungen.
  3. Testen Sie zunächst in einer Staging-Umgebung
Änderungen von Funktionsnamen

Alle eingebauten Funktionen verwenden jetzt camelCase. Eine Abwärtskompatibilitätsschicht ist vorhanden, aber Sie sollten Ihren Code aktualisieren:

// Old (deprecated)
get_or_create(...)
to_json(...)

// New
getOrCreate(...)
toJson(...)
restQuery-Migration

Die restQuery Eigenschaft wurde entfernt. Migrieren Sie zu functionQuery:

// Old
$.restQuery('/api/users')

// New  
$.functionQuery('find', 'User')
Eigenschaften System

Benutzerdefinierte Typen verwenden jetzt Traits. Die Migration erfolgt automatisch, aber überprüfen Sie Ihr Schema nach dem Upgrade auf etwaige Probleme mit:

  • Mehrfache Vererbung
  • Abstrakte Eigenschaften
  • Überschreibung von Methoden
Konfigurationsdatei

Umbenennen memory.config zu memory.conf um Warnungen vor Veralterung zu vermeiden.

Dokumentation

Das integrierte Dokumentationssystem bietet einen umfassenden Überblick über:

  • Alle eingebauten Funktionen mit Beispielen
  • Systemtypen und ihre Eigenschaften
  • Lebenszyklus-Methoden
  • Dienste und Konfiguration
  • Migrationshinweise für 6.x

Zugang über Ctrl+K in der Structr UI oder das Dokumentationssymbol.

Mitwirkende

Vielen Dank an alle, die diese Version durch Codebeiträge, Fehlerberichte und Dokumentationsverbesserungen möglich gemacht haben.

Vollständiger Changelog

Die vollständige Liste der fast 1.600 Übertragungen zwischen 5.2.1 und 6.0.0 finden Sie im Git-Log oder in der Vergleichsansicht von GitHub.