)]}'
{
  "log": [
    {
      "commit": "0bd102891b0e996411053cc7f9263f7e4242dd52",
      "tree": "fac776e59674df8d9392f7f19fa642f1cc5f8210",
      "parents": [
        "b9dfafd76dfc39a7a92c8e9c110d83813eb1cec6"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Wed Oct 28 14:18:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 14:18:44 2026 +0100"
      },
      "message": "fix build issue on jenkins (#9127)"
    },
    {
      "commit": "b9dfafd76dfc39a7a92c8e9c110d83813eb1cec6",
      "tree": "2e23293e9e9bdaa4aea68e1d411a78896874db77",
      "parents": [
        "ad6314a4669add8467da2e8f6eca96948ac4468e"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Wed Oct 28 14:13:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 14:13:14 2026 +0100"
      },
      "message": "Document the result of the Wait for file, Process result filenames, Write to file, Evaluate files metrics, XML well formed and DTD validator actions. #8970 (#9111)"
    },
    {
      "commit": "ad6314a4669add8467da2e8f6eca96948ac4468e",
      "tree": "0e5b77b45e60f6b1b981ef955ade1075ec07459a",
      "parents": [
        "590e589bf2c22cea818a0d1096aff59999c76de3"
      ],
      "author": {
        "name": "Wu Shuwen",
        "email": "mikewushuwen@outlook.com",
        "time": "Wed Oct 28 21:12:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 14:12:48 2026 +0100"
      },
      "message": "Preserve uncommitted file changes during revert and cherry-pick (#9110)\n\n* Preserve uncommitted changes when restoring a file\n\n* Warn before replacing locally changed Git files"
    },
    {
      "commit": "590e589bf2c22cea818a0d1096aff59999c76de3",
      "tree": "e1ebb1acdc2022a6310d837d320335c7f5c5ef97",
      "parents": [
        "07b13d2e008b5e37d2f28b11de8306f3dc7e5869"
      ],
      "author": {
        "name": "Sergio Ramazzina",
        "email": "sergio.ramazzina@serasoft.it",
        "time": "Wed Oct 28 13:03:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 13:03:26 2026 +0100"
      },
      "message": "Issue apache#2814 [Bug]: changing GUI language changes also decimal separator (#8159)\n\n* Issue apache#2814 [Bug]: changing GUI language changes also decimal separator\n\n* The interface language was installed as the JVM-wide default locale, so it\n  also decided decimal separator, grouping separator, currency and date\n  formats. The language now writes only Locale.Category.DISPLAY and the\n  regional settings write Locale.Category.FORMAT.\n* Regional settings had no representation of their own. Added RegionalSettings\n  in core, resolving a single source - OPERATING_SYSTEM (the default), CUSTOM\n  or LANGUAGE - from RegionalSettingsSource and RegionalSettingsLocale in\n  hop-config.json; an unreadable or unknown configuration degrades to\n  OPERATING_SYSTEM.\n* Locale.setDefault lived in HopGui.main, so hop-run and hop-server never\n  applied it and the same pipeline formatted differently in the editor and in\n  production. The regional settings are now applied from HopEnvironment.init(),\n  the bootstrap common to every entry point.\n* Const.DEFAULT_DECIMAL_SEPARATOR and its siblings are static final, computed\n  at class load before any locale was installed, and ValueMetaBase copied them\n  into every value, overwriting correctly localised symbols. Added\n  getDefaultDecimalSeparator(), getDefaultGroupingSeparator(),\n  getDefaultCurrencySymbol() and getDefaultNumberFormat(), which read the live\n  FORMAT category and cache the symbols against the locale they were built\n  from; the constants are kept and deprecated because they are public API.\n* The setting was not reachable from the GUI. Added a Regional settings tab\n  carrying the interface language combo moved out of GUI options, two mutually\n  exclusive checkboxes, a type-to-filter combo over the available locales and a\n  live preview of the resulting formats.\n* ValueMetaBase and ValueMetaTimestamp compared an explicitly chosen date\n  format locale against Locale.getDefault(), so a field locale that happened to\n  match the interface language was discarded and the date rendered with the\n  regional locale instead. The comparison now reads the FORMAT category.\n\nFixes #2814\n\n* Issue #2814 : FORMAT date locale, log effective regional settings\n\nValueMetaBase copied Locale.getDefault() into every field, which is the\ninterface language once DISPLAY and FORMAT are split. New fields now take\nthe FORMAT category so month names follow regional settings, not the GUI\nlanguage.\n\nhop-gui, hop-run and hop-server log the effective language, FORMAT locale\nand timezone at start so a machine-local mismatch is visible.\n\nDocs: field-level symbols still win; default OS source still differs\nacross machines unless Override is set; Beam/Spark workers do not load\nhop-config.json.\n\n* Issue #2814 : FORMAT locale for the OS default and collation, lock-free format defaults\n\n---------\n\nCo-authored-by: mattcasters \u003cmattcasters@gmail.com\u003e\nCo-authored-by: Hans Van Akelyen \u003chans.van.akelyen@gmail.com\u003e"
    },
    {
      "commit": "07b13d2e008b5e37d2f28b11de8306f3dc7e5869",
      "tree": "c0b92a3f340abccf070a7c0a5d1bb677a5bcc5cf",
      "parents": [
        "d596742625bc6bf0503e3650537a22556f3cddeb"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 12:19:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 12:19:50 2026 +0100"
      },
      "message": "[RELEASE] post release spotless (#9115)"
    },
    {
      "commit": "d596742625bc6bf0503e3650537a22556f3cddeb",
      "tree": "677b79ad3726cb9ed9cc97f6451c0cb896be90ad",
      "parents": [
        "f7b464dbf123de6832f79dc0e53a0673066c9d51"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 10:47:05 2026 +0100"
      },
      "committer": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 10:47:05 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "f7b464dbf123de6832f79dc0e53a0673066c9d51",
      "tree": "e687aa7e155c6f4d44192f8d370cd7071499e7c0",
      "parents": [
        "8b5810e296938853df93e20c6dc5c9a756f021f0"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 10:47:04 2026 +0100"
      },
      "committer": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 10:47:04 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release 2.20.0-rc1\n"
    },
    {
      "commit": "8b5810e296938853df93e20c6dc5c9a756f021f0",
      "tree": "eced03398d47449e86adad7ab4e93766503c6fc7",
      "parents": [
        "e3d1b597ccd96ddea27d10a444452a124b6c6ab5"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 08:27:29 2026 +0100"
      },
      "committer": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Tue Oct 27 08:27:29 2026 +0100"
      },
      "message": "[RELEASE] fix broken javadoc, make guard run same build\n"
    },
    {
      "commit": "e3d1b597ccd96ddea27d10a444452a124b6c6ab5",
      "tree": "d8ebbb4c049c06d108946d53de858281b0d17788",
      "parents": [
        "0bc064d5d9cbad845593f4a6cc4973922fee32a2"
      ],
      "author": {
        "name": "Jeferson",
        "email": "jefersonnavarro@gmail.com",
        "time": "Mon Oct 26 05:18:33 2026 -0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 09:18:33 2026 +0100"
      },
      "message": "Brazilian portuguese translation (#9103)"
    },
    {
      "commit": "0bc064d5d9cbad845593f4a6cc4973922fee32a2",
      "tree": "f88f170cb443050467a6ce7e798fc241756a4d7e",
      "parents": [
        "266d7b4e6db094cfd99941ca014e4d85e194d06f"
      ],
      "author": {
        "name": "vbhanuchander-lang",
        "email": "v.bhanuchander@gmail.com",
        "time": "Sat Oct 24 17:32:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 23:32:44 2026 +0200"
      },
      "message": "Issue #9049 : Fix the result of Add filenames to result, Unzip, Delete file, Create folder and Delete filenames from result (#9101)\n\n- Add filenames to result: a result row with only the file or folder no\n  longer throws, it takes all files as with an empty wildcard.\n- Unzip: a zip file that can\u0027t be read or deleted counts as one error, not\n  two, and \"If file exists \u003d Fail\" only applies to entries that pass the\n  include/exclude wildcards.\n- Delete file: false when the file could not be deleted.\n- Create folder: false when a file exists with the folder name.\n- Delete filenames from result: matching result files are removed even when\n  they no longer exist on disk.\n\nThe NOTEs that documented the old behaviour are removed."
    },
    {
      "commit": "266d7b4e6db094cfd99941ca014e4d85e194d06f",
      "tree": "83c201d5ac70b63b2cd6aab5f6c49921bc7f329d",
      "parents": [
        "32c2ce6400844ce99cfb060b0c7e9cd24884463e"
      ],
      "author": {
        "name": "Romain Manni-Bucau",
        "email": "rmannibucau@gmail.com",
        "time": "Sat Oct 24 22:02:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 22:02:29 2026 +0200"
      },
      "message": "Allow MetaInject to run when all input streams are empty (#9078)\n\n* Allow MetaInject to run when all input streams are empty\n\nIntroduce a ConditionStreamBehavior enum that replaces the legacy\nallowEmptyStreamOnExecution boolean. It adds a third ALWAYS mode so the\ninjected template pipeline can run even when every input stream is empty\n(e.g. templates relying on constant mappings alone), while ALL_NON_EMPTY\nand AT_LEAST_ONE_NON_EMPTY preserve the previous false/true semantics.\n\nAdd a general @OnUnknownDeserializationProperty callback honored by both\nthe XML and JSON serializers, so legacy files still carrying the old\nallow_empty_stream_on_execution tag keep mapping correctly (Y/true to\nAT_LEAST_ONE_NON_EMPTY, N/false to ALL_NON_EMPTY), without writing it on\nnew metadata. The helper returns instance-bound Consumer callbacks built\nfrom Class.getMethods(), so only public methods are discovered and a\npublic override masks its parent.\n\nNew files are serialized with only the condition_stream_behavior key.\nThe dialog checkbox becomes a dropdown of the three modes, with en/fr/pt_BR\nlabels, and the user/dev manuals document the option and the callback.\n\n* #9078 Keep legacy MetaInject allow-empty-stream behavior working\n\nBackward-compatible handling of the legacy ALLOW_EMPTY_STREAM_ON_EXECUTION\ninjection key and allow_empty_stream_on_execution config tag after the move\nto ConditionStreamBehavior: remap the old injection key and translate\nY/N/true/false to the enum code, apply the legacy tag only when the new enum\nis absent, fix unknown-value parsing in the JSON serializer, add missing i18n,\nand cover the legacy paths with parameterized tests.\n\n* #9078 Resolve the legacy MetaInject allow-empty-stream key at every lookup site\n\nAddress the round-2 review feedback on PR #9078: the legacy\nALLOW_EMPTY_STREAM_ON_EXECUTION injection key is now normalized to\nCONDITION_STREAM_BEHAVIOR everywhere the mapping is read, not only during\nthe injection itself.\n\n- collectDataForOneMapping resolves the key up front so lookupGroupKey and\n  HopMetadataInjector.isTopLevelInjectionKey see the normalized key; a\n  legacy mapping stored with target_detail\u003dY is no longer logged as\n  TargetKeyNotFound and is injected under CONDITION_STREAM_BEHAVIOR.\n- getUnavailableTargetKeys checks the resolved key, so the dialog no\n  longer offers to delete a legacy mapping that would actually run.\n- MetaInjectDialog.findMappingForTargetKey normalizes both keys so the\n  source of a legacy mapping stays visible in the Inject Metadata tree.\n- resolveInjectionKey is widened to protected static so the dialog (same\n  package) and subclasses can reuse it while staying out of the public API.\n\nDocs: the @OnUnknownDeserializationProperty example in the dev manual now\nshows the conditionStreamBehaviorSet guard so the legacy boolean cannot\noverride an explicit condition_stream_behavior (current enum wins when both\ntags are present).\n\nTests: add coverage for getUnavailableTargetKeys keeping a legacy-key\nmapping, and for the target_detail\u003dY scalar path injecting the enum code.\n\n* #9078 Address round-3 review feedback on the ConditionStreamBehavior change\n\n- ConditionStreamBehavior.isLegacyBoolean now compares with equalsIgnoreCase\n  instead of default-locale toLowerCase, so an uppercase legacy TRUE still\n  maps to AT_LEAST_ONE_NON_EMPTY even under a Turkish (or similar) JVM locale;\n  the legacy key constant-injection test gains a mixed-case TRUE case.\n- MetaInjectDialog.enterMapping builds its MappingTarget with the normalized\n  target key (new package-private resolveTargetAttributeKey, delegating to\n  MetaInject.resolveInjectionKey) instead of the raw saved key, so a mapping\n  still stored as ALLOW_EMPTY_STREAM_ON_EXECUTION is pre-selected in the\n  mapping dialog and survives a confirm instead of being dropped.\n- The condition-stream-behavior CCombo is now SWT.READ_ONLY so only the enum\n  descriptions can be selected; a typo or cleared field can no longer silently\n  fall back to ALL_NON_EMPTY.\n- Test/dialog javadocs no longer narrate the PR review history; they state the\n  behavior under test, and the resolveInjectionKey javadoc lists every lookup\n  site (now including the enter-mapping target row)."
    },
    {
      "commit": "32c2ce6400844ce99cfb060b0c7e9cd24884463e",
      "tree": "7221e324a0a6e9de37abb7fe11a7258f1bfab301",
      "parents": [
        "f260c7e484a0fa454a35dc5fb39c2a1501a8f45d"
      ],
      "author": {
        "name": "Happy",
        "email": "beatum.he@outlook.com",
        "time": "Sun Oct 25 03:56:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 21:56:45 2026 +0200"
      },
      "message": "Fix:stale parameter handling in the Pipeline Executor when retries are enabled and variables are inherited from parent scopes (#9059)\n\n* Enhance DatabaseJoin to support named and positional SQL parameters\n\n* Enhance DatabaseJoin to support runtime output metadata initialization and improve parameter handling\n\n* Add tests for mixed named and positional SQL parameters in DatabaseJoinMeta\n\n* Added a new core SQL parser: parseSqlParameterSpec(String) that returns\n\n* Refactor DatabaseJoin to simplify output field name handling and ensure parameter specification is initialized\n\n* Refactor DatabaseJoinMeta to streamline SQL parameter handling and enhance metadata discovery\n\n* Add tests for SQL parameter parsing and metadata handling in DatabaseJoinMeta\n\n* Fix SQL parameter parsing for JSONB operators and ARRAY expressions\n\n- Skip only explicit JSONB operator tokens: `?|`, `?\u0026`, `??`, `??|`,\n  and `??\u0026`.\n- Consume complete operator tokens so `col ?? ?` still counts the trailing\n  `?` as a bind parameter.\n- Stop treating all `[...]` expressions as bracket-quoted identifiers.\n- Add dialect-aware bracket handling for SQL Server.\n- Preserve PostgreSQL parameter markers in `ARRAY[?]` and `ARRAY[?, ?]`.\n- Apply the same parsing behavior to the Database Join path.\n- Expand regression coverage for JSONB operators, `LIKE`, `NOT LIKE`,\n  `BETWEEN`, `SELECT ? FROM dual`, and ARRAY expressions.\n\n* Enhance parseSqlParameterSpec() call in DatabaseJoin to support bracket-quoted identifiers\n\n* Refactor parseSqlParameterSpec() in DatabaseJoinMeta to support bracket-quoted identifiers\n\n* Add tests for mixed named and positional placeholders in SQL parameter parsing\n\n* Refactor SQL parameter tests to improve clarity and coverage for JSONB operators and bracket-quoted identifiers\n\n* Add resolved parameters panel to DatabaseJoinDialog for improved SQL parameter handling\n\n* Refactor PipelineExecutor to improve parameter handling and add retry logic for pipeline execution\n\n* Add retry attempts and delay configuration to PipelineExecutorDialog for improved error handling\n\n* Add unit tests for retry logic in PipelineExecutor to validate execution attempts\n\n* Add retry configuration panel to PipelineExecutorDialog for enhanced error handling\n\n* Add support for retry options in PipelineExecutorMeta with XML handling\n\n* Add timeout handling to executePipelineAttempt for retry logic\n\n* Add support for additional parameters in executePipelineAttempt and enhance retry logic tests\n\n* Add log message for interrupted retries and update tooltip for wait timeout\n\n* Refactor retry logic in executeWithRetries and add cleanup for previous attempts\n\n* Add tests for cleanup and retry logic in PipelineExecutor\n\n* Update documentation for pipeline execution parameters to clarify retry behavior and timing\n\n* Refactor cleanup logic in executePipelineAttempt to use stopPreviousAttemptPipeline\n\n* Add tests for cleanup behavior in executeWithRetries method\n\n* Enhance retry logic in PipelineExecutor to refresh parameter variables from external scopes\n\n* Add tests for refreshing parameter variables from external scopes in PipelineExecutor\n\n* Refactor PipelineExecutor to streamline parameter variable refresh logic and improve retry handling\n\n* Add tests for refreshing parameter variables from external scopes in PipelineExecutor\n\n* Add integration tests for Pipeline Executor retries\n\nRun a child that fails once, then succeeds. Check that an inherited\nvariable and a static ${TOKEN} cell pick up the value published on the\nroot scope, and that a null, a boolean and a date stay the same on both\nattempts.\n\n---------\n\nCo-authored-by: happy.he \u003chappy.he@asteelflash.com\u003e\nCo-authored-by: mattcasters \u003cmattcasters@gmail.com\u003e"
    },
    {
      "commit": "f260c7e484a0fa454a35dc5fb39c2a1501a8f45d",
      "tree": "f3df56731bba6a2a1f0dc17104b12190822c25c2",
      "parents": [
        "45d652eaf63451028feedd9617a17dd312c4e113"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Sat Oct 24 11:34:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 11:34:44 2026 +0200"
      },
      "message": "Issue #8946 : Write local Spark files on Windows without winutils (#8951)\n\nHadoop\u0027s local file system shells out to winutils.exe when Spark file output creates the output directory. On Windows that fails with \"HADOOP_HOME and hadoop.home.dir are unset\" when neither is set.\n\nWhen Hop creates the Spark session and winutils is missing, skip those permission changes. An explicit spark.hadoop.fs.file.impl in the run configuration still wins."
    },
    {
      "commit": "45d652eaf63451028feedd9617a17dd312c4e113",
      "tree": "0c233bbf37692fe48d3a5943060384513cb6897d",
      "parents": [
        "ac675e443263798a4079f26f0219ad0758f3f4ad"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Sat Oct 24 09:40:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 09:40:50 2026 +0200"
      },
      "message": "Run PipelineCompleted before releasing waitUntilFinished(), fixes #9005 (#9035)\n\n* Run PipelineCompleted before releasing waitUntilFinished(), fixes #9005\n\n- call the PipelineCompleted extension point before releasing waiters, and release them in a finally\n- register the TransformFinished extension point ahead of the pipeline\u0027s completion detection\n- fire TransformBeforeStart/TransformFinished for the SingleThreaded pipeline type\n- flush the lineage hub in HopRun before System.exit\n\n* Count completion failures before releasing waiters, flush lineage on hop-run error exits, #9005"
    },
    {
      "commit": "ac675e443263798a4079f26f0219ad0758f3f4ad",
      "tree": "68c85510561437354cd762bdc7169a5d93486e50",
      "parents": [
        "99e6196b0cf6c2d839370d957c2f931fa2ae337d"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Sat Oct 24 09:40:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 09:40:29 2026 +0200"
      },
      "message": "SFTP slashes for z/Os, improved error messages #9033 (#9043)\n\n* Issue #9033 : Keep the second slash of a single-level z/OS data set path in SFTP\n\n* Issue #9033 : SFTP Put reports a target that isn\u0027t a file, and the root cause of errors\n\n* Issue #9033 : Keep the second slash of single-level data set paths in SftpClient too\n\n* Issue #9033 : Only explain z/OS data sets for data set targets, translate the root cause label"
    },
    {
      "commit": "99e6196b0cf6c2d839370d957c2f931fa2ae337d",
      "tree": "51aa4d2c52bbb96e6074c76dcebaee423aa7f93e",
      "parents": [
        "e246a92b83990f3289af45ab6374e3ce1a65e98f"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Sat Oct 24 09:40:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 09:40:05 2026 +0200"
      },
      "message": "Fixes #9084 : Imported PDI step types get the Hop transform id case, … (#9086)\n\n* Fixes #9084 : Imported PDI step types get the Hop transform id case, Hop GUI finds icons regardless of case\n\n* Issue #9084 : Use the main transform plugin id when loading a pipeline and when importing from Kettle"
    },
    {
      "commit": "e246a92b83990f3289af45ab6374e3ce1a65e98f",
      "tree": "710365c3456efbc1c14b97b72d213df5c12e778a",
      "parents": [
        "6aa784196cad8f15669b7e6560c8a9082163c555"
      ],
      "author": {
        "name": "Ankit Garg",
        "email": "anki88520@gmail.com",
        "time": "Sat Oct 24 13:09:45 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 09:39:45 2026 +0200"
      },
      "message": "Document the File Explorer file types and text editor features #9070 (#9088)\n\nList all the file types the File Explorer handles with their extensions,\nincluding BAT and CMD, shell, Python, SQL, YAML, HTML, PDF and the text\nfiles that are matched by name. Say that HTML and PDF are shown rendered.\n\nDescribe Find and Find/Replace in the text editor, the Pretty-print JSON\nbutton and the Markdown preview tab."
    },
    {
      "commit": "6aa784196cad8f15669b7e6560c8a9082163c555",
      "tree": "a732258582fb73644bcabd0590df4fb21b0598a5",
      "parents": [
        "d3287536e91b4c032e231c26017cf6511f1b6373"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Sat Oct 24 09:38:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 09:38:56 2026 +0200"
      },
      "message": "Make the Monaco download URL configurable, document building behind a firewall, fixes #9093 (#9094)"
    },
    {
      "commit": "d3287536e91b4c032e231c26017cf6511f1b6373",
      "tree": "5a1347cd870d77e941856f7ebb68a7f69371066b",
      "parents": [
        "0b32f2c076747f75f16b01d9eb7ae9f08eddece6"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Fri Oct 23 11:12:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 11:12:14 2026 +0200"
      },
      "message": "Issue #9089 : Add local run configurations to new Hop setups (#9090)\n\n* Issue #9089 : Add local run configurations to new Hop setups\n\nSetup copied only the top level of the default project template, so a new\nconfiguration was created without the local pipeline and workflow run\nconfigurations. Copy the full template and add those configurations when\nthey are missing.\n\n* Issue #9089 : Copy nested folders only for the default project template"
    },
    {
      "commit": "0b32f2c076747f75f16b01d9eb7ae9f08eddece6",
      "tree": "f92eb75e46f8ec93d04317316a0361b696146691",
      "parents": [
        "da19d925b70b21a931c71dfa71d772f0f47dc604"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Fri Oct 23 11:12:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 11:12:04 2026 +0200"
      },
      "message": "Issue #9091 : Add a Start action to workflows created from the file explorer (#9092)\n\nThe file explorer Create workflow command saved an empty workflow. File \u003e New already added a Start action. Both paths now share HopWorkflowFileType.addDefaultStartAction."
    },
    {
      "commit": "da19d925b70b21a931c71dfa71d772f0f47dc604",
      "tree": "1fde3955659ccc203dd438e30a516bd11e653a16",
      "parents": [
        "f37520fb52b99d9940b0c63be65cab3bad9e09e5"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Fri Oct 23 13:59:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 07:59:27 2026 +0200"
      },
      "message": "Fix#9041  YAML input list-of-maps reading and null-path failures (#9082)\n\n* Fix YAML input list-of-maps reading and null-path failures\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n* Fix YAML input list-of-maps reading and null-path failures\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n---------\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "f37520fb52b99d9940b0c63be65cab3bad9e09e5",
      "tree": "28a3d71eab3a8a9f02b55d4b29bf229082bd53ef",
      "parents": [
        "cc2fb8c44edfe8c2e7825ac641318421cd9c4f4b"
      ],
      "author": {
        "name": "Ankit Garg",
        "email": "anki88520@gmail.com",
        "time": "Fri Oct 23 11:29:04 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 07:59:04 2026 +0200"
      },
      "message": "Escape variable references in the docs that Asciidoctor reads as attributes #9069 (#9087)\n\nA variable such as ${PROJECT_HOME} in inline code is read by Asciidoctor\nas the attribute {PROJECT_HOME}, which gives 35 \"skipping reference to\nmissing attribute\" warnings in 27 pages when building the docs. Write\nthem as `+${PROJECT_HOME}+`, like the other pages already do.\n\nAlso remove the stray \"(TODO)\" at the end of the IHopMetadataObjectFactory\nparagraph in the metadata plugins page of the developer manual."
    },
    {
      "commit": "cc2fb8c44edfe8c2e7825ac641318421cd9c4f4b",
      "tree": "e1ef85c47572b3535e49472c11c29f4b8240c81e",
      "parents": [
        "c73f74b71af94b6fad9f602e19e5f19659738e40"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Thu Oct 22 14:54:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:54:37 2026 +0200"
      },
      "message": "Add timeout option for ssh commands, fixes #9072 (#9073)"
    },
    {
      "commit": "c73f74b71af94b6fad9f602e19e5f19659738e40",
      "tree": "57a8d024ac7fa5e27479b77aade00c73670bc37e",
      "parents": [
        "fd0b643f8516f6bbc629a9d0e67a173b7c67bf6d"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Thu Oct 22 14:54:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:54:25 2026 +0200"
      },
      "message": "show menu images on MacOS 27, fixes #9074 (#9075)"
    },
    {
      "commit": "fd0b643f8516f6bbc629a9d0e67a173b7c67bf6d",
      "tree": "17bd6e1affbe1ef5a0e7fc7a908f823f5571edb0",
      "parents": [
        "43536900231886e69c1f45e6271d834817728d8c"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Thu Oct 22 20:46:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:46:37 2026 +0200"
      },
      "message": "Fix workflow action check() to read the real bean properties (#9085)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "43536900231886e69c1f45e6271d834817728d8c",
      "tree": "e98ed3eb76a776d0f68a564f744655235c7c8737",
      "parents": [
        "306aefa5c3dae17db4b1f6fc851fac9fbb4cd2ed"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Thu Oct 22 14:46:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:46:15 2026 +0200"
      },
      "message": "Issue #9079 : Update graph database client libraries, test images and docs (#9080)"
    },
    {
      "commit": "306aefa5c3dae17db4b1f6fc851fac9fbb4cd2ed",
      "tree": "d9ca31e95e2f0f6ad8cbf04635f1dbbc24050080",
      "parents": [
        "6e0e67592af75144cb946c08fefcbc764e0f040b"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Thu Oct 22 14:45:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:45:38 2026 +0200"
      },
      "message": "Lint: check the staged files in the pre-commit hook, resolve relative… (#9076)\n\n* Lint: check the staged files in the pre-commit hook, resolve relative paths from the working folder, support --fail-on INFO, validate rule values, define the SYSTEM rules in the core pack, fixes #9071\n\n* Lint: flag only rule conditions that can never fire, lint symlinked and filtered files on disk in the pre-commit hook, fixes #9071"
    },
    {
      "commit": "6e0e67592af75144cb946c08fefcbc764e0f040b",
      "tree": "32d6b5e362f8b5800e6fa1d99f2544d20c5172d0",
      "parents": [
        "ba427ab25a0f990437e610db77ab74cc55d95a95"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Wed Oct 21 16:37:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 16:37:12 2026 +0200"
      },
      "message": "Document the result of the Delete file, Create folder, Delete folders, Add filenames to result, Delete filenames from result and Unzip actions. #8970 (#9047)\n\n* Document the result of the Delete file, Create folder, Delete folders, Add filenames to result, Delete filenames from result and Unzip actions. #8970\n\n* Unzip result: a one-field row stops the action, and Nr errors less than with result rows. #8970"
    },
    {
      "commit": "ba427ab25a0f990437e610db77ab74cc55d95a95",
      "tree": "c92862374addafe975d09d06958abd87228b9b7a",
      "parents": [
        "06dca45c5491e065f0ca95402e8e665569dce5f9"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Wed Oct 21 13:34:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 13:34:12 2026 +0200"
      },
      "message": "Issue #9050 : Keep database SQL editors in the database perspective (#9051)\n\n* Issue #9050 : Keep database SQL editors in the database perspective\n\nSaved SQL editors were restored in the file explorer as well, because\n\"Database SQL\" is not a registered file type and the .sql extension\nfell through to the explorer. Opening a .sql file while the database\nperspective is active now stays there. Other file types still open in\nthe explorer, and a .sql file opened from the explorer stays there.\n\n* Issue #9050 : Skip explorer copies of database SQL files only once\n\nStartup no longer drops a File Explorer tab just because the same file\nis open in a database SQL editor. An explorer copy is skipped only while\na legacy \"Database SQL\" entry is still in the database-perspective\nlast-open list. writeLastOpenFiles no longer writes those entries, so\nthe filter stops after the first save."
    },
    {
      "commit": "06dca45c5491e065f0ca95402e8e665569dce5f9",
      "tree": "6ca31bbcca5233308e941bf3ac14c404a6644aa5",
      "parents": [
        "a06a29446dfdeef818303613b74536d2d29c81b9"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Wed Oct 21 19:02:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 13:02:21 2026 +0200"
      },
      "message": "Fix Text File Output writing a byte order mark on every UTF-16 fragment (#9054)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "a06a29446dfdeef818303613b74536d2d29c81b9",
      "tree": "bbb6fc04b31371da56f543587a4baf03c4f5cd3a",
      "parents": [
        "5693aa4b262cd633ab5d80cb71e80905e88173f8"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Wed Oct 21 12:59:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 12:59:11 2026 +0200"
      },
      "message": "[RELEASSE] update licenses (#9068)"
    },
    {
      "commit": "5693aa4b262cd633ab5d80cb71e80905e88173f8",
      "tree": "a5de5b99810ec0b85f3c5d9168d8120dd2e81e88",
      "parents": [
        "0c7da4dce709b1d640688b431cf3ddfb8e12a99c"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Wed Oct 21 12:59:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 12:59:02 2026 +0200"
      },
      "message": "add missing translation files, fixes #9066 (#9067)"
    },
    {
      "commit": "0c7da4dce709b1d640688b431cf3ddfb8e12a99c",
      "tree": "5235096a950c03926bddb797e5c616fb7b21999d",
      "parents": [
        "7e2ec9a4b17b909a1876ee19d60867a5da6630b3"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Wed Oct 21 09:49:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 09:49:08 2026 +0200"
      },
      "message": "Expose the pipeline hop graph on lineage events, fixes #9004 (#9042)\n\n- add the PIPELINE_GRAPH event kind with PipelineGraphLineagePayload (enabled hops, in pipeline order)\n- emit it once per pipeline run, next to STARTED, with the same context\n- document that sinks skip event kinds they do not handle\n- the OpenLineage sink ignores the new kind, so its output does not change yet"
    },
    {
      "commit": "7e2ec9a4b17b909a1876ee19d60867a5da6630b3",
      "tree": "8d2135e97daa08f144fc6ec991cbd99cdbfdb4a7",
      "parents": [
        "18971b483344de2af751ade60045e75f6edcd550"
      ],
      "author": {
        "name": "Romain Manni-Bucau",
        "email": "rmannibucau@gmail.com",
        "time": "Wed Oct 21 09:12:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 09:12:51 2026 +0200"
      },
      "message": "HOP-9037 Calculator: restore -1 default for value_length/value_precision on legacy loads (#9038)\n\nCalculatorMetaFunction lost its legacy -1 default for valueLength/valuePrecision\nwhen PR #795 (HOP-2849) replaced the hand-written XML loader with\nHopMetadataProperty-based automatic (de)serialization. A plain `int valueLength;`\nnow deserializes to Java\u0027s 0 when the tag is absent, whereas the old loader\ndefaulted to -1 (the sentinel for \"unspecified length/precision\" used by\nCalculatorMeta.getValueMeta() and by CalculatorDialog, which reads blank cells\nback as -1 and only shows a length \u003e\u003d 0). Initialize both fields to -1 so a\nlegacy restore keeps the sentinel instead of collapsing it to 0. Add two tests\nto CalculatorMetaFunctionTest: one restoring a legacy XML without\nvalue_length/value_precision (asserts -1; fails before the fix with\nexpected:\u003c-1\u003e but was:\u003c0\u003e), and one restoring XML with explicit values (asserts\nthey are preserved and not clobbered by the default).\n\nFixes #9037"
    },
    {
      "commit": "18971b483344de2af751ade60045e75f6edcd550",
      "tree": "9fd767602bb964732d5ce42aae1dc6418069d3e9",
      "parents": [
        "f3b11737c8501134b55d5d83508ac85cca5e922d"
      ],
      "author": {
        "name": "hop-weblate",
        "email": "123085071+hop-weblate@users.noreply.github.com",
        "time": "Wed Oct 21 08:26:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 08:26:40 2026 +0200"
      },
      "message": "Translated using Weblate (Portuguese (Brazil)) (#9053)\n\nCurrently translated at 100.0% (64 of 64 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 93.7% (30 of 32 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 95.2% (80 of 84 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 98.4% (63 of 64 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 89.4% (17 of 19 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 25.0% (2 of 8 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 75.5% (71 of 94 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 95.7% (91 of 95 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 97.6% (167 of 171 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 100.0% (4 of 4 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 98.0% (99 of 101 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 95.5% (65 of 68 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 50.0% (2 of 4 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 67.5% (25 of 37 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 96.0% (24 of 25 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 59.4% (69 of 116 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 92.1% (59 of 64 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 87.0% (27 of 31 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 76.6% (23 of 30 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 50.0% (2 of 4 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 50.0% (3 of 6 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 70.0% (7 of 10 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 87.8% (29 of 33 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 100.0% (20 of 20 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 33.3% (2 of 6 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 60.0% (6 of 10 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 66.6% (4 of 6 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 80.0% (16 of 20 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 60.0% (15 of 25 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 81.9% (68 of 83 strings)\n\n\n\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/avrooutput/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/check/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/constraint/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/cypher/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/cypherbuilder/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/cypherscript/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/database-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/deletefolders/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/execution/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/explorer/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/file-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/file/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/gencsv/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/graph/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/gui-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/http-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/index/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/janino/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/jsonnormalize/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/kettle/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/model/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/search-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/sqlfileoutput/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/testing-1/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/transform-4/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/truncatetables/pt_BR/\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/www/pt_BR/\nTranslation: Apache Hop/avrooutput\nTranslation: Apache Hop/check\nTranslation: Apache Hop/constraint\nTranslation: Apache Hop/cypher\nTranslation: Apache Hop/cypherbuilder\nTranslation: Apache Hop/cypherscript\nTranslation: Apache Hop/database 1\nTranslation: Apache Hop/deletefolders\nTranslation: Apache Hop/execution\nTranslation: Apache Hop/explorer\nTranslation: Apache Hop/file\nTranslation: Apache Hop/file 1\nTranslation: Apache Hop/gencsv\nTranslation: Apache Hop/graph\nTranslation: Apache Hop/gui 1\nTranslation: Apache Hop/http 1\nTranslation: Apache Hop/index\nTranslation: Apache Hop/janino\nTranslation: Apache Hop/jsonnormalize\nTranslation: Apache Hop/kettle\nTranslation: Apache Hop/model\nTranslation: Apache Hop/search 1\nTranslation: Apache Hop/sqlfileoutput\nTranslation: Apache Hop/testing 1\nTranslation: Apache Hop/transform 4\nTranslation: Apache Hop/truncatetables\nTranslation: Apache Hop/www\n\nCo-authored-by: Weblate \u003cnoreply@weblate.org\u003e\nCo-authored-by: Adriano Barbosa \u003cb.adrianobarbosa@gmail.com\u003e"
    },
    {
      "commit": "f3b11737c8501134b55d5d83508ac85cca5e922d",
      "tree": "4b213f21fc55093fcb0dc3c83581c0e5677931c8",
      "parents": [
        "9e94fa74117db5d7e664f5b7f4bb14c20dc666b3"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Wed Oct 21 06:13:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 06:13:16 2026 +0200"
      },
      "message": "Update the Git info and visual diff screenshots of the File Explorer page. #9011 (#9046)"
    },
    {
      "commit": "9e94fa74117db5d7e664f5b7f4bb14c20dc666b3",
      "tree": "002ac771955527e9ddeee0251a0ecf76fb97f65b",
      "parents": [
        "ae8632cd40047186e3329380ba966b411b1531b1"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Tue Oct 20 20:34:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 20:34:19 2026 +0200"
      },
      "message": "Issue #9039 : Read Neo4j execution dates stored by graph logging (#9044)\n\nGraph logging writes registration dates as yyyy/MM/dd\u0027T\u0027HH:mm:ss. The execution information location only parsed ISO local date-times, so one such value aborted the whole execution list. Parse the logging format, ISO strings, and offset values, skip a node that still cannot be read, and clear the static location cache when the location closes.\n\nAn integration test writes a workflow and pipeline with logging enabled and reads the dates, parent link, and sample rows back through the location."
    },
    {
      "commit": "ae8632cd40047186e3329380ba966b411b1531b1",
      "tree": "5f48036e88f47423340b5a45667a9121d676ede9",
      "parents": [
        "e609a5f027647fc46e26edb4f66d873967c21615"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 15:37:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:37:36 2026 +0200"
      },
      "message": "Fix outdated hop-conf options and variable details in the variables, Azure VFS and Set Variables pages, fixes #9008 (#9025)\n\n* Fix outdated hop-conf options and variable details in the variables, Azure VFS and Set Variables pages. #9008\n\n* Inside pipelines and workflows, a system variable keeps the value from the System variables tab. #9008"
    },
    {
      "commit": "e609a5f027647fc46e26edb4f66d873967c21615",
      "tree": "f7c1f3f5b8571c38f3bc10f4e7f88010c6a3ebdb",
      "parents": [
        "228bdeea2cd7a29e12db3760d10b793f13e356f8"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 15:37:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:37:15 2026 +0200"
      },
      "message": "Explain how the YAML Input transform forms rows, the JsonPath paths and every option. #2367 (#9040)"
    },
    {
      "commit": "228bdeea2cd7a29e12db3760d10b793f13e356f8",
      "tree": "86b3a883d24a1a09c14109f8b12a8ec0658b3224",
      "parents": [
        "2fd23261f6c029965baa74502d064677e6e7a1c7"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 15:27:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:27:05 2026 +0200"
      },
      "message": "Document all the File Explorer right-click options and update the toolbar screenshots. #9011 (#9031)"
    },
    {
      "commit": "2fd23261f6c029965baa74502d064677e6e7a1c7",
      "tree": "8a1467059bfc333537123be89a688db6b92fa6db",
      "parents": [
        "9eb93534172b539abcf524009833bbfe2b869bb5"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 15:10:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:10:50 2026 +0200"
      },
      "message": "List the commonly used methods of the transform variable in the Script transform, and fix pipeline_status and the bindings. #4790 (#9029)"
    },
    {
      "commit": "9eb93534172b539abcf524009833bbfe2b869bb5",
      "tree": "800ec84720cfa20a4399bb1bdc318915e65dd2bc",
      "parents": [
        "c135c175b6364cc589e5c9f361f1550ffd32e2d5"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Tue Oct 20 15:03:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:03:14 2026 +0200"
      },
      "message": "Fixes #8887 : Git integration no longer runs whole-repository git sta… (#8990)\n\n* Fixes #8887 : Git integration no longer runs whole-repository git status on the UI thread on project open and editor clicks\n\n* Fixes #6216 : Limit the explorer\u0027s git status to the project folder when the repository is in a parent folder\n\nThe commit and Git perspectives keep the status of the whole repository, and only refresh on a project switch when they are showing."
    },
    {
      "commit": "c135c175b6364cc589e5c9f361f1550ffd32e2d5",
      "tree": "90f05541da28cc6102c51b1aa2cafae4558727d5",
      "parents": [
        "1b555e7ae5f4fa70ade7c6849cbf9af91670be20"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Tue Oct 20 14:54:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 14:54:18 2026 +0200"
      },
      "message": "Issue #9016 : Run native Spark pipelines on YARN from Hop GUI, hop-run and Hop Server, fixes #9020 (#9021)"
    },
    {
      "commit": "1b555e7ae5f4fa70ade7c6849cbf9af91670be20",
      "tree": "b47e56c0a73ad26bccec3d0f3070722ac3dde443",
      "parents": [
        "3337131f5e84f9389c4b49aa06f31a784b320ef1"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Tue Oct 20 20:40:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 14:40:47 2026 +0200"
      },
      "message": "Fix#8985  Delete folders workflow check results (#8984)\n\n* Fix Delete folders workflow check results\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n* Fix Delete folders workflow check results\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n* Fix Delete folders workflow check results\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n* Align Delete folders checks with runtime deletion\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e\n\n---------\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "3337131f5e84f9389c4b49aa06f31a784b320ef1",
      "tree": "45774bd850624718b33ba9ca3951dc20f5320d51",
      "parents": [
        "802087d0acfa8f617d646cc3f5e9ca8f1e35e90d"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 11:47:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 11:47:04 2026 +0200"
      },
      "message": "Document the result of the File exists, Create file, Delete files, Shell, Move files and Zip file actions. #8970 (#9024)\n\n* Document the result of the File exists, Create file, Delete files, Shell, Move files and Zip file actions. #8970\n\n* Correct the Zip file and Shell result rows, and the Copy previous results to args option of Delete files and Move files. #8970"
    },
    {
      "commit": "802087d0acfa8f617d646cc3f5e9ca8f1e35e90d",
      "tree": "d9998ddfe6a894fd408ba710dab91c752408ec79",
      "parents": [
        "38917b4127a4cfb240ffb2fc8e58b51191486bbe"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Tue Oct 20 08:55:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 08:55:56 2026 +0200"
      },
      "message": "Define the regular expressions that select files in Text file input, and fix the examples. #2366 (#9028)"
    },
    {
      "commit": "38917b4127a4cfb240ffb2fc8e58b51191486bbe",
      "tree": "1a2afda1db90a8fc9aa3ff7350870c45595440e6",
      "parents": [
        "797ba9ac300625450e4c3e3aa0b9fb4eda486f50"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Tue Oct 20 14:04:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 08:04:04 2026 +0200"
      },
      "message": "Fix the child pipeline load error so the log names the file (#9027)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "797ba9ac300625450e4c3e3aa0b9fb4eda486f50",
      "tree": "6a98a9eaf3945cb35b475015f170621b9994bf67",
      "parents": [
        "3058b6763374394645c31d09d7df69516733805e"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Tue Oct 20 07:23:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 07:23:28 2026 +0200"
      },
      "message": "Issue #8907 : Replace the OpenFormula tests with spec cases (#8927)\n\n* Issue #8907 : Replace the OpenFormula tests with spec cases\n\nThe previous engine tests were the old formula suite. This removes them and\nadds cases from OpenDocument v1.2 Part 2, with a separate set for the\nKettle/PDI functions that are not in that specification.\n\nDAYS(EndDate; StartDate) now returns EndDate minus StartDate, as Part 2\nsection 6.10.6 specifies for numeric dates.\n\n* Issue #8907 : Keep PDI date behavior in OpenFormula\n\nDAYS subtracts the first date from the second, which is the Kettle/PDI\norder. Date arithmetic uses the civil clock, so a daylight-saving\ntransition still counts as one day. Timestamp fields are read as dates,\nand each row is converted to the output field type.\n\n* Issue #8907 : Keep the OpenFormula conversion flag on each copy"
    },
    {
      "commit": "3058b6763374394645c31d09d7df69516733805e",
      "tree": "d46c6035482d0e213c76981f0ea41ab9825fc57f",
      "parents": [
        "2c08ed5bcfd26cc2b1bec27cf888cc7e5076961d"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Mon Oct 19 21:53:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:53:51 2026 +0200"
      },
      "message": "Explain how to save the log of the command line tools to a file, and link to the SLF4J and Log4j2 setup. #2651 (#9026)"
    },
    {
      "commit": "2c08ed5bcfd26cc2b1bec27cf888cc7e5076961d",
      "tree": "f2cd0f22af4fe5db9cfb8a96995d0ddbd1ab4ca7",
      "parents": [
        "7ccc874050baa29f7e23eb4cce35d80ae6171f73"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Mon Oct 19 21:04:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:04:38 2026 +0200"
      },
      "message": "Issue #9022 : Show the sampler options in the Execution Data Profile editor (#9023)\n\nThe Large values box stretched to the bottom of the editor and covered the sampler list. Size the box to its fields so the samplers sit underneath."
    },
    {
      "commit": "7ccc874050baa29f7e23eb4cce35d80ae6171f73",
      "tree": "6497b70dd60b5b74dd0cbec5a375199a61856ddb",
      "parents": [
        "8f614e8045d7f7f6fee37bcb206402ead3af9a59"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Mon Oct 19 20:28:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:28:47 2026 +0200"
      },
      "message": "Dependency upgrades and minor fixes, fixes #8966 (#8997)"
    },
    {
      "commit": "8f614e8045d7f7f6fee37bcb206402ead3af9a59",
      "tree": "4008b9d68adb34a94ff5f63cae4020182851013d",
      "parents": [
        "ab8419454005ad4e4b7470e9c35c2cd2089c9b1b"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Mon Oct 19 17:14:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:14:06 2026 +0200"
      },
      "message": "fix folder check button, fixes #8252 (#9015)"
    },
    {
      "commit": "ab8419454005ad4e4b7470e9c35c2cd2089c9b1b",
      "tree": "29950fcf3ce421eb98e1fdeeebcd70394e9b6724",
      "parents": [
        "8c2135a88375581605599b686dc41e39160c18b9"
      ],
      "author": {
        "name": "hop-weblate",
        "email": "123085071+hop-weblate@users.noreply.github.com",
        "time": "Mon Oct 19 16:21:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:21:37 2026 +0200"
      },
      "message": "Translated using Weblate (Portuguese (Brazil)) (#9018)\n\nCurrently translated at 100.0% (87 of 87 strings)\n\n\n\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/addsequence/pt_BR/\nTranslation: Apache Hop/addsequence\n\nCo-authored-by: Weblate \u003cnoreply@weblate.org\u003e\nCo-authored-by: Eduardo Loeffel Noce Gobi \u003ceduardogobi@outlook.com\u003e"
    },
    {
      "commit": "8c2135a88375581605599b686dc41e39160c18b9",
      "tree": "416148130f43f02a8b3344af14a83f9a99406e29",
      "parents": [
        "67b799498732dcf35792cf245ee20a416c1b258d"
      ],
      "author": {
        "name": "William Evan Lomanto",
        "email": "williamel@tobaconsulting.com",
        "time": "Mon Oct 19 19:57:41 2026 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 14:57:41 2026 +0200"
      },
      "message": "Fix image notepad rendering issue #8869 (#8945)\n\n* Fix image notepad rendering issue\n\nReviewer Changes Suggestion\n\n* spotless\n\n---------\n\nCo-authored-by: Hans Van Akelyen \u003chans.van.akelyen@gmail.com\u003e"
    },
    {
      "commit": "67b799498732dcf35792cf245ee20a416c1b258d",
      "tree": "0cfb6365f38e8b5c6846ee5ee851ae8f859ff892",
      "parents": [
        "5b62a0c2114786655eefa7580ca285f0075d2c8b"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Mon Oct 19 16:50:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 10:50:19 2026 +0200"
      },
      "message": "Fix Wait for SQL verification reading the missing property WaitForSQL (#9013)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "5b62a0c2114786655eefa7580ca285f0075d2c8b",
      "tree": "b7ef906cd0553b7158463c1158b8f8d5c4e2cee5",
      "parents": [
        "ac93db1f679c639f0ecd2b40a4f6f5192c9cd10e"
      ],
      "author": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Mon Oct 19 01:39:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 10:39:39 2026 +0200"
      },
      "message": "Issue #8937 : Merging a tag with conflicts no longer shows an error dialog or fails on an annotated tag (#9010)\n\nSigned-off-by: Sai Asish Y \u003csay.apm35@gmail.com\u003e"
    },
    {
      "commit": "ac93db1f679c639f0ecd2b40a4f6f5192c9cd10e",
      "tree": "87c86b333267db72e76bdf8b5a14d969c2fe85aa",
      "parents": [
        "0e2528e2848b55a9a71ac15d99f1196e2818ae69"
      ],
      "author": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Mon Oct 19 01:39:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 10:39:14 2026 +0200"
      },
      "message": "Issue #9001 : Fail the Mail action when the Mail server connection does not exist (#9009)\n\nSigned-off-by: Sai Asish Y \u003csay.apm35@gmail.com\u003e"
    },
    {
      "commit": "0e2528e2848b55a9a71ac15d99f1196e2818ae69",
      "tree": "be43f6155e0fb5099e2097119258b462e3a14cbe",
      "parents": [
        "8111830d790727d7ade538e69450457d6eacd0f2"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Mon Oct 19 10:37:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 10:37:04 2026 +0200"
      },
      "message": "correctly release the namespace when switching projects, fixes #8972 (#8973)\n\n* correctly release the namespace when switching projects, fixes #8972\n\n* enable code disabled to test"
    },
    {
      "commit": "8111830d790727d7ade538e69450457d6eacd0f2",
      "tree": "453230b5cd4fb9d17edfabf4a553dbe12fa1ad2b",
      "parents": [
        "84d69df701dcc02ac28ad3f2493965924e06cccb"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Mon Oct 19 09:32:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:32:35 2026 +0200"
      },
      "message": "Issue #8657 : Force refresh the Problems tab after clearing the database cache (#8940)\n\n* Issue #8657 : Force refresh the Problems tab after clearing the database cache\n\nThe Problems remarks kept the columns from the first check. Force refresh\nclears the database cache and the open pipelines\u0027 field caches, checks the\nactive editor, and re-lints the others. A query or lint pass that started\nbefore the clear does not write its old result back.\n\n* Issue #8657 : Keep lint results across unrelated database cache clears\n\nA Problems-tab force refresh bumps its own counter and drops only the passes\nthat started before that click. Clearing the cache from the broom, the SQL\neditor, or a DDL statement no longer throws a running lint away. The active\neditor is re-linted as well, because its check does not always republish\nmarkers."
    },
    {
      "commit": "84d69df701dcc02ac28ad3f2493965924e06cccb",
      "tree": "cd2038eca547e2370d608c96fb6b91b5550d721d",
      "parents": [
        "7b91c0475eda79ad10815b5c81baf15f52594ce5"
      ],
      "author": {
        "name": "vbhanuchander-lang",
        "email": "v.bhanuchander@gmail.com",
        "time": "Mon Oct 19 03:29:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:29:02 2026 +0200"
      },
      "message": "Issue #8495 : Optionally resolve OS environment variables as Hop variables (#8638)\n\n* Issue #8495 : Optionally resolve OS environment variables as Hop variables\n\nVariables.initializeFrom seeds the variable space from System.getProperties()\nand the described variables in hop-config.json, but never from\nSystem.getenv(). An exported environment variable is therefore not resolvable,\nso a project Home folder of ${PROJECT_HOME_PATH} stays literal even though\nProjectConfig does call variables.resolve() on it.\n\nHOP_IMPORT_ENVIRONMENT_VARIABLES, off by default, makes the environment part of\nthe variable space. It is read through HopResolvedSettings so the flag itself\ncan be set from the environment, which is what a container deployment has to\nhand.\n\nOff by default because the whole environment becomes visible as variables when\nit is on, which is the bleed-over Matt raised on the issue. Turning it on is a\ndeliberate act by whoever runs Hop.\n\nThe environment is seeded before everything else, so it has the lowest\nprecedence: a name also set with -D, in hop-config.json, by a parent or by\ninjection keeps the value it resolves to today, and the environment only\nsupplies names nothing else defines. No existing configuration changes\nbehaviour, whether the flag is on or off.\n\nThat ordering also matches HopResolvedSettings, which already resolves\nhop-config then environment then -D, and whose javadoc notes that the variable\nspace is not yet aligned with it.\n\nThree tests: the environment stays out by default, ${NAME} resolves an exported\nvariable when the flag is on, and -D still wins over the environment. The second\nfails without this change.\n\n* Issue #8495 : Let an exported HOP_IMPORT_ENVIRONMENT_VARIABLES win over the seeded default\n\nHopEnvironment copies the hop-config value of every described variable onto\nthe system properties, so HopResolvedSettings.resolveString always saw the\ndefault N in the JVM layer and an exported flag was never read. A system\nproperty now only counts as a -D override when it differs from the hop-config\nvalue. The decision takes the three layers as arguments so it can be tested\nwithout changing the process environment."
    },
    {
      "commit": "7b91c0475eda79ad10815b5c81baf15f52594ce5",
      "tree": "dafccfa067501984f7a5beee0d5637bf912293bf",
      "parents": [
        "79cfa6aa709e79f39d6938cee60062607c2e38f0"
      ],
      "author": {
        "name": "hop-weblate",
        "email": "123085071+hop-weblate@users.noreply.github.com",
        "time": "Mon Oct 19 09:26:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:26:16 2026 +0200"
      },
      "message": "Translated using Weblate (Portuguese (Brazil)) (#9014)\n\nCurrently translated at 68.9% (60 of 87 strings)\n\nTranslated using Weblate (Portuguese (Brazil))\n\nCurrently translated at 68.9% (60 of 87 strings)\n\n\n\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/addsequence/pt_BR/\nTranslation: Apache Hop/addsequence\n\nCo-authored-by: Weblate \u003cnoreply@weblate.org\u003e\nCo-authored-by: Eduardo Loeffel Noce Gobi \u003ceduardogobi@outlook.com\u003e"
    },
    {
      "commit": "79cfa6aa709e79f39d6938cee60062607c2e38f0",
      "tree": "6c55dd890a8f6aa2f3113de4d2dff23bd23b47e5",
      "parents": [
        "2eabbf906db56c6843079cc0e70811cb6399e165"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Mon Oct 19 09:25:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:25:45 2026 +0200"
      },
      "message": "Fixes #8993 : Run CALL { } IN TRANSACTIONS in auto-commit on Neo4j (#8994)"
    },
    {
      "commit": "2eabbf906db56c6843079cc0e70811cb6399e165",
      "tree": "40015f6e1f5dea6a2b0fa392e189f0ad76ffb4b9",
      "parents": [
        "667d03c9cdcd8fad6577b43898a8ce5a04ce9837"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Mon Oct 19 09:16:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:16:51 2026 +0200"
      },
      "message": "Issue #8988 : Document running native Spark pipelines on a local Spark standalone cluster (#8989)"
    },
    {
      "commit": "667d03c9cdcd8fad6577b43898a8ce5a04ce9837",
      "tree": "10319071151553f5579f37d72d871edfbf659aa2",
      "parents": [
        "62f2751dd7cd79f41409c0d60e6632c5f76dadf5"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Mon Oct 19 09:16:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 09:16:11 2026 +0200"
      },
      "message": "Issue #8955: Zip File transform and Zip file action fail to update an existing zip on a VFS file system (#8971)\n\n* update an existing zip through VFS in the Zip file transform and action, fixes #8955\n\n* keep the updated zip when the final move fails, copy duplicate entries once, keep local entry names, #8955\n\n* replace entries stored under their URI, keep the updated zip when a failed move leaves a partial zip, #8955"
    },
    {
      "commit": "62f2751dd7cd79f41409c0d60e6632c5f76dadf5",
      "tree": "e2b4559a061ce6def7d80a6d4e2453ee00f2893d",
      "parents": [
        "3c589aa723d64535cf3659e3562e9b7e31ce73cf"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Mon Oct 19 08:05:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 08:05:52 2026 +0200"
      },
      "message": "Fill empty and copied page descriptions, move the Salesforce fragments to snippets, remove a duplicate heading, fail the description check on empty descriptions. #8976 (#8991)"
    },
    {
      "commit": "3c589aa723d64535cf3659e3562e9b7e31ce73cf",
      "tree": "24174e7b91479fbf33b547f8d5e2d256ab3e64b1",
      "parents": [
        "d0dad1283d9aed7198067d9ebcf463e9cc6bccef"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Sun Oct 18 15:30:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 15:30:03 2026 +0200"
      },
      "message": "Reorganize the hop-conf page, fixes #4335 (#9006)\n\n* Reorganize the hop-conf page: projects, environments and configuration files, and the current options. #4335\n\n* Create the project home folder first, and list -fj and -scv in the hop-conf options. #4335"
    },
    {
      "commit": "d0dad1283d9aed7198067d9ebcf463e9cc6bccef",
      "tree": "0289dd73e66507f49b0b7bafe51762379ec034b8",
      "parents": [
        "e7214f6aa5e9d367a6001dff7dfc25d35f70fc44"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Sun Oct 18 15:26:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 15:26:19 2026 +0200"
      },
      "message": "Add a Working with parameters page and link it from the related pages fixes. #2517 (#9002)\n\n* Add a Working with parameters page and link it from the related pages. #2517\n\n* An empty -p value gives a parameter its default value, even when a variable with the same name exists. #2517"
    },
    {
      "commit": "e7214f6aa5e9d367a6001dff7dfc25d35f70fc44",
      "tree": "5c0ead7cf155994a03b1c302dffa832474a1bee5",
      "parents": [
        "3bc2cdcc0afbb98759439fd5db9ba1004f8727e4"
      ],
      "author": {
        "name": "Markus Spann",
        "email": "spannm@outlook.de",
        "time": "Sun Oct 18 13:33:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 13:33:44 2026 +0200"
      },
      "message": "Issue #8995 : Upgrade UCanAccess to 5.2.0 in the Access database plugin (#8996)"
    },
    {
      "commit": "3bc2cdcc0afbb98759439fd5db9ba1004f8727e4",
      "tree": "c1518721cab0af8a00d64dacec4303a93044b9f2",
      "parents": [
        "4bbc851096d783cf7627316fcd6cf292596f2a25"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Sun Oct 18 13:08:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 13:08:19 2026 +0200"
      },
      "message": "Issue #8998 : Keep a single version of each library in the client assembly (#8999)\n\n* Issue #8998 : Keep a single version of each library in the client assembly\n\n* Issue #8998 : Apply spotless formatting\n\nCo-authored-by: Matt Casters \u003cmattcasters@gmail.com\u003e\n\n---------\n\nCo-authored-by: Cursor Agent \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "4bbc851096d783cf7627316fcd6cf292596f2a25",
      "tree": "7147d290ca18f703e0f7e0ed6237331ee508c8a8",
      "parents": [
        "be68619a7eb2c65e34fc28ec0de8a28da158f6e7"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Sun Oct 18 11:33:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 11:33:56 2026 +0200"
      },
      "message": "Document the result of the Pipeline, Workflow, Copy files, Mail, Simple evaluation and SFTP actions. #8970 (#9000)"
    },
    {
      "commit": "be68619a7eb2c65e34fc28ec0de8a28da158f6e7",
      "tree": "01b303c59a63e3dbfa8862d2e88fd11bc55ef79b",
      "parents": [
        "c865b6b380f5c9d14ea53e844e7f47f79133422f"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Sat Oct 17 16:26:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 16:26:15 2026 +0200"
      },
      "message": "Issue #8986 : Fix the connection toolbar on a Neo4j execution location (#8987)\n\nA graph connection line is a MetaSelectionLine subclass. The toolbar\nlooked the plugin up as MetaSelectionLine, missed the subclass, and\ntried a constructor that class does not have. The edit icon never\nloaded, and clicks could not see methods declared on the base class."
    },
    {
      "commit": "c865b6b380f5c9d14ea53e844e7f47f79133422f",
      "tree": "f2a1771d8601efa702e85e7543b7f2be0701cd4a",
      "parents": [
        "55639f85ac8acca88927652efe98bee83a5991f9"
      ],
      "author": {
        "name": "Mohit Joshi",
        "email": "25btcs080@iiitu.ac.in",
        "time": "Sat Oct 17 13:23:27 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 09:53:27 2026 +0200"
      },
      "message": "Fix invalid plugin documentation URLs (#8982)"
    },
    {
      "commit": "55639f85ac8acca88927652efe98bee83a5991f9",
      "tree": "3d02c0757d39e59d8697dbc19a27709437fe4c77",
      "parents": [
        "f5aea46df0ccfd55aaac29b60c8b73e26e996794"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Sat Oct 17 09:53:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 09:53:08 2026 +0200"
      },
      "message": "Turn the plugin page template into a template that matches the transform and action pages. #8979 (#8980)"
    },
    {
      "commit": "f5aea46df0ccfd55aaac29b60c8b73e26e996794",
      "tree": "b7b9d758fa1cd8c5678321f6ebbf14a0ad6d481c",
      "parents": [
        "fea61fe001e9bfadbfe104d0afed6705d9afde0a"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Sat Oct 17 09:52:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 09:52:52 2026 +0200"
      },
      "message": "Add Beam Hive Catalog Input to the navigation and replace the hand-maintained list on the transforms page. #8977 (#8978)\n\n* Add Beam Hive Catalog Input to the navigation and replace the hand-maintained list on the transforms page. #8977\n\n* Stop promising a list of transforms on the pages that link to the transforms overview. #8977"
    },
    {
      "commit": "fea61fe001e9bfadbfe104d0afed6705d9afde0a",
      "tree": "6c41c1eb930b12015887c71bb6894dbd05309a79",
      "parents": [
        "a411bcad48f522592fce4d82e9f730f211142817"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Sat Oct 17 08:41:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 08:41:46 2026 +0200"
      },
      "message": "Issue #8941 : Filter TableView rows when browsing data (#8983)\n\nShow rows can hide rows that do not match selected column values.\nConfiguration grids leave filtering off, so a saved view still keeps every row."
    },
    {
      "commit": "a411bcad48f522592fce4d82e9f730f211142817",
      "tree": "4eebc255fcc4c6211f46527d6cde241357b08784",
      "parents": [
        "93612bef36c629c6e2919573f98c3a043fbf97bf"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Sat Oct 17 00:55:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 00:55:46 2026 +0200"
      },
      "message": "Issue #8952 : Fix the mail, lineage, OpenSearch, and samples integration failures (#8953)\n\n* Issue #8952 : Fix the mail, lineage, OpenSearch, and samples integration failures\n\nJames WebAdmin was still starting when the mail tests created users, so the\nfixed 30s delay curled a closed port and the later mail tests had no accounts.\nThe tests now wait until port 8000 accepts connections.\n\nRegistering a child execution linked both the owner and the launcher with\nEXECUTES. shortestPath then skipped the action in the error-lineage path.\nLink the launcher when its node exists, and move an earlier owner shortcut\nonto the launcher when that node is stored later.\n\nAn OpenSearch child location loaded a parent without the document _id and\nposted a second document, then could overwrite a finished state. Keep the\ndocument id, re-read before that link write, and refresh so the new state is\nvisible.\n\nThe samples suite was still moving when the 3600s watchdog killed it during\nthe huge-file sample. That project now has a 5400s cap. The other projects\nkeep 3600s.\n\n* Issue #8952 : Keep a finished OpenSearch state when an attach-only location writes\n\nA second location that loads a workflow only to attach actions kept that\nsnapshot and wrote it back on close, replacing Finished with a stale copy.\nRe-read before that write and keep the newer state, including children from\neither copy. Drop refresh\u003dwait_for; the re-read is a realtime get by document id.\n\nCo-authored-by: Matt Casters \u003cmattcasters@gmail.com\u003e\n\n---------\n\nCo-authored-by: Cursor Agent \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "93612bef36c629c6e2919573f98c3a043fbf97bf",
      "tree": "70cb23d38f1c9e4a2a3fe0bcb3d789cba9ca73ef",
      "parents": [
        "1675dc17a41b03ef62f283b9dad1f1acfbb8fe98"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Fri Oct 16 20:57:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 20:57:54 2026 +0200"
      },
      "message": "Document the results of workflow actions and how they are passed on. #2591 (#8969)\n\n* Document the results of workflow actions and how they are passed on. #2591\n\n* Explain how Execute for every result row stops on a failure and which rows it passes on. #2591"
    },
    {
      "commit": "1675dc17a41b03ef62f283b9dad1f1acfbb8fe98",
      "tree": "e504159ee8c9c8baf5f64d14f39926abe7acb96f",
      "parents": [
        "e15375cbf7fe55a229992e2507fee0260e936fd9"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Fri Oct 16 15:30:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 15:30:16 2026 +0200"
      },
      "message": "add support for parallel read in text file input, fixes #8943 (#8948)\n\n* add support for parallel text file input\n\n* fix remarks"
    },
    {
      "commit": "e15375cbf7fe55a229992e2507fee0260e936fd9",
      "tree": "bf8f370a6e7676d51895435ed8aa492c63493e5c",
      "parents": [
        "44de3a2fc756a3e764401d7c563bd163514d4de6"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Fri Oct 16 14:35:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:35:16 2026 +0200"
      },
      "message": "performance improvements, fixes #8965 (#8968)"
    },
    {
      "commit": "44de3a2fc756a3e764401d7c563bd163514d4de6",
      "tree": "a3ea720e1c2e97f992b60c303cebba8875df9341",
      "parents": [
        "1535ba3254b2e86bec4f85ed8bde01ea1423ad02"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Fri Oct 16 14:27:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:27:22 2026 +0200"
      },
      "message": "fix empty field/null value regressions, fixes #8960 (#8962)\n\n* fix empty field/null value regressions, fixes #8960\n\n* remove setVariables change"
    },
    {
      "commit": "1535ba3254b2e86bec4f85ed8bde01ea1423ad02",
      "tree": "d0c10ce84e90ef521902dabb15fe9755b93b07da",
      "parents": [
        "1fa56646af6fc1e5431324544ee5f6f49e6b06b3"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Fri Oct 16 14:13:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:13:51 2026 +0200"
      },
      "message": "data format mask is not inherited correctly, fixes #8956 (#8959)"
    },
    {
      "commit": "1fa56646af6fc1e5431324544ee5f6f49e6b06b3",
      "tree": "a3ed846bcc759d4c86563a2f68a441c340a37cab",
      "parents": [
        "c8669d77a8659a8befc9217741b3b2c5f56a5d66"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Fri Oct 16 13:17:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 13:17:18 2026 +0200"
      },
      "message": "Fix typos in the user and developer manuals. #8964 (#8967)"
    },
    {
      "commit": "c8669d77a8659a8befc9217741b3b2c5f56a5d66",
      "tree": "a79e9f827e02bc5efeb45e6d6a1950fb3885415c",
      "parents": [
        "66824358539ab85f78c597eb4f8c79504ca6aa49"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Fri Oct 16 12:53:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 12:53:22 2026 +0200"
      },
      "message": "Add the supported engines section to the transform pages that had none, and drop Beam Direct. #8958 (#8961)"
    },
    {
      "commit": "66824358539ab85f78c597eb4f8c79504ca6aa49",
      "tree": "cb3d1e20f1802575c15992b707e8b7735dc5b99e",
      "parents": [
        "782d8d95cbbc0f62ee14e54b3504ba544ab885d2"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Fri Oct 16 18:52:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 12:52:55 2026 +0200"
      },
      "message": "Fix DTD validator Check treating file paths as bean property names (#8954)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "782d8d95cbbc0f62ee14e54b3504ba544ab885d2",
      "tree": "c238c225632ae227712191c557f799eb428d2af6",
      "parents": [
        "7d6bccec7cd5fa4fe5f709596a5f045fccbe0f04"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Fri Oct 16 12:52:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 12:52:33 2026 +0200"
      },
      "message": "Fail the docs PR build when a page has no description. #2606 (#8957)\n\n* Fail the docs PR build when a page has no description. #2606\n\n* TEST ONLY: remove the DuckDB description to show the check failing. To be dropped before merging.\n\n* Report pages without a description in the docs PR comment instead of stopping the build. #2606\n\n* Revert \"TEST ONLY: remove the DuckDB description to show the check failing. To be dropped before merging.\"\n\nThis reverts commit d0b7fe535e5fc8bca32403e8d71c63c7d4de6e41."
    },
    {
      "commit": "7d6bccec7cd5fa4fe5f709596a5f045fccbe0f04",
      "tree": "07f00387f8d8d90526e13b0437478d0e73f556d9",
      "parents": [
        "e0ebe0fda1ab9056a1e995f80261bc4a17196325"
      ],
      "author": {
        "name": "Bart Maertens",
        "email": "bart.maertens@know.bi",
        "time": "Thu Oct 15 20:42:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 20:42:45 2026 +0200"
      },
      "message": "Issue #8936 : Fix attribute element types, DOCTYPE, XSLT includes and… (#8947)\n\n* Issue #8936 : Fix attribute element types, DOCTYPE, XSLT includes and XML Output (Advanced) edge cases\n\n* Issue #8936 : Address review: parser hardening, VFS includes, empty documents, entity size limit"
    },
    {
      "commit": "e0ebe0fda1ab9056a1e995f80261bc4a17196325",
      "tree": "410b6ae44460a4548d1fc2f130f3c0ada62c8f9c",
      "parents": [
        "01304c4a92dd37f15237c1a4c4d0b792e2d8c346"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Thu Oct 15 20:22:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 20:22:49 2026 +0200"
      },
      "message": "Add the missing page descriptions to the user and developer manuals. #2606 (#8949)"
    },
    {
      "commit": "01304c4a92dd37f15237c1a4c4d0b792e2d8c346",
      "tree": "75a01d01e4f31a2c4ca6928a07fb4d2c86307ab7",
      "parents": [
        "41a36eb3c1e4aca3c1119a9d5fc0fdc6a3764788"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Thu Oct 15 19:38:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 19:38:05 2026 +0200"
      },
      "message": "Issue #8942 : Don\u0027t mark generated SQL as changed (#8944)\n\nGenerated DDL and suggested queries open in the database SQL editor with the changed flag clear. The caret is placed on the last line of the script instead of in the tree filter."
    },
    {
      "commit": "41a36eb3c1e4aca3c1119a9d5fc0fdc6a3764788",
      "tree": "bc61f6ead953098e2043a464a557b55d19799914",
      "parents": [
        "958c4f48e195f7f1e5df26673e557a1d0dfec63d"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Thu Oct 15 23:03:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:03:37 2026 +0200"
      },
      "message": "Fix Check for Delete and Copy/Move result filenames (#8939)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "958c4f48e195f7f1e5df26673e557a1d0dfec63d",
      "tree": "42f973ea63c64e88a3312ec912b99104f5df86d5",
      "parents": [
        "6eeefc78cb9a229dd5ab524695a9aa8986b7963f"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Thu Oct 15 16:53:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:53:08 2026 +0200"
      },
      "message": "Issue #8667 : Cancel Table Input and Database Join queries when a pipeline stops (#8846)\n\n* Issue #8667 : Cancel Table Input and Database Join queries when a pipeline stops\n\n* Issue #8667 : Cancel a running query without deadlocking and without reporting a failure\n\nDatabase Join stopRunning() cancelled the statement while holding dbLock, the\nsame lock lookupValues holds across the query and putRow. stopAll holds the\ntransform list while it calls stopRunning, and a stopped putRow calls stopAll,\nso the two threads deadlocked.\n\nCancel the statement without dbLock. A query that fails because the pipeline\nis already stopped is a clean stop in both Database Join and Table Input: no\nerror is logged and the error count stays at 0.\n\nCo-authored-by: Matt Casters \u003cmattcasters@gmail.com\u003e\n\n---------\n\nCo-authored-by: Cursor Agent \u003ccursoragent@cursor.com\u003e"
    },
    {
      "commit": "6eeefc78cb9a229dd5ab524695a9aa8986b7963f",
      "tree": "a1a3747ee08fdcaddf38402eb709a017e507aeeb",
      "parents": [
        "fbe4312e29a0d294db6c899446b81cdf6aa8389d"
      ],
      "author": {
        "name": "hop-weblate",
        "email": "123085071+hop-weblate@users.noreply.github.com",
        "time": "Thu Oct 15 16:39:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:39:28 2026 +0200"
      },
      "message": "Translated using Weblate (Chinese (Simplified Han script)) (#8932)\n\nCurrently translated at 66.8% (268 of 401 strings)\n\nTranslation: Apache Hop/hopgui\nTranslate-URL: https://translate.project-hop.org/projects/apache-hop/hopgui/zh_Hans/\n\nCo-authored-by: cxhttt \u003ccxhttt@gmail.com\u003e"
    },
    {
      "commit": "fbe4312e29a0d294db6c899446b81cdf6aa8389d",
      "tree": "9598287483e0faf5dd9fb1766891cb9d5932e30f",
      "parents": [
        "d17034f9c82a39db00581c0520f0195958c0d58d"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Thu Oct 15 15:21:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 09:21:45 2026 +0200"
      },
      "message": "Fix Delete files Check treating the file path as a bean property name (#8933)\n\nSigned-off-by: leehaut \u003cleehaut@gmail.com\u003e"
    },
    {
      "commit": "d17034f9c82a39db00581c0520f0195958c0d58d",
      "tree": "3bffc0f9e7b5faffe86836abb403cc19a7063604",
      "parents": [
        "3803f8fb6a4c010edd69e8fb987a370991e1909b"
      ],
      "author": {
        "name": "Samuel Willyanto",
        "email": "samuel@tobaconsulting.com",
        "time": "Thu Oct 15 14:21:25 2026 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 09:21:25 2026 +0200"
      },
      "message": "Issue #8904: Fix false positive result on error in Action Columns Exist (#8911)"
    },
    {
      "commit": "3803f8fb6a4c010edd69e8fb987a370991e1909b",
      "tree": "560d8735a1caef631eabb80be73109cb74215cc7",
      "parents": [
        "4f228a4c2dc31bd706c59a19fa02f85c5a2ea145"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Wed Oct 14 23:31:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 23:31:31 2026 +0200"
      },
      "message": "fix performance regression in combination lookup/update , fixes #8922 (#8925)\n\nand an extra performance bump for DimensionLookup"
    },
    {
      "commit": "4f228a4c2dc31bd706c59a19fa02f85c5a2ea145",
      "tree": "0c746269d50ac8b0d870cbc5ec42811a736b6622",
      "parents": [
        "390391d1ad25fdd720d71a88ac89d35ac03532c3"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Wed Oct 14 19:47:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 19:47:04 2026 +0200"
      },
      "message": "Issue #8907 : Add an OpenFormula transform for Kettle/PDI formulas (#8913)\n\n* Issue #8907 : Add an OpenFormula transform for Kettle/PDI formulas\n\nThe existing Formula transform stays on Apache POI. OpenFormula evaluates\nKettle/PDI expressions with a clean-room engine, compiles each expression\nonce, and keeps semicolon argument separators on Kettle import.\n\n* issue #8907 Spotless\n\n* Issue #8907 : Replace star imports in the OpenFormula tests\n\nCheckstyle rejects import static org.junit.jupiter.api.Assertions.*.\nTests that call an assertion now import that method. The rest drop the unused import.\n\n* Issue #8907 : Forbid star imports in the agent guide\n\nCheckstyle AvoidStarImport fails the build, so AGENTS.md now says to import each type and static method by name.\n\n* Issue #8907 : Keep comparison less-than signs out of Javadoc\n\nThe class comment used raw \u003c characters, which Javadoc reads as HTML."
    },
    {
      "commit": "390391d1ad25fdd720d71a88ac89d35ac03532c3",
      "tree": "e20f7aee74e958792ed582a8ea58e4dcf57f1b20",
      "parents": [
        "d811c61030d846c4ac8efa516a86f0553eec9bb5"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Wed Oct 14 18:45:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 18:45:40 2026 +0200"
      },
      "message": "Issue #8923 : Run MongoDB without AVX and keep JCraft JSch off the classpath (#8924)\n\nJenkins agent builds44 has no AVX, so mongo:8 and Atlas Local die with SIGILL\nbefore the mongo tests start. The images now run mongod natively when AVX is\npresent and under qemu-user otherwise.\n\nhadoop-common\u0027s jsch 0.1.55 was unpacked into lib/core next to mwiede jsch.\nFilesystem order sometimes loaded 0.1.55, which OpenSSH 9 rejects for public\nkeys, so the SSH private-key test failed with \"Auth fail\"."
    },
    {
      "commit": "d811c61030d846c4ac8efa516a86f0553eec9bb5",
      "tree": "cf75adedffea770d91190549b45cb137403b68f3",
      "parents": [
        "d968ec7b3398e52f26d81bc819343e95353878ad"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Wed Oct 14 18:44:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 18:44:49 2026 +0200"
      },
      "message": "Issue #8804 : Stop context action filters from logging a null GUI plugin (#8805)\n\n* Issue #8804 : Stop context action filters from logging a null GUI plugin\n\nThe filter id called getClass() on the class-name string, so the log said\njava.lang.String. getInstance() is null when the clicked graph is not the\nactive tab, and that null was logged once per action. Use the graph the\ncontext already holds, and prepare each filter once.\n\n* Issue #8804 : Drop the context-filter changes already fixed on main\n\n#8716 already stores the filter id from the plugin class name and finds the\nclicked graph through getPipelineGraph() and getWorkflowGraph(). This leaves\nthe action lambda, which still has to use the graph that was clicked, and the\none-time filter resolution."
    },
    {
      "commit": "d968ec7b3398e52f26d81bc819343e95353878ad",
      "tree": "666fcb0f6bf4154e473037a8df4799c6e396b148",
      "parents": [
        "cac17cf8998631e241879dc03793628369ed6cb3"
      ],
      "author": {
        "name": "Adalennis",
        "email": "75371653+Adalennis@users.noreply.github.com",
        "time": "Wed Oct 14 18:43:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 18:43:57 2026 +0200"
      },
      "message": "Add pages for the Git and Git commit perspectives and bring the git pages up to date with the current Hop Gui. #7120 (#8919)\n\n* Add pages for the Git and Git commit perspectives and bring the git pages up to date with the current Hop Gui. #7120\n\n* Issue #7120 : Correct the git pages where they do not match the plugin\n\n---------\n\nCo-authored-by: mattcasters \u003cmattcasters@gmail.com\u003e"
    },
    {
      "commit": "cac17cf8998631e241879dc03793628369ed6cb3",
      "tree": "5750cb746d06528991fe8b181dd1999972b34983",
      "parents": [
        "341c28a87b7c2e33b12236ed1899260d8c1ec886"
      ],
      "author": {
        "name": "Hans Van Akelyen",
        "email": "hans.van.akelyen@gmail.com",
        "time": "Wed Oct 14 16:29:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 16:29:36 2026 +0200"
      },
      "message": "Fix the Hop Web smoke test reading a hidden tab\u0027s graph for a new pipeline (#8920)"
    },
    {
      "commit": "341c28a87b7c2e33b12236ed1899260d8c1ec886",
      "tree": "5c4c7d22b5a31a31f1960efd8df15ccbbccfe6df",
      "parents": [
        "e35e01f3304e6166b65de7322678f776e0c66d12"
      ],
      "author": {
        "name": "Matt Casters",
        "email": "mattcasters@gmail.com",
        "time": "Wed Oct 14 16:11:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 16:11:50 2026 +0200"
      },
      "message": "Issue #8863 : Write the parent execution link when a child starts (#8865)\n\n* Issue #8863 : Write the parent execution link when a child starts\n\nStore the owning workflow or pipeline as parentId and the action or transform\nthat started the child as launchedById. Drop the file and database scans that\nrediscovered that link during refresh. List the execution tree from the summary\ncolumns so a large location does not load every document.\n\n* Issue #8863 : Find launched children on file and graph locations\n\nFile and graph locations match the action or transform that started a child, and the graph links that launcher when its node is already stored. A child started before the launcher is flushed still records the link. Database summary rows load the update time of a run that has not ended, and copying a filename loads the stored execution. Execution information appends launchedById."
    }
  ],
  "next": "e35e01f3304e6166b65de7322678f776e0c66d12"
}
