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

8.0.0-alpha8
TopLogic Release

2026-09-01

enhancement

major
#29404
Declarative " <switch>" view element for input-dependent detail views
#29425
Nicht-binäre String-Spalten datenbankunabhängig case-insensitive (Collation)
#29430
Complete the headless agent / script interface of the React view layer
#29447
Nacharbeiten zu #29088: Modellbasierte Zugriffsrechte
#29448
React: Verbesserungen der Tabellen im React-Layout
#29449
QueryExecutor sichert das Ergebnis einer Skriptausführung ab
minor
#29434
PrettyPrint für Workflow-Exporte
#29445
Kommandogruppen in den Rollenprofilen stabil sortieren
#29458
Self-Service: Einmal gesendete Mail kann nicht noch einmal gesendet werden
#29464
Default-Spalten in der Instanzensicht im Modell-Editor
#29480
Login vor geplantem Wartungsmodus
#29484
Beschreibungen (Tooltips) für die Modellelemente der tl-engine

defect

critical
#29465
React form: <size-constraint> without an upper bound rejects every non-empty text
#29468
A form's editing buffer is not a TLFormObjectBase, so identity-based constraints reject every edit
major
#29446
React: Zustand einer Seite über einen Reload hinweg erhalten
#29460
IllegalStateException "Control has no id!" beim Öffnen eines Dialogs bei offenem Popup-Dialog
#29492
Spalte LAYOUT_KEY zu kurz in TEMPLATE_LAYOUTS und LAYOUT_CONFIGURATIONS
#29493
Unnötige Datenbankabfragen bei Löschung von Objekten für historische Referenzen.
minor
#29423
Umgang mit Nutzernamen
#29427
ReactSplitPanelControl propagiert attach/detach nicht an seine Panes
#29456
Option "Zeilenobjekte verwenden" liefert GridTreeTableNodes anstatt Fachobjekte in Tabellenkonfiguration
#29457
Einheitliche Namen für Applikations-Logos
#29461
CommandDispatcher soll Gültigkeit des Ziel-Modells des Kommandos prüfen

update

critical
#29454
Update dependency org.jsoup:jsoup to v1.23.1 [SECURITY]
#29470
Update dependency org.apache.httpcomponents.client5:httpclient5 to v5.6.3 [SECURITY]
defect

critical

#29465

React form: <size-constraint> without an upper bound rejects every non-empty text

Migration

An attribute annotated with a bare <size-constraint> cannot be given any value in a React form. Every non-empty text is reported as too long (maximum length: -1). Affects 8.0.0-alpha7 as a blocker for React forms. Root cause: TLSize.NO_UPPER_BOUND (Long.MAX_VALUE) truncated to int (-1) in AttributeOperations.getUpperBound().

Migration

The fix changes how "no upper bound" is encoded in three public APIs. Applications that evaluated the former values must be adjusted.

AttributeOperations.getUpperBound()

A size annotation without an upper bound is now reported as Integer.MAX_VALUE. Before, the long sentinel TLSize.NO_UPPER_BOUND was truncated to -1. Application code that treated -1 as "no limit" must be changed:

{{{#!java // before if (AttributeOperations.getUpperBound(size) == -1) {

// no upper bound

}

// after if (AttributeOperations.getUpperBound(size) == Integer.MAX_VALUE) {

// no upper bound

} }}}

getLowerBound() saturates the same way, but is not affected in practice, since TLSize.NO_LOWER_BOUND is 0 and was never truncated.

AttributeOperations.getLength()

Returns null instead of -1, if the size annotation declares no upper bound. Code that assigns the result to an int now fails with a NullPointerException:

{{{#!java // before int length = AttributeOperations.getLength(part); // -1, if no upper bound

// after Integer length = AttributeOperations.getLength(part); // null, if no upper bound if (length != null) {

...

} }}}

StringLengthConstraint

The constructors normalize a maxLength of Integer.MAX_VALUE to the new constant StringLengthConstraint.NO_LIMIT (-1), because such a bound can never be violated: String.length() is an int. For an unbounded constraint, hasMaxLength() therefore returns false and getMaxLength() returns NO_LIMIT. The validation behaviour is unchanged.

Applications that explicitly passed Integer.MAX_VALUE and evaluated hasMaxLength() or getMaxLength() now see "no limit" instead of a limit of 2147483647. Use the constant StringLengthConstraint.NO_LIMIT instead of a literal -1 to express an unenforced bound.

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

© Copyright – Business Operation Systems GmbH

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