major

Configuration: Each configured function can be implemented in either Java or TL-Script, using the same configuration syntax (including in the React configuration editor)
Design System UI pass, part 1: one selection form; surface-interactive-selected becomes surface-interactive-strong
Engine Extensions for the Tax Application: writable secret storage in the database, application context path in development mode (tl.contextPath), and instance search by attribute value
React UI: Hide commands and units for which the logged-in user does not have the required role on any object
The database does not enforce uniqueness of reference values without duplicates: a unique index on the link tables, separate link tables for bags
Self-service accounts: invitations expire and record their acceptance, invitations can be accepted and managed in the React UI, localized mail templates
View layer slots: report a <slot-content> that reaches no <slot>, empty fallback of a <slot>, slot positions in split panels and the sidebar
Agent runs: bound the pool of parallel tool calls (AgentLoop.TOOL_WORKERS) and tell a user whose chat message waits for a free worker
Agent screenshots belong to their chat: deleted with it, shown as thumbnails in the chat
Administration of the React UI: scheduler (task list, run now, stop, activate/deactivate, cluster lock, run history) with one unified active/inactive switch per task
Administration of the React UI: memory trend chart (memory use over time incl. garbage collection) and the remaining monitoring views of the classic UI
Administration of the React UI: maintenance functions of the classic maintenance pages (database export/import/history compaction, SQL console, reload, search index, security storage, encryption)
React UI: recent changes of the user with revert of a commit (user menu)
Model editor of the React UI: instance browser and instance import of the selected type
Administration of the React UI: people (contacts with optional login) in one form
Administration of the React UI: login messages (messages shown at login, with their validity)
React Interface: Workflow Administration with BPMN Editor, Step Views from the View Designer, and Task Editing (BPE)
React Administration: View and Explain an Account's Effective Permissions on an Object (Role Inspector)
React Interface: Signing In with Passkeys (WebAuthn) — passwordless or as a second factor alongside TOTP; managing your own passkeys in the settings
Log View (React UI): Display the details of an entry (stack trace) in a dialog in a readable format
React Interface: Password change with confirmation message and validation before the identity prompt; protection against brute-force attacks on passwords and one-time codes
TL Views: Change Authenticator App (New TOTP Secret), Reset Two-Factor Authentication by Administrator
XML import: <update> of <unless-known> must restate the structure of the descendants it updates
View layer: document how a ChannelSource keeps a monitor running while its view is hidden and ends it with the window
OpenAPI Client: Parameter Value from a Secret Source
Rights System: Remove the configurable group mapper from the ElementAccessManager
Generate JavaScript libraries (umljs, ace, require.js, bpmn-js) in the Maven build instead of checking them in; update bpmn-js to version 18
Design system as an engine module: built by Maven instead of a checked-in copy with seals
Nightly preview builds of the engine with a fixed Maven version and a changelog instead of a rolling SNAPSHOT
pac4j Registration: The account mapping receives the identity provider's full identity (subject, claims) rather than just a login name
CommonMark: Displaying Tables (GFM) as HTML Tables
Refetch timeout does not specify the thread holding the commit/refetch lock
View layer: options of a string attribute cannot have display labels
Remove TLDoclet exceptions in ext/javadoc/javadoc-ignores
tl-chat: Chat actions run as React commands within the window rather than via a separate ChatServlet; the chat's proxy workaround is no longer used in favor of engine polling
View layer: show the fallback of AttributeWithFallbackStorage as placeholder of a form field
View layer: value listeners of the model (<value-listeners>) react to field changes in the React form, through a UI-independent listener contract
RecollateStringColumnsProcessor: Run ANALYZE after changing the collation (PostgreSQL)
Let a chat agent run page commands that the page of the chat allows, e.g. open a dialog
Ship a provider with recorded model answers for the agent tests of applications
React View Layer: Commands Without HandlerResult - View commands report errors as exceptions; React command handlers return their response as a msgbuf message
React Interface: Insert images into the HTML editor using Ctrl+V and drag-and-drop; resize using handles; never wider than the content
TL Chat: Let a chat agent pass the input of a page command it runs
Adding Albert to an application: shipped React chat page, how-to article and archetype defaults
SQLFactory: Generate column changes (modifyColumnName/Type/Mandatory) only with a complete column definition
Remove database defaults for columns: Add required columns using "create, populate, set as required"
Create accounts at an external login and assign their groups from a claim
An application generated with useSSO=true offers the generic OpenID login, switched on by the tl_pac_* environment variables, also on the development server
Self-Service: Open self-registration without an invitation
Remove the control application tl-factory from the engine, it is developed in its own repository
Agent Access and Recording: Commands operate on stable object IDs; technical keys are used only for recording and playback
View layer: a value channel whose value is remembered per user
Self-service mails: texts editable in the service configuration, language of an invitation selectable
Model: handlers declared on an attribute (change) or a type (creation, deletion), run within the commit
Design System UI pass, part 1b: tables with depth and visible column boundaries
TL Views: <start-job> / <job-status> - close button for an ended job, point of no return, partial result of a cancelled job, closing the dialog from the follow-up, follow-up sees the job's commits
tl-ai-core pulls the Playwright browsers (driver-bundle, 200 MB) into every application: browser tools move into the optional module tl-ai-browser
React Configuration Editor: Multi-line text (HTML, Markdown, code, multi-line) uses the entire line by default
Setting and removing administrative secrets; writable directory storage
System Environment: Display the source of configuration variables and set variables from the administration interface
AI Agents: Meaningful commit messages for changes made by an agent instead of "Agent edit"

