TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_8.0.0-alpha7
  4. #28694

8.0.0-alpha7
TopLogic Release

2026-07-30

enhancement

critical
#29088
Model-based access rights
#29108
Lightweight UI definition layer (TL Views) based on React UI-Components
major
#28694
Beschreibung von Modellteilen als formatierter Text (Rich Text)
#28708
Standard-Selektion in (Baum-)Tabellen und Grids per TL-Script berechenbar machen
#29102
Add com.top_logic.layout.react module for React/SSE integration
#29221
Automatische Bestimmung möglicher Berechtigungskonfigurationen
#29349
XML-Parse-Funktionen für TL-Script über XMLImporter
#29374
TL-Script: gzip()
#29389
Code-Completion für Variablen ($) im TL-Script-Editor
#29396
Conversation display for TL Views: object-list element, file chips, card panels
#29399
Info-Service-Meldungen: unten statt oben anzeigen und beim Überfahren mit der Maus fixieren
#29400
Introduce a first-class application "operation mode" service (OperationMode enum + ApplicationModeService)
minor
#29085
Neu einloggen bei Session Timeout anstatt Redirect zur Login-Seite
#29089
TL-Script-Funktionen log() und info() um wählbaren Meldungs-Level (INFO, WARN, ERROR) erweitern
#29195
Probleme mit HTML-Attributen und TL-Script
#29306
TL Script: dateFormat() should accept an explicit timezone to format Calendar values losslessly
#29382
Expose a public classpath-driven Workspace.getAppPaths overload
#29385
App archetype should scaffold a standard git-ignored local-credentials overlay (tl_config) by default
#29392
Transaktionsabbruch bei Nicht-2xx Response
#29398
Login-Maske: Statt "Name" besser "Benutzername"

defect

major
#29383
Dead SOCKET_APPENDER (Chainsaw, localhost:4445) in default logging config can stall logging and abort operations under load
#29384
TL-Script resetSequence/generateSequenceId build a different sequence id than SequenceDefaultProvider (suffix/context order), so they cannot reset a provider-managed sequence with a dynamic context
#29394
Editable tables in the React UI: generalized row-set bindings for tabular editing in forms
#29410
Attribut filename der Structured-Text-Bildablage case-sensitive (binär) speichern
#29419
Understandable save failures and form validation feedback in the React view layer
minor
#28816
Referenzwertige Attribute erzeugen Fehler nur bei SingleSelection
#29359
Unsinniger Tooltip bei einigen Hauptreitern
#29360
Sporadische Fehlermeldung im Log: "mainLayout" ist null.
#29361
Invalide Datenbankdefinition für Tag
#29363
Fehlende Validierung von Dialogen bei GOTOs zu Dialogen von unsichtbaren Parents
#29380
Kontextabhängige Auto-Nummerierung schlägt fehl, wenn Kontext und nummeriertes Objekt in einer Transaktion erzeugt werden
#29381
Doppelklick in Grafikkomponente funktioniert nicht zuverlässig
#29390
Teilbaum-Auswahl endet zu früh, wenn die unterste Ebene vom Ebenen-Filter nicht mitgezählt wird
#29393
URL-Routing der React-View-Schicht defekt: ForwardingReactContext delegiert getRouteManager() nicht
#29401
Bilder in einem Bild-Drop-Feld können nicht über das Browser-Kontextmenü kopiert/gespeichert werden
#29402
Baum-Selektion geht bei Aktualisierung der Ansicht (invalidate) verloren
#29412
Flaky TestDynamicComponentService.testIncrementalUpdates: asserts on asynchronous WatchService event after a fixed 10ms sleep
#29416
Anzeige des Änderungslogs schlägt fehl, wenn parallel Änderungen committet werden
#29420
FlowDiagram: Fehlerfall im row-wise Sub-Grid: subGridCols=2 und subGridStartCol=1
#29426
FlowDiagram: Text in PDF-eingebettetem Diagramm ist nicht selektierbar

task

major
#29407
Security-Scan: npm-Abhängigkeiten der React-Module aktualisieren
#29408
Security-Scan: httpcore5 anheben; pdfbox-/azure-Findings bewerten
minor
#29415
Slim down the repository CLAUDE.md and consolidate developer guidance into skills and FAQ articles
enhancement

major

#28694

Beschreibung von Modellteilen als formatierter Text (Rich Text)

LayoutFrameworkMigrationModelSystem

Attribute (und ebenso Typen und Module) können im Modell-Editor mit einer Beschreibung versehen werden. Diese Beschreibung wird als Tooltip angezeigt — im Modell-Editor, als Tooltip des Feld-Labels in Formularen von Instanzen und als Tooltip einer Tabellen-Spaltenüberschrift.

