Updates 2026/06/25

A lot of little fixes, changes and additions have happened. One very useful feature is the ability to create self-contained HTML plots in the Flow (ActualVsPredictedProcessor transformer) and the Weka Investigator (HTMLOutput output generator).

Fixes

  • adams-core:

    • SQLStatement objects now have their correct GOE editor associated again.

    • The remove method of the StorageQueueHandler now returns the payload of the queue item rather than the queue item, to allow the DeQueue source to forward the correct object.

    • Maximizing/minimizing BaseDialog-derived dialogs now work better on multi-monitor setups.

    • The Make timed operation from the Flow editor popup menu now correctly wraps actors that don't have a timed equivalent.

Changes

  • adams-core:

    • The database connection dialog now allows the user to export the currently selected connection to a .props file.

    • The FileChanged boolean flow condition can generate a 'file changed' event the first time the file is being checked.

    • The database connection actors can obtain their password now from an environment variable as well.

    • Introduced the environment variable ADAMS_LOGGING_HANDLER for defining the default logging handler

    • The FileHandler and RotatingFileHandler log handlers now use a thread for writing the records to disk to eliminate a performance bottleneck. The thread gets shut down with the StopLogging builtin shutdown hook.

    • Upgraded log4j to 2.25.3 to address CVE-2025-68161

    • Upgraded rsyntaxtextarea to 3.6.1

    • Upgraded mysql-connector-j to 9.6.0

    • Upgraded simple-directory-chooser to 0.0.4

    • Upgraded jeneric-cmdline to 0.0.7

    • Upgraded flatlaf to 3.7.1

    • The Exec/Command sources and Exec transformer now expand flow variables in the value part of environment variables automatically.

    • The Command and Exec sources now allow storing the exit code in a variable.

    • The HashSetInit standalone and transformer now allow specifying the initial capacity of the underlying set.

    • The Make timed operation of the Flow editor popup menu now always makes the callable actor optional and uses the current actor's name as the prefix (plus ": ").

  • adams-bootstrapp: Upgraded bootstrapp to 0.1.15

  • adams-db:

    • Upgraded postgresql to 42.7.10

    • Upgraded hsqldb to 2.7.4

    • Upgraded sqlite-jdbc to 3.53.0.0

    • Upgraded h2 to 2.4.240

    • Upgraded mssql-jdbc to 12.10.2.jre11

  • adams-excel:

    • ExcelSpreadSheetReader and FastExcelSpreadSheetReader now have an option whether to fill in empty header cells or not.

    • Upgraded Apache POI to 5.5.1

    • Upgraded fastexcel-reader to 0.20.0

  • adams-imaging:

    • The Edit object annotation tool now allows changing the size of the handles for the vertices.

    • The PolygonPointAnnotator now shows the Unset button in the labels again.

  • adams-net:

    • These standalones allow obtaining the password from an environment variable now: IMAPConnection, SMBConnection, SMTPConnection, SSHConnection

    • The HttpRequest source and transformer now support redirects (default is no).

    • The HttpRequest source/transformer and HttpPostFile transformer now allow storing the status code and/or body directly in variables.

    • Swapped the websocket library com.pusher:java-websocket:1.4.1 with org.java-websocket:Java-WebSocket:1.6.0

  • adams-rats-core:

    • The Exec rat input and Exec rat output now expand flow variables in the value part of environment variables automatically.

  • adams-redis:

    • These standalones allow obtaining the password from an environment variable now: RedisConnection

  • adams-security:

    • These standalones allow obtaining the password from an environment variable now: KeyManager, TrustManager

  • adams-spreadsheet:

    • The SpreadSheetVariableRowIterator transformer can suppress variable notifications now as well.

    • The LookUpInit standalone and transformer now allow specifying the initial capacity of the underlying lookup table.

  • adams-weka and adams-weka-lts:

    • The Weka Dataset compatibility tool now offers strict/lenient mode. The latter only requires the attribute types to match, not the names.

    • The Weka Investigator offers a strict/lenient mode for dataset compatibility now as well.

    • Added support for lenient dataset compatibility to transformers: WekaInstanceBuffer, WekaInstanceDumper, WekaInstancesAppend and WekaTrainTestSetEvaluator.

    • The Weka Append Datasets tool now allows lenient dataset compatibility.

    • Added Copy name to the header popup menu of the InstancesTable class.

    • The WekaClassifying transformer now stores the probability for the predicted class label in WekaPredictionContainer as well: Classification probability, Abstention classification probability.

Additions

  • adams-core:

    • added the IsStringValue and IsAnyStringValue boolean flow conditions for fast checks (faster than evaluating Expression).

    • added the ChangeJobRunnerUsage actor processor for updating the state of JobRunnerUser and JobRunnerSupporter objects.

    • added the Sort sub-flow menu item to the flow tree popup menu (as part of More sub-menu), which allows sorting all the actors in the sub-flow below the selected actor; sorting is done on the name in case-insensitive fashion.

    • added action "Rename" to the file list popup in the Preview browser.

    • added the DeleteManyVariables standalone/transformer to delete multiple variables in one go.

    • added the AbsolutePath conversion to make it quicker to convert a string into an absolute path, rather than using StringToFile and FileToString in conjunction.

    • added the DeleteManyStorageValues standalone/transformer to delete multiple storage items in one go.

    • added the TimedStandalone standalone actor for providing timings for standalone actors as well.

  • adams-git:

    • added the GitRepo standalone for specifying a git repo, Git source and Git transformer actors for executing git operations.

  • adams-imaging:

    • added the FixedSizeBoundingBoxAnnotator annotator which allows placing a rectangle of certain width/height centered around the left mouse click for rapid annotation of similar sized objects.

    • added the PascalVOCObjectLocationsWriter report writer that generates XML output in the Pascal VOC format.

  • adams-ml:

    • Added the ActualVsPredictedProcessor transformer and the associated class hierarchy of processors that turn actual vs predicted data into other output, e.g., HTML-based plots.

  • adams-rest-openapi: The OpenAPI functionality was moved into a separate module to avoid unnecessary bloat in the adams-rest module.

  • adams-rest-sse: experimental module for offering Server-sent events (SSE) via the GenericServer REST server: https://en.wikipedia.org/wiki/Server-sent_events

  • adams-spectral-2dim-core:

    • added FlowSpectrumReader and FlowSpectrumWriter reader/writer for loading/saving spectra using flow fragments.

    • added AutoDetectSpectrumReader which uses several base readers for loading spectra from files. First reader that can handle a file (based on its supported file extensions), will read the it.

  • adams-weka and adams-weka-lts:

    • added the RemoveSampleIDs batch filter that removes rows that have blacklisted sample IDs (loaded from a text file).

    • added the HTMLOutput evaluation plugin to the Classifiers tab in the Weka Investigator, which generates self-contained HTML files using the specified processor, e.g., scatter plots or kernel density plots.

    • Added the Unique values menu item plugin to the InstancesTable class.

    • Added the WekaInstancesToInstancesView conversion to make Weka Instances objects available to spreadsheet processing components.