minor

TL Views: Unit and Custom Number Format for Number Fields
TL Script: Read a binary value as text; Read a web app resource as a binary value
React Table: Show and Hide Columns Based on Channel Values (exists-if)
ModificationListener: no supported way to report to the user what a Modification changed, once the commit succeeded

critical

Data migration is not protected against parallel execution when multiple cluster nodes are started simultaneously
Canceling a background job (TL Views <start-job>, Scheduler Task, JMS Consumer) interrupts the thread in the middle of a database operation and closes an embedded H2 database (MVStore panic, application becomes unusable)
TestFlowSvgPortable does not compile: FlowFactory.chart() has the parameter fixedView
React-Views: TestTreeTableRowEdit no longer compiles on master (ExpandArguments.ROW_INDEX replaced with ROW_ID)

major

Scripted test TestTransactionMonitor-01_RevertRevision fails when a scheduled task commits concurrently
TL Views: a value the server sets while the React rich-text editor has the focus is never applied; the composer keeps its text after sending
React Interface: Logging in in one browser tab immediately logs you out if a second tab for the application is open
TL Views: Wizard—re-entering an "Auto-Next" step without a separate navigation path leaves the user with no way to return to the workflow
React Interface: When setting up two-factor authentication, the key for manual entry is not displayed; only the QR code is shown.
Configured SecurityParents do not work with StructuredElementWrapper
React UI: Tabs in a dialog change the page's address and remain in the URL after the dialog is closed
Scheduler: A task that is due at startup is detached during shutdown while it is still running (NullPointerException in TaskImpl.getLog())
Scheduler tests: testStartTaskImmediately and testPeriodically have occasionally timed out since the scheduler was revised
tl-maven-plugin: If merging the view overlays fails during application build, the build remains green
tl-chat: Commands at the top of a data-list do not display their status (hidden, disabled with reason); clicking on a locked command produces no response
tl-maven-plugin: If generating a layout fails during application build, the build remains green
tl-chat: After logging in, the chat in the same browser window remains at "Log in to use the chat"
An aborted external login (OIDC) leaves a logged-in session without tokens
delete-module / delete-class do not clean up hasWrapperAttValue data
Passkeys per application can be used either for password-less login or as a second factor, but not both at the same time
AlterColumnProcessor does not update stored schema for abstract types
The scheduler incorrectly reports "There is no thread to remove" when a task fails to start
OpenAPI Server: The error message for a failed script is unreadable and is generated outside the interaction context
Agent access: /agent-api answers a request without a valid credential with a redirect to the login page instead of 401
An application at the server root keeps its session: the session cookie is sent to all its paths, and the React page announces its icon
A run without provider credentials ends as an authentication failure, and HTTP 402 is a billing failure for every provider
View layer: a field mandatory by dynamic visibility loses its required marker on a validation change
TypeIndexer: Java 21 as a supported source version; Index records
TL Chat: While an agent is performing multiple steps, their last message remains visible, and the status bar displays the current step instead of just showing "…" and "Working on …"
Chat sessions are invisible to their owner in an application with model-based security
React Interface: The "More Actions" menu does not close when the Escape key is pressed if all items are disabled
React UI Script Recorder: Recordings of tree, multiple-selection, and dropdown assertions can be replayed in a different session
TL Chat: A run that fails with an exception leaves no error in the conversation; it is gone after a reload
React: A command with ignoreStaleUi to a control that left the display still fails with 404 "Control not found"
TL Chat: runPageCommand gives the model the refusal of a page command in English instead of the user's language
OIDC login button is offered although the client has neither discovery URI nor provider metadata
The development server stops on /admin/stop from any address
The development server ignores X-Forwarded-* headers, so a relative callback URL behind a proxy names the wrong origin
DeleteTableProcessor does not remove " <alternative>" elements from the stored schema
Commit veto of the model constraints: a failed job (and its log) shows only "Cannot store, constraints violated." without the problems
Background processing fails with the error "Session revision invalid" if the window saves data while it is running (jobs, AI runs)
HtmlResKey: Also read the value as an attribute (add format)
tl-archetype-deploy: Declare the archetype integration test's dependency on tl-demo
Migrating to PostgreSQL with `autosave=NEVER`: Expected SQL errors abort the transaction
tl-ai-core, Anthropic provider: Claude 5.5 models missing from the bundled model catalog, and claude-haiku-5-5 sent a thinking budget (HTTP 400)
tl-ai-mcp-server: tools/list is not filtered by the caller's tool access, and /mcp/ with a trailing slash answers 404
tl-chat: A missing API key is reported as a rejected key ("The model rejected the access key")
tl-ai-core: agent turn rolled back with "Create on objects of type ... without permission" when a tool creates a part in an object created in the same turn - remove the duplicate pre-commit guard, check initial values in TL-Script

