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

8.0.0-alpha13
TopLogic Release

2026-11-13

enhancement

major
#29993
Configuration: Each configured function can be implemented in either Java or TL-Script, using the same configuration syntax (including in the React configuration editor)
#30000
Design System UI pass, part 1: one selection form; surface-interactive-selected becomes surface-interactive-strong
#30006
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
#30025
React UI: Hide commands and units for which the logged-in user does not have the required role on any object
#30031
The database does not enforce uniqueness of reference values without duplicates: a unique index on the link tables, separate link tables for bags
#30041
Self-service accounts: invitations expire and record their acceptance, invitations can be accepted and managed in the React UI, localized mail templates
#30045
View layer slots: report a <slot-content> that reaches no <slot>, empty fallback of a <slot>, slot positions in split panels and the sidebar
#30053
Agent runs: bound the pool of parallel tool calls (AgentLoop.TOOL_WORKERS) and tell a user whose chat message waits for a free worker
#30054
Agent screenshots belong to their chat: deleted with it, shown as thumbnails in the chat
#30057
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
#30058
Administration of the React UI: memory trend chart (memory use over time incl. garbage collection) and the remaining monitoring views of the classic UI
#30059
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)
#30061
React UI: recent changes of the user with revert of a commit (user menu)
#30062
Model editor of the React UI: instance browser and instance import of the selected type
#30063
Administration of the React UI: people (contacts with optional login) in one form
#30064
Administration of the React UI: login messages (messages shown at login, with their validity)
#30065
React Interface: Workflow Administration with BPMN Editor, Step Views from the View Designer, and Task Editing (BPE)
#30066
React Administration: View and Explain an Account's Effective Permissions on an Object (Role Inspector)
#30074
React Interface: Signing In with Passkeys (WebAuthn) — passwordless or as a second factor alongside TOTP; managing your own passkeys in the settings
#30075
Log View (React UI): Display the details of an entry (stack trace) in a dialog in a readable format
#30076
React Interface: Password change with confirmation message and validation before the identity prompt; protection against brute-force attacks on passwords and one-time codes
#30081
TL Views: Change Authenticator App (New TOTP Secret), Reset Two-Factor Authentication by Administrator
#30086
XML import: <update> of <unless-known> must restate the structure of the descendants it updates
#30088
View layer: document how a ChannelSource keeps a monitor running while its view is hidden and ends it with the window
#30095
OpenAPI Client: Parameter Value from a Secret Source
#30096
Rights System: Remove the configurable group mapper from the ElementAccessManager
#30097
Generate JavaScript libraries (umljs, ace, require.js, bpmn-js) in the Maven build instead of checking them in; update bpmn-js to version 18
#30098
Design system as an engine module: built by Maven instead of a checked-in copy with seals
#30104
Nightly preview builds of the engine with a fixed Maven version and a changelog instead of a rolling SNAPSHOT
#30108
pac4j Registration: The account mapping receives the identity provider's full identity (subject, claims) rather than just a login name
#30116
CommonMark: Displaying Tables (GFM) as HTML Tables
#30117
Refetch timeout does not specify the thread holding the commit/refetch lock
#30120
View layer: options of a string attribute cannot have display labels
#30122
Remove TLDoclet exceptions in ext/javadoc/javadoc-ignores
#30126
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
#30131
View layer: show the fallback of AttributeWithFallbackStorage as placeholder of a form field
#30132
View layer: value listeners of the model (<value-listeners>) react to field changes in the React form, through a UI-independent listener contract
#30148
RecollateStringColumnsProcessor: Run ANALYZE after changing the collation (PostgreSQL)
#30149
Let a chat agent run page commands that the page of the chat allows, e.g. open a dialog
#30150
Ship a provider with recorded model answers for the agent tests of applications
#30151
React View Layer: Commands Without HandlerResult - View commands report errors as exceptions; React command handlers return their response as a msgbuf message
#30157
React Interface: Insert images into the HTML editor using Ctrl+V and drag-and-drop; resize using handles; never wider than the content
#30158
TL Chat: Let a chat agent pass the input of a page command it runs
#30160
Adding Albert to an application: shipped React chat page, how-to article and archetype defaults
#30163
SQLFactory: Generate column changes (modifyColumnName/Type/Mandatory) only with a complete column definition
#30167
Remove database defaults for columns: Add required columns using "create, populate, set as required"
#30172
Create accounts at an external login and assign their groups from a claim
#30179
An application generated with useSSO=true offers the generic OpenID login, switched on by the tl_pac_* environment variables, also on the development server
#30183
Self-Service: Open self-registration without an invitation
#30190
Remove the control application tl-factory from the engine, it is developed in its own repository
#30200
Agent Access and Recording: Commands operate on stable object IDs; technical keys are used only for recording and playback
#30215
View layer: a value channel whose value is remembered per user
#30223
Self-service mails: texts editable in the service configuration, language of an invitation selectable
#30225
Model: handlers declared on an attribute (change) or a type (creation, deletion), run within the commit
#30227
Design System UI pass, part 1b: tables with depth and visible column boundaries
#30250
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
#30253
tl-ai-core pulls the Playwright browsers (driver-bundle, 200 MB) into every application: browser tools move into the optional module tl-ai-browser
#30266
React Configuration Editor: Multi-line text (HTML, Markdown, code, multi-line) uses the entire line by default
#30267
Setting and removing administrative secrets; writable directory storage
#30268
System Environment: Display the source of configuration variables and set variables from the administration interface
#30276
AI Agents: Meaningful commit messages for changes made by an agent instead of "Agent edit"
minor
#30139
TL Views: Unit and Custom Number Format for Number Fields
#30188
TL Script: Read a binary value as text; Read a web app resource as a binary value
#30209
React Table: Show and Hide Columns Based on Channel Values (exists-if)
#30218
ModificationListener: no supported way to report to the user what a Modification changed, once the commit succeeded

