enhancement
major
#29704
tl-archetype-app: Neue Anwendung standardmäßig mit React-Oberfläche erzeugen, klassische Oberfläche per Option
#29729
TL Views: Ein Flussdiagramm (flow-diagram) lässt sich nicht für Mehrfachauswahl konfigurieren
#29781
TL Views: Aktionsketten mit benannten Argumenten – Auslöser liefern mehrere Werte, Skripte verwenden sie als implizite Variablen, Aktionen mit Ergebnis führen Folgeaktionen in <with-result> aus
#29856
React UI: consolidate the access check definitions of views, commands and TL-Script functions
#29860
Konfigurationsformulare: Eingabefelder werden über fachliche Annotationen (@MultiLine, @Code, @Html, @Inline, …) gewählt, in klassischer und React-Oberfläche gleich; @ControlProvider und @ConfigControl entfallen
#29865
Configuration layering: removing a list entry whose key the underlying layers do not (or no longer) define fails the application start
#29877
Developer docs: an article on the persistency configuration of an application (single branch vs. multiple branches, type systems, what changes the schema)
#29880
XIO: Import of an evolving external format: report unknown elements, reject a second composite container with a location, match several values in one <switch> case
#29887
TL Views: Einfügevorschläge für ein Textfeld - per TL-Script berechnete Vorschläge an der Schreibmarke
#29892
view-layer forms: actions that enter and leave edit mode (<enter-edit-mode/>, <leave-edit-mode/>)
#29896
Typed configuration: config:ref addresses an entry of a keyed list by a globally unique key without naming the path to it; a view overlay addresses every element by its id
#29906
Design System wave 5c: calendar, kanban, dashboard and value list read the design system package
#29914
Design System wave 5d: foundation pieces and foreign stylesheets read the design system package; tlReactControls.css is removed
#29941
TL Views: Auswahlfeld, das zusätzlich einen frei eingegebenen Wert annimmt ("auswählen oder neu eingeben")
#29942
TL Views: Erwähnungen im HTML-Editor - Verweise auf Objekte (z.B. Projektmitglieder, Tickets) per @/# einfügen, die zu Links werden
#29947
Steueranwendung: Workspace-Management – leere TopLogic-Anwendung in einem Docker-Container anlegen, starten, stoppen und aufräumen
#29948
Credentials für externe Dienste ohne Geheimnisse in der Konfiguration: Secret-Quellen, Token-basierte Authentifizierung (Keycloak/OIDC, Workload Identity, Azure) und API-Gateway
#29953
Steueranwendung: Agenten-Harness im Workspace – Auftrag an Claude Code, Live-Transkript, Übernahme durch einen Menschen, LLM-Zugang über einen Proxy
#29954
KI: Modellkatalog aus der Dienstkonfiguration des LLM-Anbieter-Dienstes herausnehmen und in einer eigenen Ansicht zeigen
#29955
React-UI: Dienstkonfiguration anzeigen, bearbeiten und speichern (mit Kennzeichnung "Neustart erforderlich")
#29956
Anwendungen und Fragment-Module ohne TopLogic-Parent-POM bauen: BOM, Maven-Packaging tl-app/tl-fragment und Feature-Starter
#29974
XML import: <unless-known> cannot import the attributes of a known element without its structure
#29975
XML import: <resolve-existing> loads only the partition of existing objects an ID belongs to; linking checks membership without reading the whole reference
#29976
View layer: <tree-table> offers no <export> (Excel export) although the export writes trees as outlines
#29977
View layer: <tree-table> has no node display (icon, label, CSS class per cell) and no row-class
#29981
View layer: a table column cannot be declared unsortable, so the groups it forms cannot keep the order of their rows
#29989
Javadoc-Verweise und ungenutzte Imports im Maven-Build prüfen, Eclipse meldet fehlerhaftes Javadoc nur noch als Warnung
minor
#29852
TL Views: Mehrwertige Binärwerte als Datei-Chips (oder Werteliste) mit Mehrfach-Upload, Pflichtfeld, Validierung und accept-Filter; <file-list> entfällt
#29872
TL Views: the min/max/step of a number input (slider) are fixed in the configuration and cannot come from a channel or expression
major
#29798
Derived reference reads as empty in the commit check (no user): result filter of AttributeByExpression stays on
#29869
A React view window that lost its SSE connection keeps every later KB revision in memory until its session ends
#29876
KnowledgeBase on H2: deleting objects scans the association tables (the reference indexes start with BRANCH, and H2 seeks an IN list only on the first index column)
#29895
deploy/local applies only to the module in the working directory: a module of a multi-module build cannot be started from the reactor root
#29918
Design System: a panel's toolbar sticks to the title instead of standing at the end of the title bar
#29920
TL Views: Die Zeilenauswahl in einer React-Tabelle braucht bis zu einer Sekunde, weil jede Auswahl alle Zellen neu überträgt und bei einer Tabelle mit Eingabekanal alle Zellen neu erzeugt
#29922
Composition-Tabelle in einem Formular bekommt keine Höhe, ein Dialog kann nicht mehr bis zur Tabelle scrollen
#29923
React-Oberfläche: Inhalt eines Navigationseintrags mit route="none" erzeugt URLs, die sich nicht öffnen lassen
#29932
Gruppen und Adressen sind für Superuser nicht lesbar: tl.accounts:Group und tl.accounts:Address haben keine Rollenquelle
#29933
React-UI: Der Griff eines Split-Panels "läuft weg" beim Ziehen mit der Maus; tiefe Baumknoten brechen um statt waagerecht zu rollen
#29934
View-Designer: Zur Laufzeit geöffnete Sichten (Rahmen eines tile-stack, navigate-push, open-dialog) fehlen im Entwurfsbaum und lassen sich nicht per "Sicht auswählen" anwählen
#29964
React UI: password login sometimes logs out immediately - a command of the replaced window triggers the stale-UI reload of the old window URL
#29970
React-Bridge: Ein Sprung, der seine Zielseite erst erzeugt, malt sie ohne die gesetzte Auswahl
#29971
React-Views: Die Ausführbarkeit eines Befehls übersieht einen Commit eines fremden Threads während des Seitenaufbaus
#29978
View layer: <tree-table> does not reveal a selected object under a collapsed node and misses changes while hidden
#29979
Migration: migrations of an application module without a stored version never run, the auto model upgrade runs instead
#29980
Migration: update-class with a new-name in another module does not move the class's associations
#29983
View layer: a tab strip wider than its container neither scrolls nor wraps nor collapses into a menu
#29990
React-UI: Panels und bedingte Inhalte nehmen in Split-Flächen, Tabs und Stacks die falsche Höhe
#30001
Entwicklungsmodus: neu geschriebene WEB-INF-Dateien sind über den FileManager erst verzögert sichtbar (Theme-Import zeigt keine Variablen, ThemeEditor_Ticket-24158_Import-export scheitert sporadisch)
#30005
React-Oberfläche: Ein Einstiegspunkt verliert beim Laden seine View-Datei aus der URL, F5 zeigt die Default-View (Regression #29957)
#30013
TL Views: Auswahlfelder bieten später angelegte Objekte ihres Typs erst nach neuer Anmeldung an
#30014
React-Formulare: Sichtbarkeit beim Anlegen (create-visibility) eines Attributs wird nicht berücksichtigt
#30015
React-Oberfläche: Anlegen in einem Container wird nicht geprüft, solange der Container-Kanal leer ist
#30016
Aufzählungswerte (Klassifikatoren) sind für Benutzer ohne Administratorrechte nicht entdeckbar: Ein Aufzählungs-Attribut kann nicht gesetzt werden
#30019
TABLE.debounce() verwendet globalen Singleton-Timer — Slice-Nachladen schlägt bei mehreren Tabellen fehl
#30024
React-Oberfläche: NullPointerException in ModelAccessPolicy.isGrantable, wenn ein Zugriffs-Parent seine Parent-Typen nicht statisch kennt
#30026
Instabiler Test: TestQueueReporter#testGetReport schlägt fehl, wenn zwei Builds auf demselben Knoten gleichzeitig laufen oder der Rechner ausgelastet ist
minor
#29868
KBChangeAnalzyer logs "There is a part id ... but no item for update" for every update of a part of a monomorphic inline-set storage
#29883
A boolean attribute without a value reads as false on a persistent object, as null on a transient one
#29894
Commit einer geänderten Annotation loggt ERROR mit Stacktrace, wenn der alte Wert eines abgeleiteten Attributs (z.B. options) nicht mehr instanziierbar ist
#29935
Popup-Fenster (Skript-Rekorder, Dokumentation) lässt sich nach dem Schließen nicht sofort wieder öffnen (Edge/Chromium): Fehler "Cannot read properties of null (reading 'services')"
#29959
Persönliche Einstellungen werden nicht gespeichert, wenn der Benutzer eine verletzte Modell-Bedingung hat (z. B. root ohne Kontaktdaten)
defect
(Nutzer-sichtbar)
major
#30005
React-Oberfläche: Ein Einstiegspunkt verliert beim Laden seine View-Datei aus der URL, F5 zeigt die Default-View (Regression #29957)
Problem
Wird ein Einstiegspunkt der Anwendung geladen, der nicht die Default-View ist (z.B. /view/browse.view.xml der React-Demo, die anonym zugängliche Seite), steht nach dem Laden nur noch /view/ in der Adresszeile. Ein Neuladen (F5) zeigt dann die Default-View – für einen anonymen Besucher die Login-Seite. Betroffen sind ein Link auf den Einstiegspunkt ebenso wie <show-view display="top-level"> (#30003). Bis zum Stand vom 23.10. blieb die URL erhalten.
Ursache
- ViewServlet übernimmt für eine URL, die eine View-Datei nennt, die leere Route (extractRoutePath → "", RouteManager.adoptUrl("")); der RouteManager kennt nur Routen innerhalb der Root-View, nicht die View-Datei.
- Seit #29957 meldet RouteManager.notifyUrlChange auch eine reine Titeländerung. adoptUrl setzt den gemeldeten Titel zurück, die geladene Seite hat einen Titel, also geht ein RouteChangeEvent mit der URL "" an den Client.
- Der Client ersetzt die Adresse durch getViewBasePath() + "" = /view/.
Lösung
- Der RouteManager erhält die View-Datei einer Seite, die nicht die Default-View ist, als Präfix seiner URL; currentUrl() meldet <view-datei> bzw. <view-datei>/<route> (plus Query), die Übernahme einer URL vom Client (adoptUrl, holdUrl, navigateToRoute) schneidet das Präfix vor der Auflösung ab. Das Präfix darf Schrägstriche enthalten (demo/pdf-demo.view.xml).
- ViewServlet versteht zusätzlich URLs der Form <datei>.view.xml/<route>, so dass auch eine Route innerhalb eines Einstiegspunkts ein Neuladen übersteht. Eine URL, die die Default-View ausdrücklich nennt, erhält kein Präfix (kanonisch /view/).
- Ein Browser-Tab kann damit History-Einträge verschiedener Seiten (Default-View, Einstiegspunkt) enthalten. Führt Zurück/Vor auf einen Eintrag einer anderen View-Datei, lädt der Client die Seite neu, damit der Server die andere Root-View lädt.
- Test: Laden eines Einstiegspunkts behält dessen URL, auch wenn sich dabei der Titel ändert.