Change Log

Full list of changes in this release.

New Features and Changes

  • Feature #5582 : Add proper audit trail to doc history and store snapshots of data changes to allow future restore.

  • Feature #2109 : Add doc dependencies to DB to improve capability.

  • Feature #1556 : Add safe delete feature now we can depend on a reliable dependency discovery service.

  • Feature #4111 : Add confirmation details when deleting a folder.

  • Feature #5697 : Apply CSRF Origin/X-CSRF checks to state-changing requests whose credential was injected by an authenticating edge proxy (previously only session-cookie identities were checked), and reject cross-site browser requests carrying a request token unless they send X-CSRF: 1. In-browser clients that attach their own bearer token must now send X-CSRF: 1 on state-changing requests when edgeAuthentication.enabled is set; non-browser automation and inter-node traffic are unaffected.

  • Feature #5697 : Add security.authentication.openId.authenticationRequestExtraParams to append provider-specific parameters to the OIDC authentication request, e.g. Google’s access_type: offline without which Google issues no refresh token and the session cannot outlive the first access token.

  • Feature #5656 : Add feature to view sessions and revoke them and associated user tokens.

  • Feature #5675 : Add HTTP and TLS configuration to Git repositories.

  • Feature #5656 : Add self service account unlocking for the internal identity provider, controlled by the new properties stroom.security.identity.reactivateInactiveAccountsOnLogin and stroom.security.identity.allowLockedAccountPasswordReset, and rebuild the ‘Forgot password’ reset page so that an emailed reset link can be completed.

  • Feature #5652 : Support Elasticsearch nested field types in search.

  • Feature #5654 : Support multiple dense_vector fields in Elasticsearch rerank search.

  • Feature #5599 : Add XPath to query functions so that users can pull XML apart in Dashboard Tables.

  • Feature #5600 : Add JQ to query functions so that users can pull JSON apart in Dashboard Tables.

  • Feature #5559 : Improve node selection for node groups to allow select all and selection inversion.

  • Feature #5561 : Add feature to delete individual attachments and messages from AI chat history.

  • Feature #5561 : Add time tooltips to AI chat messages.

  • Feature #5561 : Fix user preferences resetting stroom AI preferences.

  • Feature #5561 : Open and view attachments in the AI chat window.

  • Feature #5561 : Add names to tables so they can be identified by stroom AI.

  • Feature #5565 : Make vector embedding dimension count configurable.

  • Feature #5616 : Add XSLT function for computing the similarity of two float vectors.

  • Feature #5622 : Change Stroom UI auth flow so redirects are no longer required. Allows Stroom UI to be served from another location with BFF proxy.

  • Feature #5630 : Make embedding dimensions optional.

  • Feature #5567 : Stop the content index rebuilding on first use after a node reboot. Add config props stroom.contentIndex.contentIndexDir (defaults to content_index), stroom.contentIndex.storageType (one of TEMP|LOCAL|SHARED, defaults to LOCAL) and stroom.contentIndex.minRebuildAge (defaults to PT1M). Thus the content index can now be stored locally on each node for better performance or on shared storage. Stroom now eagerly builds the content index on boot if the storage type is SHARED.

  • Feature #5515 : Change JSONParser pipeline element to truncate very long strings values. Currently very long string values can result in Out of Memory errors in Stroom. The following configuration properties have been added to the JSONParser element; stringTruncateLength (default 10,000) to truncate very long strings, maxStringLength (default 100,000,000) to cause a fatal error if a long string is encountered, maxDepth (default 500) to limit the depth of deeply nested documents. The JSONParser has also been changed so that the characters of string values are streamed to the downstream pipeline elements rather than reading the whole string into memory. NOTE: It is still possible for downstream XSLT XPATH functions to result in the entire string being read into memory.

  • Feature #5303 : Improve Stroom AI to add dockable panel, chat history, attachments, copy, download, chat details etc.

  • Feature #5282 : Add pipeline scheduling.

  • Feature #5346 : Choose which external document changes to save when saving a pipeline.

  • Feature #5377 : Embedded pipeline docs.

  • Feature #5387 : Allow pipeline stepping across multiple streams.

  • Feature #3103 : Allow multiple dashboard instances.

  • Feature : Editing items in the UI now indicates save required only when changes are made.

  • Feature #3206 : User tab sessions.

  • Feature #5366 : Rebase on master.

  • Feature #5366 : Cleanup.

  • Feature #5366 : Checkstyle.

  • Feature #5232 : Add standard annotation comments. MIGRATION: Any comments previously configured in standardComments property will need to saved as annotation comments.

  • Feature #5366 : Change icon for DataGen.

  • Feature #5366 : Add feed name to rule detection.

  • Feature : Improve the ProgressMonitor task creation logging output to included counts of errored and skipped filters. Change task creation to re-test filter enabled/deleted state just prior to creating tasks. Add validation to ProcessorConfig to enforce a minimum value of 1 on some properties.

  • Feature #5366 : Fix DataGen destination feed not firing dirty event.

  • Feature #5366 : Checkstyle.