defect

critical
#30146
Data migration is not protected against parallel execution when multiple cluster nodes are started simultaneously
#30196
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)
#30224
TestFlowSvgPortable does not compile: FlowFactory.chart() has the parameter fixedView
#30301
React-Views: TestTreeTableRowEdit no longer compiles on master (ExpandArguments.ROW_INDEX replaced with ROW_ID)
major
#29847
Scripted test TestTransactionMonitor-01_RevertRevision fails when a scheduled task commits concurrently
#30043
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
#30067
React Interface: Logging in in one browser tab immediately logs you out if a second tab for the application is open
#30077
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
#30078
React Interface: When setting up two-factor authentication, the key for manual entry is not displayed; only the QR code is shown.
#30079
Configured SecurityParents do not work with StructuredElementWrapper
#30082
React UI: Tabs in a dialog change the page's address and remain in the URL after the dialog is closed
#30090
Scheduler: A task that is due at startup is detached during shutdown while it is still running (NullPointerException in TaskImpl.getLog())
#30099
Scheduler tests: testStartTaskImmediately and testPeriodically have occasionally timed out since the scheduler was revised
#30103
tl-maven-plugin: If merging the view overlays fails during application build, the build remains green
#30106
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
#30107
tl-maven-plugin: If generating a layout fails during application build, the build remains green
#30109
tl-chat: After logging in, the chat in the same browser window remains at "Log in to use the chat"
#30110
An aborted external login (OIDC) leaves a logged-in session without tokens
#30115
delete-module / delete-class do not clean up hasWrapperAttValue data
#30118
Passkeys per application can be used either for password-less login or as a second factor, but not both at the same time
#30119
AlterColumnProcessor does not update stored schema for abstract types
#30123
The scheduler incorrectly reports "There is no thread to remove" when a task fails to start
#30124
OpenAPI Server: The error message for a failed script is unreadable and is generated outside the interaction context
#30125
Agent access: /agent-api answers a request without a valid credential with a redirect to the login page instead of 401
#30127
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
#30128
A run without provider credentials ends as an authentication failure, and HTTP 402 is a billing failure for every provider
#30133
View layer: a field mandatory by dynamic visibility loses its required marker on a validation change
#30141
TypeIndexer: Java 21 as a supported source version; Index records
#30143
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 …"
#30144
Chat sessions are invisible to their owner in an application with model-based security
#30147
React Interface: The "More Actions" menu does not close when the Escape key is pressed if all items are disabled
#30159
React UI Script Recorder: Recordings of tree, multiple-selection, and dropdown assertions can be replayed in a different session
#30164
TL Chat: A run that fails with an exception leaves no error in the conversation; it is gone after a reload
#30165
React: A command with ignoreStaleUi to a control that left the display still fails with 404 "Control not found"
#30166
TL Chat: runPageCommand gives the model the refusal of a page command in English instead of the user's language
#30173
OIDC login button is offered although the client has neither discovery URI nor provider metadata
#30176
The development server stops on /admin/stop from any address
#30177
The development server ignores X-Forwarded-* headers, so a relative callback URL behind a proxy names the wrong origin
#30184
DeleteTableProcessor does not remove " <alternative>" elements from the stored schema
#30201
Commit veto of the model constraints: a failed job (and its log) shows only "Cannot store, constraints violated." without the problems
#30216
Background processing fails with the error "Session revision invalid" if the window saves data while it is running (jobs, AI runs)
#30231
HtmlResKey: Also read the value as an attribute (add format)
#30244
tl-archetype-deploy: Declare the archetype integration test's dependency on tl-demo
#30247
Migrating to PostgreSQL with `autosave=NEVER`: Expected SQL errors abort the transaction
#30251
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)
#30252
tl-ai-mcp-server: tools/list is not filtered by the caller's tool access, and /mcp/ with a trailing slash answers 404
#30254
tl-chat: A missing API key is reported as a rejected key ("The model rejected the access key")
#30255
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
#29961
React applications include modules from the classic interface (self-service, WYSIWYG editor, code editor, search, monitoring, AI administration)
#30044
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
#30085
Default values <country value="..."/> and <time-zone value="..."/> (CountryDefaultProvider, TimeZoneDefaultProvider) cannot be used
#30089
The TL script functions `binarySize()` and `modelHealthReset()` return integers instead of doubles and log an error on every call
#30121
Compile-Errors in Eclipse in TL 8 alpha12
#30134
View layer: <composition-table> ignores the visibility (dynamic-visibility, hidden, read-only) of its composite attribute
#30140
TL Views: TestViewsLoad does not detect an undefined variable in a computed-column's value expression
#30142
CommaSeparatedStringSet: Non-deterministic serialization creates duplicate key attributes in the schema baseline
#30180
Flowchart (Gantt): Clicking on an element does not select anything if frozenRows &gt; 0
#30181
Flowchart (Gantt): The chart is always displayed in full—no vertical scrolling, but it becomes unreadable when there are many rows
#30185
Flowchart (Gantt): LineDeco labels (e.g., “Today”) are cut off beneath fixed headers; edges without arrowheads
#30187
Exporting diagrams as SVG (reactFlowToSvg, flowToSvg) is not suitable for Batik or printing
#30191
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)
#30197
React Table: Date cell in in-place edit accepts any partial keyboard input (e.g., year 0002)
#30198
React Views: Tree Table ({{{<tree-table>}}}) without row editing ({{{row-edit}}}) – not a replacement for the classic tree grid
#30199
React-Views: When a constraint is violated, the editable table displays only a red border, not an error message
#30204
React Table: When there are multiple row types, attribute columns are resolved only for the first type (label, sorting, filter)
#30205
React Table with Row Edit: A column based on a derived attribute is editable, but saving fails
#30206
React: A disabled `upload-command` does not display a reason; `null-input-disabled` always disables it
#30207
React: Button with an upload action does not open the file dialog
#30208
React Table: No cell display for external links (URL)
#30211
React: The built-in rules for `delete-object` and similar take precedence over the configured ones (making `visible-if` ineffective)
#30212
React: `null-input-disabled` only checks the first input
#30213
Binary attribute: Querying the content type loads the entire content; BLOB columns in object tables are loaded only for small values
#30214
View layer: tooltips drop the line breaks of their text (.tl-tooltip__body has white-space: normal)
#30226
React Table: Commands are unaware of the displayed rows or their order
#30237
React-UI: No display while a command is running on the server
#30256
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-*
#30257
React-UI: Commands from a window in a detached session generate two WARN lines per command
#30258
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.
#30259
KB: Committable.rollback() is called after a successful database commit if the changes or caches fail to be published
#30265
TL Script: When `throw()` is used or a `TopLogicException` occurs, `try()` passes only the message text to the `catch` block instead of the `ResKey`.
#30269
ModelAccessRights.isAllowed(Person, ...): Checks whether another person is granted bypass or admin status in the current context