minor

React applications include modules from the classic interface (self-service, WYSIWYG editor, code editor, search, monitoring, AI administration)
TL Views: a sidebar separator stays visible when every item after it is hidden; the anonymous session sees the system separator with nothing below it
Default values <country value="..."/> and <time-zone value="..."/> (CountryDefaultProvider, TimeZoneDefaultProvider) cannot be used
The TL script functions `binarySize()` and `modelHealthReset()` return integers instead of doubles and log an error on every call
Compile-Errors in Eclipse in TL 8 alpha12
View layer: <composition-table> ignores the visibility (dynamic-visibility, hidden, read-only) of its composite attribute
TL Views: TestViewsLoad does not detect an undefined variable in a computed-column's value expression
CommaSeparatedStringSet: Non-deterministic serialization creates duplicate key attributes in the schema baseline
Flowchart (Gantt): Clicking on an element does not select anything if frozenRows &gt; 0
Flowchart (Gantt): The chart is always displayed in full—no vertical scrolling, but it becomes unreadable when there are many rows
Flowchart (Gantt): LineDeco labels (e.g., “Today”) are cut off beneath fixed headers; edges without arrowheads
Exporting diagrams as SVG (reactFlowToSvg, flowToSvg) is not suitable for Batik or printing
Module shutdown stops no module at all if the class of its InContext job cannot be loaded (database stays open in the container's JVM)
React Table: Date cell in in-place edit accepts any partial keyboard input (e.g., year 0002)
React Views: Tree Table ({{{<tree-table>}}}) without row editing ({{{row-edit}}}) – not a replacement for the classic tree grid
React-Views: When a constraint is violated, the editable table displays only a red border, not an error message
React Table: When there are multiple row types, attribute columns are resolved only for the first type (label, sorting, filter)
React Table with Row Edit: A column based on a derived attribute is editable, but saving fails
React: A disabled `upload-command` does not display a reason; `null-input-disabled` always disables it
React: Button with an upload action does not open the file dialog
React Table: No cell display for external links (URL)
React: The built-in rules for `delete-object` and similar take precedence over the configured ones (making `visible-if` ineffective)
React: `null-input-disabled` only checks the first input
Binary attribute: Querying the content type loads the entire content; BLOB columns in object tables are loaded only for small values
View layer: tooltips drop the line breaks of their text (.tl-tooltip__body has white-space: normal)
React Table: Commands are unaware of the displayed rows or their order
React-UI: No display while a command is running on the server
React-UI: Set the color role of a row, cell, or view as a separate script (row-role, cell-role, role) instead of the ineffective status classes tl-status-*
React-UI: Commands from a window in a detached session generate two WARN lines per command
React-UI: The only way to display tabs for a single type is by using a type deviation in `access-control`, and that is logged as a WARN.
KB: Committable.rollback() is called after a successful database commit if the changes or caches fail to be published
TL Script: When `throw()` is used or a `TopLogicException` occurs, `try()` passes only the message text to the `catch` block instead of the `ResKey`.
ModelAccessRights.isAllowed(Person, ...): Checks whether another person is granted bypass or admin status in the current context

critical

Canceling a background job (TL Views <start-job>, Scheduler Task, JMS Consumer) interrupts the thread in the middle of a database operation and closes an embedded H2 database (MVStore panic, application becomes unusable)

major

Configuration: Each configured function can be implemented in either Java or TL-Script, using the same configuration syntax (including in the React configuration editor)
React UI: Hide commands and units for which the logged-in user does not have the required role on any object
Self-service accounts: invitations expire and record their acceptance, invitations can be accepted and managed in the React UI, localized mail templates
TL Views: a value the server sets while the React rich-text editor has the focus is never applied; the composer keeps its text after sending
Agent runs: bound the pool of parallel tool calls (AgentLoop.TOOL_WORKERS) and tell a user whose chat message waits for a free worker
Agent screenshots belong to their chat: deleted with it, shown as thumbnails in the chat
Administration of the React UI: scheduler (task list, run now, stop, activate/deactivate, cluster lock, run history) with one unified active/inactive switch per task
Administration of the React UI: memory trend chart (memory use over time incl. garbage collection) and the remaining monitoring views of the classic UI
Administration of the React UI: maintenance functions of the classic maintenance pages (database export/import/history compaction, SQL console, reload, search index, security storage, encryption)
React UI: recent changes of the user with revert of a commit (user menu)
Model editor of the React UI: instance browser and instance import of the selected type
Administration of the React UI: people (contacts with optional login) in one form
Administration of the React UI: login messages (messages shown at login, with their validity)
React Interface: Workflow Administration with BPMN Editor, Step Views from the View Designer, and Task Editing (BPE)
React Administration: View and Explain an Account's Effective Permissions on an Object (Role Inspector)
React Interface: Logging in in one browser tab immediately logs you out if a second tab for the application is open
React Interface: Signing In with Passkeys (WebAuthn) — passwordless or as a second factor alongside TOTP; managing your own passkeys in the settings
Log View (React UI): Display the details of an entry (stack trace) in a dialog in a readable format
React Interface: Password change with confirmation message and validation before the identity prompt; protection against brute-force attacks on passwords and one-time codes
TL Views: Wizard—re-entering an "Auto-Next" step without a separate navigation path leaves the user with no way to return to the workflow
React Interface: When setting up two-factor authentication, the key for manual entry is not displayed; only the QR code is shown.
TL Views: Change Authenticator App (New TOTP Secret), Reset Two-Factor Authentication by Administrator
React UI: Tabs in a dialog change the page's address and remain in the URL after the dialog is closed
tl-chat: After logging in, the chat in the same browser window remains at "Log in to use the chat"
An aborted external login (OIDC) leaves a logged-in session without tokens
Passkeys per application can be used either for password-less login or as a second factor, but not both at the same time
View layer: show the fallback of AttributeWithFallbackStorage as placeholder of a form field
TL Chat: While an agent is performing multiple steps, their last message remains visible, and the status bar displays the current step instead of just showing "…" and "Working on …"
React Interface: The "More Actions" menu does not close when the Escape key is pressed if all items are disabled
RecollateStringColumnsProcessor: Run ANALYZE after changing the collation (PostgreSQL)
React Interface: Insert images into the HTML editor using Ctrl+V and drag-and-drop; resize using handles; never wider than the content
TL Chat: Let a chat agent pass the input of a page command it runs
TL Chat: A run that fails with an exception leaves no error in the conversation; it is gone after a reload
TL Chat: runPageCommand gives the model the refusal of a page command in English instead of the user's language
Create accounts at an external login and assign their groups from a claim
OIDC login button is offered although the client has neither discovery URI nor provider metadata
Self-Service: Open self-registration without an invitation
Commit veto of the model constraints: a failed job (and its log) shows only "Cannot store, constraints violated." without the problems
Background processing fails with the error "Session revision invalid" if the window saves data while it is running (jobs, AI runs)
Self-service mails: texts editable in the service configuration, language of an invitation selectable
TL Views: <start-job> / <job-status> - close button for an ended job, point of no return, partial result of a cancelled job, closing the dialog from the follow-up, follow-up sees the job's commits
tl-ai-core, Anthropic provider: Claude 5.5 models missing from the bundled model catalog, and claude-haiku-5-5 sent a thinking budget (HTTP 400)
tl-ai-mcp-server: tools/list is not filtered by the caller's tool access, and /mcp/ with a trailing slash answers 404
tl-chat: A missing API key is reported as a rejected key ("The model rejected the access key")
tl-ai-core: agent turn rolled back with "Create on objects of type ... without permission" when a tool creates a part in an object created in the same turn - remove the duplicate pre-commit guard, check initial values in TL-Script
React Configuration Editor: Multi-line text (HTML, Markdown, code, multi-line) uses the entire line by default
Setting and removing administrative secrets; writable directory storage
System Environment: Display the source of configuration variables and set variables from the administration interface
AI Agents: Meaningful commit messages for changes made by an agent instead of "Agent edit"

minor

TL Views: a sidebar separator stays visible when every item after it is hidden; the anonymous session sees the system separator with nothing below it
View layer: <composition-table> ignores the visibility (dynamic-visibility, hidden, read-only) of its composite attribute
TL Views: Unit and Custom Number Format for Number Fields
Flowchart (Gantt): Clicking on an element does not select anything if frozenRows &gt; 0
Flowchart (Gantt): The chart is always displayed in full—no vertical scrolling, but it becomes unreadable when there are many rows
Flowchart (Gantt): LineDeco labels (e.g., “Today”) are cut off beneath fixed headers; edges without arrowheads
Exporting diagrams as SVG (reactFlowToSvg, flowToSvg) is not suitable for Batik or printing
React Table: Date cell in in-place edit accepts any partial keyboard input (e.g., year 0002)
React Views: Tree Table ({{{<tree-table>}}}) without row editing ({{{row-edit}}}) – not a replacement for the classic tree grid
React-Views: When a constraint is violated, the editable table displays only a red border, not an error message
React Table: When there are multiple row types, attribute columns are resolved only for the first type (label, sorting, filter)
React Table with Row Edit: A column based on a derived attribute is editable, but saving fails
React: A disabled `upload-command` does not display a reason; `null-input-disabled` always disables it
React: Button with an upload action does not open the file dialog
React Table: No cell display for external links (URL)
React Table: Show and Hide Columns Based on Channel Values (exists-if)
React: The built-in rules for `delete-object` and similar take precedence over the configured ones (making `visible-if` ineffective)
View layer: tooltips drop the line breaks of their text (.tl-tooltip__body has white-space: normal)
React-UI: No display while a command is running on the server
React-UI: Set the color role of a row, cell, or view as a separate script (row-role, cell-role, role) instead of the ineffective status classes tl-status-*
TL Script: When `throw()` is used or a `TopLogicException` occurs, `try()` passes only the message text to the `catch` block instead of the `ResKey`.

critical

Canceling a background job (TL Views <start-job>, Scheduler Task, JMS Consumer) interrupts the thread in the middle of a database operation and closes an embedded H2 database (MVStore panic, application becomes unusable)

major

Scripted test TestTransactionMonitor-01_RevertRevision fails when a scheduled task commits concurrently
Design System UI pass, part 1: one selection form; surface-interactive-selected becomes surface-interactive-strong
The database does not enforce uniqueness of reference values without duplicates: a unique index on the link tables, separate link tables for bags
Self-service accounts: invitations expire and record their acceptance, invitations can be accepted and managed in the React UI, localized mail templates
Agent screenshots belong to their chat: deleted with it, shown as thumbnails in the chat
Administration of the React UI: scheduler (task list, run now, stop, activate/deactivate, cluster lock, run history) with one unified active/inactive switch per task
Administration of the React UI: maintenance functions of the classic maintenance pages (database export/import/history compaction, SQL console, reload, search index, security storage, encryption)
Administration of the React UI: people (contacts with optional login) in one form
React Interface: Workflow Administration with BPMN Editor, Step Views from the View Designer, and Task Editing (BPE)
React Interface: Logging in in one browser tab immediately logs you out if a second tab for the application is open
Configured SecurityParents do not work with StructuredElementWrapper
Rights System: Remove the configurable group mapper from the ElementAccessManager
tl-chat: Chat actions run as React commands within the window rather than via a separate ChatServlet; the chat's proxy workaround is no longer used in favor of engine polling
View layer: value listeners of the model (<value-listeners>) react to field changes in the React form, through a UI-independent listener contract
React View Layer: Commands Without HandlerResult - View commands report errors as exceptions; React command handlers return their response as a msgbuf message
SQLFactory: Generate column changes (modifyColumnName/Type/Mandatory) only with a complete column definition
Remove database defaults for columns: Add required columns using "create, populate, set as required"
Create accounts at an external login and assign their groups from a claim
The development server ignores X-Forwarded-* headers, so a relative callback URL behind a proxy names the wrong origin
Self-Service: Open self-registration without an invitation
Agent Access and Recording: Commands operate on stable object IDs; technical keys are used only for recording and playback
Self-service mails: texts editable in the service configuration, language of an invitation selectable
Model: handlers declared on an attribute (change) or a type (creation, deletion), run within the commit
TL Views: <start-job> / <job-status> - close button for an ended job, point of no return, partial result of a cancelled job, closing the dialog from the follow-up, follow-up sees the job's commits
tl-ai-core, Anthropic provider: Claude 5.5 models missing from the bundled model catalog, and claude-haiku-5-5 sent a thinking budget (HTTP 400)
tl-ai-core pulls the Playwright browsers (driver-bundle, 200 MB) into every application: browser tools move into the optional module tl-ai-browser
tl-ai-core: agent turn rolled back with "Create on objects of type ... without permission" when a tool creates a part in an object created in the same turn - remove the duplicate pre-commit guard, check initial values in TL-Script
React Configuration Editor: Multi-line text (HTML, Markdown, code, multi-line) uses the entire line by default
System Environment: Display the source of configuration variables and set variables from the administration interface
AI Agents: Meaningful commit messages for changes made by an agent instead of "Agent edit"

minor

React applications include modules from the classic interface (self-service, WYSIWYG editor, code editor, search, monitoring, AI administration)
TL Views: a sidebar separator stays visible when every item after it is hidden; the anonymous session sees the system separator with nothing below it
React Table: When there are multiple row types, attribute columns are resolved only for the first type (label, sorting, filter)
React Table with Row Edit: A column based on a derived attribute is editable, but saving fails
React: Button with an upload action does not open the file dialog
ModificationListener: no supported way to report to the user what a Modification changed, once the commit succeeded
React-UI: Set the color role of a row, cell, or view as a separate script (row-role, cell-role, role) instead of the ineffective status classes tl-status-*
React-UI: The only way to display tabs for a single type is by using a type deviation in `access-control`, and that is logged as a WARN.
TL Script: When `throw()` is used or a `TopLogicException` occurs, `try()` passes only the message text to the `catch` block instead of the `ResKey`.