minor
#29089
Extend the TL Script functions log() and info() to include selectable message levels (INFO, WARN, ERROR)
#29306
TL Script: dateFormat() should accept an explicit timezone to format Calendar values losslessly
defect
major
#29383
A dead SOCKET_APPENDER (Chainsaw, localhost:4445) in the default logging configuration can cause logging to stall and operations to abort under heavy load
minor
#29380
Context-sensitive auto-numbering fails if the context and the numbered object are created within a single transaction
#29393
URL routing in the React view layer is broken: ForwardingReactContext does not delegate getRouteManager()
defect
major
#29419
Understandable save failures and form validation feedback in the React view layer
Understandable save failures and form validation feedback (React view layer)
Split out of #29006 (uniqueness constraint), which the changes below are independent of: they improve how validation problems and vetoed commits are surfaced to the user in the React .view.xml form layer, regardless of which constraint produced them.
Scope
- Save gate re-runs constraint checks. Before the form state is applied, FormControl.validateOrThrow() re-runs all constraint checks of the validation model (FormValidationModel.revalidateAll()). Stored results can be outdated when persistent data changed after the value was entered (e.g. a uniqueness conflict introduced by a concurrent commit); checks that consult persistent data must be re-evaluated at save time, not only on form-value changes.
- Understandable command-error snackbar. A failed command's error snackbar reports the detail messages chained as exception causes (naming the object, attribute and problem of a vetoed commit), and reports each distinct message only once (title, message and cause chain can carry the same error key).
- Validation icons as theme font icons. The validation error / warning icons are theme-defined font icons: the field chrome (and the composition table panel) push the resolved icons as state, and a shared FontIcon component renders encoded theme icons, replacing the inline SVG duplicates in field chrome, panel and dropdown options.
- Composition-attribute constraint feedback. Constraints of a composition attribute itself (e.g. a required minimum number of entries) are reflected in the composition field model and displayed as an error line below the composition table panel. Without this, such a constraint would only block saving with no visible location of the problem, because a composition attribute is displayed as a table and has no regular field chrome. (Re-implemented on the current AbstractCompositionControl / CompositionTableControl structure.)