task

major
#30046
Remove the unused service ReactComponentRegistry

update

critical
#30111
Update dependency requirejs to ^2.3.7 [SECURITY]
enhancement (User-visible)

major

#30059

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)

FollowUpMigrationReactUI

Split off #30047. Follow-up to #29767, related: #29108, #30057, #30058.

Context

The administration of the React UI is admin/admin.view.xml of tl-layout-view (sections Access control, Monitoring, System; further sections contributed by same-path overlays, see the developer article view-layer/overlays).

The classic UI has the tab Administration -> Technical -> Maintenance pages (admin/technical/maintenancePages/maintenanceView.layout.xml). It lists every JSP in /jsp/administration/maintenance/ (MaintenanceTableModelBuilder) and shows the selected one in an IFRAME. The JSPs are tools of very different kinds (export of the database, raw SQL, reload of resources, test pages, templates). Most of them are a command with some input. The classic tab and its JSPs stay, they still serve the classic UI.

Feature

The still useful maintenance functions are available in the React administration. A function that is a command acting on something is a command where that something is shown, not a page of its own. A command with input opens a dialog.

System -> Database (new view):

  • The state of the database: product and version, JDBC driver, SQL dialect, current revision and oldest revision kept in the history, each with its commit time.
  • Export dump: downloads a dump of the whole database (gzipped XML). The dump leaves out the security storage and the runtime state of the installation (tables CLUSTER_NODE, CLUSTER_VALUE).
  • Import dump: uploads a dump and shows its data version and the migration it needs. It converts the dump into an SQL script or an Oracle SQL*Loader script for download, or replaces the whole data of the application with it. Replacing requires an active maintenance window and a single running cluster node, is confirmed twice, runs while the persistency layer is restarted and keeps the runtime state of the installation (the maintenance window stays active).
  • Compact history: dialog with a date (default one year ago), Analyze and Compact. Compacting requires an active maintenance window and a single running cluster node and is confirmed; it runs as a background job and restarts the persistency layer afterwards.