Tooltips sind HTML. Die Beschreibung war jedoch ein reines Mehrzeilen-Textfeld und wurde unverändert in das Tooltip-HTML eingesetzt. Enthielt sie XML-Sonderzeichen (z. B. <`, `>, &):

so entstand ungültiges HTML und der Tooltip konnte überhaupt nicht mehr angezeigt werden:

Lösung

Die Beschreibung eines Modellteils ist jetzt formatierter Text und wird mit dem WYSIWYG-HTML-Editor bearbeitet. Sie wird damit bereits beim Speichern in eine gültige, sichere Form gebracht, statt bei jeder Anzeige aufbereitet werden zu müssen:

  • InternationalizedDescription, Internationalized und ScriptParameter liefern die Beschreibung als HtmlResKey. Für diesen Wert-Typ ist der bestehende HtmlResKeyEditor registriert — dieselbe Mechanik, die auch ScriptConfiguration verwendet. Die Bearbeitung erfolgt damit ohne zusätzliche Annotation und ohne Abhängigkeit auf das WYSIWYG-Modul.
  • Der Editor erzeugt gültiges HTML und prüft es beim Speichern mit SafeHTML. Als Text eingegebene Sonderzeichen werden dabei maskiert.
  • Alle Anzeigestellen setzen den gespeicherten HTML-Text unverändert ein. Damit ist auch der Tooltip der Tabellen-Spaltenüberschrift (Column) korrekt, ohne dass dort eigener Code nötig ist.

Zusätzlich wurde die sprachweise Ablage von Bezeichnung und Beschreibung eines Modellteils (TLMetaModelUtil) vereinheitlicht:

  • Jede Sprache wird ohne Fallback gelesen und gespeichert. Ein nur in einer Sprache eingegebener Wert wird nicht mehr in die übrigen Sprachen kopiert — wo er nicht von einer echten Übersetzung zu unterscheiden war —, sondern erst bei der Anzeige über den Ressourcen-Fallback aufgelöst.
  • Leere Übersetzungen werden gelöscht: Ein in allen Sprachen leerer Wert wird entfernt, als wäre er nie gesetzt worden.
  • Fehlende Sprachen werden nur bei aktivierter automatischer Übersetzung gefüllt, und zwar durch tatsächliches Übersetzen eines eingegebenen Wertes statt durch Kopieren.

Migration

Anwendungscode: Beschreibung ist ein `HtmlResKey`

InternationalizedDescription.getDescription() und setDescription() arbeiten mit HtmlResKey statt mit ResKey. Das gilt ebenso für die überschreibenden Deklarationen in Internationalized und ScriptParameter. Anwendungscode, der die Beschreibung eines Modellteils programmatisch setzt oder liest, muss angepasst werden:

{{{#!java // Setzen: ResKey in einen HtmlResKey verpacken. config.setDescription(new DefaultHtmlResKey(descriptionKey));

// Lesen des zugrunde liegenden ResKey. HtmlResKey description = config.getDescription(); ResKey descriptionKey = description == null ? null : ((DefaultHtmlResKey) description).content();

// Anzeige als HTML. HTMLFragment tooltip = description.getHtml(); }}}

Der Inhalt einer so gesetzten Beschreibung muss gültiges HTML sein. Reiner Text mit Sonderzeichen (<`, `>, &`) ist vorher zu maskieren (`TagUtil.encodeXML) — anders als bei der Eingabe über den Editor übernimmt das für programmatisch gesetzte Werte niemand.

Daten: keine Datenmigration erforderlich

Die Konfigurations-Bindung von HtmlResKey (DefaultHtmlResKey.ValueBinding) delegiert an ResKey.ValueBinding und verwendet damit dasselbe Speicherformat. Bereits gespeicherte Beschreibungen — auch die von ScriptParameter — werden unverändert geladen.

Bestehende Beschreibungen mit Sonderzeichen

Altbestände werden nicht automatisch umgestellt: Eine als reiner Text gespeicherte Beschreibung, die <`, `> oder & enthält, bleibt ungültiges HTML und ihr Tooltip bleibt fehlerhaft, bis sie erneut bearbeitet wird. Solche Beschreibungen sind im Modell-Editor einmal zu öffnen und neu zu speichern; der Editor überführt sie dabei in die sichere Form. Der bisherige Workaround — die Sonderzeichen in der Beschreibung manuell zu maskieren — bleibt gültig, ist aber nicht mehr nötig.

Scripted Tests

Scripted Tests, die das Beschreibungsfeld eines Modellteils befüllen oder prüfen, adressieren jetzt den strukturierten HTML-Editor statt eines einfachen Textfelds (siehe die Anpassungen an TestAttributeI18N und TestResourceAttribute).

  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login