Bug Fixes

  • Bug #5553 : Fix DocRefInfo cache bug.

  • Bug #4073 : Stop explorer scrolling to the top on deleting an item.

  • Bug #5697 : Fix the UI bootstrap never recognising a user authenticated by an edge proxy (e.g. AWS ALB + Cognito, NGINX + oauth2-proxy): /api/auth/flow/v1/status now accepts a verified request token, and the new security.authentication.edgeAuthentication config block suppresses stroom’s own OIDC flow and supports edge-aware logout when the proxy is the relying party.

  • Bug #5669 : Fix HttpClientConfigConverter not mapping verifyHostname, which prevented TLS hostname verification being disabled on HTTP clients.

  • Bug #5671 : Run directory-scanner file ingest as the processing user so that receipt checks requiring a user succeed.

  • Bug #5674 : Fix dirty behaviour on pipeline structure changes.

  • Bug #5680 : Fix account migration script.

  • Bug #5679 : Fix slow processor task assignment on large clusters. Task queueing now takes account of processing profiles so that tasks no node is allowed to process are not queued, and are released if a profile stops allowing them. Task assignment no longer repeatedly fills the queue when there is nothing to add, and only one request fills the queue at a time while the others wait for it.

  • Bug #5679 : Fix processor task creation not recording errors against the filter tracker, and not stopping when a task creation limit has been reached.

  • Bug #5685 : Fix inability to unset Max Processing Tasks on a processor filter.

  • Bug #5678 : Fix processor task retention only using the stroom.processor.deleteAge value that was current when the node started. The Processor Task Retention job now reads the property on each run, so a change to it takes effect without a node restart.

  • Bug #5663 : Fix OpenAPI spec for polymorphic types.

  • Bug #5647 : Fix user entered name being ignored when creating a new volume group.

  • Bug #5646 : Fix onChange() behaviour for document edits.

  • Bug #5651 : Fix file uploads bug introduced by CSRF change.

  • Bug #5560 : Fix processing schedule list label.

  • Bug #5548 : Fix PlanB filter XML value bug.

  • Bug #5562 : Add missing tab types to session restore.

  • Bug #5617 : Fix tab visibility on resize.

  • Bug #5621 : Support numeric comparators for Elasticsearch float and double fields.

  • Bug #5573 : Fix Ask Stroom AI error handling behaviour when requests are too large.

  • Bug #5574 : Fix Ask Stroom AI dock behaviour.

  • Bug #5575 : Change ask Stroom AI table page menu item.

  • Bug #5576 : Increase default AI model HTTP timeouts to 10 minutes.

  • Bug #5585 : Fix dashboard tab rename bug.

  • Bug #5577 : Fix bug affecting AI chat model selection.

  • Bug #5601 : Fix bug stopping embedded queries being edited.

  • Bug #5568 : Add analytic rule info to error stream messages.

  • Bug #5636 : Fix expression term quote removal bug.

  • Bug #5640 : Fix CSRF checks.

  • Bug : Change the behaviour of JSON deserialisation to not error when a null value is encountered for a primitive type. This is how it used to behave in 7.12. However it now logs an error if a null primitive is encountered, so the corresponding Java class can be fixed to properly support null values.

  • Bug #5579 : Change test collation to utf8mb4_0900_ai_ci.

  • Bug #5558 : Fix processor profiles allowing processing for disabled node groups.

  • Bug : Fix DocRef hover copy/open links not appearing.

  • Bug #5535 : Fix simple string values not appearing in Pipeline Property table.

  • Bug : Fix Null Pointer type bug on Data Receipt Rules screen.

  • Bug : Fix output of the manage_users –listPermissions command.

  • Bug : Fix missing arg validation on reset_password CLI command. Obfuscate password in logging.