System -> SQL console (new view): SQL input, Execute query (result as table with the columns of the result, limited to a maximum number of rows), Execute update (with confirmation; the caches of the knowledge base do not see changed rows until the persistency layer is restarted), Simulate update (executed and rolled back), the statements executed in the window (activating one puts it back into the input), Clear history. The statements are written to the application log, the results are not.

System -> Reload (new view): the registered reloadable resources (ReloadableManager) with a filter, the command Reload for the selected ones. A failed reload is reported per entry with its reason.

System -> Services, detail page of a service: commands for one kind of service, shown only when the running service is of that kind (TL-Script serviceInstanceOf($module, '<class or interface>')). Further modules add commands for their services with a same-path overlay of admin/system/services/service-detail.view.xml (panel detail). The commands run as background jobs with a job status on the page.

  • Indexing service: Rebuild index (with confirmation), Reindex types (dialog: types to index, only objects not yet indexed). Starting and stopping the index is starting and stopping the service.
  • Access manager with security storage: Rebuild security storage (with confirmation).

System -> Secrets: Encrypt value and Decrypt value (dialog: value, format) for the two encrypted forms a configuration accepts: the configuration encryption ({gcm}..., every encrypted configuration property) and the RSA encoding of CryptSupport (LDAP master-credential, <crypt-support-secret>). Errors are reported without revealing the value; values are never logged.

