enhancement
major
#29661
TL Views: Prototyp "TopLogic UI on MUI" – Adaptermodul mit Material UI für die ersetzbaren Komponenten
#29692
TL Views: Formularfelder, Tabellenzellen und das Bearbeiten eines Formulars richten sich nach den Modell-Zugriffsrechten
#29693
TL Views: Große und mehrwertige Werte erscheinen in Tabellenzellen als einzeilige Vorschau mit einem Knopf, der den vollständigen Editor in einem Dialog öffnet
#29707
Reduce PR CI build time: parallel reactor build, sharded scripted tests, affected-module builds
#29730
React-Oberfläche: Kanban-Board als View-Element (Karten per Drag & Drop zwischen Spalten verschieben)
#29744
TL Views: Entwicklerwerkzeuge (Designer, Aufzeichnen, Untersuchen, Agentenzugriff) in einem eigenen Entwicklungsmenü der App-Leiste
#29752
React-UI: Kleine Verbesserungen der Oberfläche (Snackbar, Hover, Tooltips, Schieberegler, Abstände)
#29758
ModelAccessRights: Anlegerecht in Kompositionsattribut für Spezialisierung des Zieltyps prüfen
#29759
React-UI: Commit-Nachrichten für Änderungen aus Sichten (TL-Script-Aktionen, Transaktionen, Löschen) konfigurierbar, sinnvolle Standard-Nachrichten
defect
major
#29642
React dialog size memory: one key for every dialog, stored size beats the declared width and is never clamped to the window
#29646
TL Views: Der Build der React-Client-Module prüft die TypeScript-Typen nicht, in com.top_logic.layout.react sind dadurch 29 Typfehler aufgelaufen
#29697
HistoryQuery: Start- und Stop-Revision aus HistoryQueryArguments werden bei der Suche ignoriert.
#29701
TL Views: a form shown again after its sidebar section or tab was hidden keeps the values it had when hidden; a reload renders the stale values again
#29711
Setzen einer geordneten Liste (ListStorage) ist beim Einfügen vor bestehenden Elementen überquadratisch langsam; TestListStorage misst Wanduhrzeit und scheitert unter Last
#29716
Modellbasierte Leseprüfung: Rollen-Lookup kompiliert pro Objekt und Gruppe neue KB-Abfragen, Nicht-Admin wartet 70 s statt 9 s
#29724
PathNavigation: abstract attribute rejected by isDerived() check even though concrete overrides exist and are tracked
#29728
FlowChartComponent: Ein Neubau des Diagramms entfernt Objekte aus der Selektion, die im Diagramm nicht dargestellt werden
#29731
TL Views: <persist-transient> copies the draft's empty values over the creation defaults; a sequence number or creation date computed at commit is lost
#29732
TL Views: <create-transient container="…"> creates the draft without the container's context; option lists and context-dependent defaults of the draft see no container
#29734
View form: <store-form-state/> does not persist new rows of a <composition-table>, so saving a persistent owner fails
#29737
TL Views: a collapsing toolbar measures its commands only when its groups change; a command that shows itself later keeps a 0 px toolbar and draws over the panel title
#29745
Zugriff auf ein abstraktes Attribut meldet einen Fehler, der nicht sagt, dass das Attribut abstrakt ist: eigene Storage für abstrakte Attribute
minor
#29696
Scheduler: Start- und Cluster-Verhalten von Tasks bereinigen – <on-startup/> pro Knotenstart, Tasks erst ab RUNNING, run-on-startup entfernen, kein Default für isNodeLocal()
#29699
TL-Script: htmlText(htmlSource($text), images) drops the images of a stored structured text, since it does not accept the "ref:" references it writes itself
#29700
TL Views: the open session of a deleted account keeps evaluating as that account; every model event logs "DeletedObjectAccess … was already deleted" from its observers
#29733
TL Views: a click on the padding of the React rich-text editor's content area does not focus the editor; the typed text is lost
#29738
TL Views: the menu cliques of a toolbar are labelled in English in every language ("More", "View", "Export")
#29739
React tooltip stays open at the window's top-left corner when its anchor is removed under the pointer
defect
(User-visible)
minor
#29753
OpenAPI-Client: NullPointerException bei Antwort ohne Body (z.B. 204) mit Status ungleich 200
Liefert ein mit dem OpenAPI-Client aufgerufener Dienst einen Status ungleich 200 ohne Body (z.B. 204 No Content, oder ein 302 ohne Entity), dann scheitert der Aufruf mit einer NullPointerException statt mit einer aussagekräftigen Fehlermeldung bzw. statt als Erfolg gewertet zu werden.
Ursache:
- com.top_logic.service.openapi.client.registry.impl.response.ResponseCheck.checkStatusCode(...) (Zeile ~44) liest bei statusCode != 200 den Content-Type über response.getEntity().getContentType(); bei einer Antwort ohne Body ist getEntity() null.
- ServiceMethodRegistry (init(), Zeile ~406) verpackt den Default-Response-Handler immer in einen ResponseChecker, sodass jede Antwort außer 200 durch diese Prüfung läuft – auch erfolgreiche 2xx-Antworten wie 201/204.
Beispiel: Jenkins POST /queue/cancelItem?id=<n> und POST /job/<job>/<n>/stop antworten mit 204 bzw. einer Weiterleitung ohne Inhalt.
Erwartet:
- Eine Antwort ohne Body führt nicht zu einer NPE (fehlende Entity wie leerer Inhalt behandeln).
- Erfolgreiche 2xx-Status gelten nicht als Fehler, auch wenn kein expliziter Handler für den Status konfiguriert ist.
Workaround in der Anwendung: explizite optionale Response-Handler für 2XX, 3XX und 4XX, 5XX an der Service-Methode konfigurieren.
Lösung
- Die Statusprüfung des OpenAPI-Clients (ResponseCheck, auch als Default-Prüfung über ResponseChecker) wertet jeden Status aus dem Bereich 2xx als Erfolg, nicht nur 200. Eine Service-Methode, deren Dienst z.B. mit 201 Created oder 204 No Content antwortet, liefert damit das Ergebnis ihres Response-Handlers statt eines Fehlers.
- Alle übrigen Status (1xx, 3xx, 4xx, 5xx) bleiben Fehler, sofern kein expliziter Handler für den Status konfiguriert ist. Fehlt der Antwort ein Body, enthält die Fehlermeldung "keine Details" statt mit einer NullPointerException abzubrechen. Eine nicht verfolgte Weiterleitung (3xx) gilt weiterhin als Fehler; soll sie als Erfolg gelten, ist ein expliziter Handler für 3XX zu konfigurieren.