Dependency Changes

  • Dependency #5624 : Upgrade langchain4j and openai-java libs.

  • Dependency : Uplift AWS SDK to 2.46.7 and hbase-shaded-netty to 4.1.13.

  • Dependency : Uplift Dropwizard to 5.0.2.

  • Dependency : Uplift DropWizard to v5.0.1.

  • Dependency : Uplift net.openhft:zero-allocation-hashing to 2026.0.

  • Dependency : Add Jackson JSON library 3.1.2 in addition to the existing 2.21.2 version. Stroom/Stroom-Proxy are now using v3 with the exception of a few specific areas that need legacy capability only available in v2. v3 is a significant change from v2 with some breaking changes and some differences in behaviour. Special attention should be paid to the output of JSONParser pipeline element to ensure it is behaving as expected.

  • Dependency : Uplift base docker images to eclipse-temurin:25.0.3_9-jdk-alpine-3.23.

  • Dependency : Uplift org.apache.commons:commons-pool2 from 2.12.1 to 2.13.1.

  • Dependency : Uplift org.flywaydb:flyway-core from 11.20.0 to 12.0.0.

  • Dependency : Uplift org.eclipse.jgit:org.eclipse.jgit from 7.3.0.202506031305-r to 7.5.0.202512021534-r.

  • Dependency : Uplift org.apache.solr:solr-solrj from 9.8.0 to 9.10.1.

  • Dependency : Uplift swagger from 2.2.41 to 2.2.42.

  • Dependency : Uplift gwt from 2.12.2 to 2.13.0.

  • Dependency : Uplift co.elastic.clients:elasticsearch-java from 9.2.1 to 9.3.2.

  • Dependency : Uplift org.yaml:snakeyaml from 2.2 to 2.6.

Code Refactor

  • Refactor #5557 : Change config class constructors to correctly handle and default null primitive values on deserialisation from YAML.

  • Refactor : Change json (de)serialisation to not go via a String when dealing only with byte[] data.

  • Refactor : Refactor the feedKey locking in PreAggregator and make AttributeMapUtil#readKeys() more lenient when reading .meta files.

  • Refactor : Remove HBase statistics (may require change to default config).

  • Refactor : Remove ScyllaDB based state store.

  • Refactor : Replace NullSafe.requireNonNullElse() with Objects.requireNonNullElse().

  • Refactor : Replace NullSafe.requireNonNullElseGet() with Objects.requireNonNullElseGet().

Build Changes

  • Build : Fix CI build failure due to missing Docker container prefix.

  • Build : Uplift gradle-wrapper from 9.3.0 to 9.3.1.

Uncategorised Issues

  • Issue #5366 : Add level and status to rules.

  • Issue #5366 : Create new doc object DataGen.

  • Issue #5366 : Add Execution tab to DataGen.

  • Issue #5366 : Implement job scheduling for DataGen.

  • Issue #5366 : Refactor schedulers.

  • Issue #5366 : Refactor schedulers to interface and cleanup.

  • Issue #5366 : Fix typo.

Last modified August 14, 2026: fix build (307b3f0)