Access control -> Accounts: column Last login (read for all accounts with one query). The export of the table writes date-time columns with their time of day.

Not ported
  • Covered elsewhere: ActiveModules.jsp (System -> Services), CheckMemory.jsp (Monitoring -> Application), ReleaseMemory.jsp (memory chart, #30058), TriggerTask.jsp and ActivateMailServerDaemon.jsp (scheduler, #30057).
  • Settings.jsp (runtime flags), the mail pages (SendTestMail.jsp, TestMailServer.jsp, TestMailConnect.jsp).
  • Templates and test pages: Dummy.jsp, Migration_Template_DeleteAttributes.jsp, DeleteSpareWebfolders.jsp, FixWebFolders.jsp, TestJDBCAccess.jsp, PerformanceTest.jsp, benchmark/.

Fixed on the way

The functions above did not work reliably in a running application because of the following defects, which affect the classic UI as well:

  • After a history compaction every change of an object last changed before the compaction failed as lost update until the next restart of the JVM: the compaction rewrites the start revision of the current rows, the cached objects still knew the old one. The cached objects are now adapted to the compaction (DBKnowledgeBase.historyCompacted).
  • A dump written after a history compaction lacked all objects created in the compaction revision (ItemEventReader skipped them as branch copies of the trunk); importing it left an empty database.
  • The restart of the persistency layer after a compaction or an import left the application unusable: the session service stopped ending sessions at the first failing logout, it did not invalidate the HTTP sessions (a still open window then used objects of the old knowledge base), and it ended them after the person manager had stopped. Instantiated React views kept model parts of the old knowledge base. Requests arriving during the restart got an error instead of the busy page (which now reloads itself until the application is available again).
  • In a cluster, entering maintenance mode without delay waited the minimum waiting time of the cluster even if no other node was running.
  • The dump left the security storage in although the documentation said otherwise; it also contained the runtime state of the installation, so that importing a dump restored the maintenance state of the moment of the export.
  • <close-dialog> was ignored when it ran after an action that held the command (<start-job>, <confirm>, <verify-identity>), e.g. in the dialogs for changing the password and the deputies.
  • A finished job kept showing its last progress message next to its result.
  • ReloadableManager reported a failed reload only at INFO and without its reason.

Verification

tl-demo-react (/view/, root / root1234), Administration -> System -> Database / SQL console / Reload / Services (access manager; indexing service with tl-search-lucene) / Secrets, Administration -> Access control -> Accounts. Tests: TestHistoryCompaction, TestKBLoad, TestSqlFunctions, TestSecretFunctionsEncryption, TestReloadableManager, TestReloadableFunctions, TestAccountFunctions, TestColumnExport, TestSuspendedCommands, TestDatabaseState.

Migration

  • Die View admin/system/logs.view.xml (Modul tl-layout-view) liegt jetzt unter admin/monitoring/logs.view.xml. Ein gleichnamiges Overlay einer Anwendung (WEB-INF/views/admin/system/logs.view.xml) oder ein <view-ref view="admin/system/logs.view.xml"/> muss auf den neuen Pfad umgestellt werden; ein Overlay auf den alten Pfad hat keine Basis mehr.
  • 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