)]}'
{
  "log": [
    {
      "commit": "11d5ad4a5d1783fbc67650f21df02f311370a43d",
      "tree": "dddfb5a04703aa66e05182a8cd532b9780736616",
      "parents": [
        "2a514e180f82543799c57250bfa6bee3065aec92"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 06:49:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 06:49:39 2026 +0200"
      },
      "message": "ci(deps): bump JetBrains/qodana-action from 2025.3.2 to 2026.1.0 (#84)\n\nBumps [JetBrains/qodana-action](https://github.com/jetbrains/qodana-action) from 2025.3.2 to 2026.1.0.\n- [Release notes](https://github.com/jetbrains/qodana-action/releases)\n- [Commits](https://github.com/jetbrains/qodana-action/compare/89eb4357efd2b52e639f3216e63edaf33b82622b...d7b5ec2fbec32197ef447c450e00589ed5f34fd5)\n\n---\nupdated-dependencies:\n- dependency-name: JetBrains/qodana-action\n  dependency-version: 2026.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2a514e180f82543799c57250bfa6bee3065aec92",
      "tree": "50a0ec52fe0f75880768d2ddc364eebc20e60a54",
      "parents": [
        "74aa6b5e1e148b830a0fed452ea9b359cb493029"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Apr 28 14:58:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 12:58:04 2026 +0000"
      },
      "message": "Bump pluginVersion to 261.19027.1 (#83)\n\nManual application of the post-release version-bump rule (#82) for\nthe already-published v261.19017.1, which predates that automation.\nBUILD increased by 10 (count of nightly tags between v252.18980.1\nand v261.19017.1)."
    },
    {
      "commit": "74aa6b5e1e148b830a0fed452ea9b359cb493029",
      "tree": "00904e779efd98c8b40ba9d3742862ef7e1d2217",
      "parents": [
        "4c93e3f465680cd9725806028313b6ca867d53b0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Apr 28 14:50:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 12:50:56 2026 +0000"
      },
      "message": "ci(release): auto-bump pluginVersion after publish (#82)\n\nAfter the plugin is published to Marketplace, count nightly tags\nbetween the previous release tag and the current one (each nightly\nrepresents one code change). Bump the BUILD segment of pluginVersion\nin gradle.properties by that count and roll the change into the\nexisting post-release PR alongside the changelog patch.\n\nRequires fetch-depth: 0 on checkout so the version-bump step can\nwalk tag history."
    },
    {
      "commit": "4c93e3f465680cd9725806028313b6ca867d53b0",
      "tree": "0d45d134d4ffbc499d7de3bbb27d3bb8ec14839e",
      "parents": [
        "8ac1cc99b12bcc44b0e671acdf0c4356715bbf03"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Apr 28 14:42:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 12:42:58 2026 +0000"
      },
      "message": "Changelog update - 261.19017.1 (#81)"
    },
    {
      "commit": "8ac1cc99b12bcc44b0e671acdf0c4356715bbf03",
      "tree": "52d33d80b6aecbfa0f5668c7033b79c4523534dc",
      "parents": [
        "737899c5bc2b0ccc10f2c85d4b0f430c23d3f1e0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Apr 28 14:39:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 12:39:19 2026 +0000"
      },
      "message": "ci(release): skip duplicate asset upload in publish workflow (#80)\n\nThe Prepare Release workflow already attaches the plugin zip to the\nGitHub pre-release. Re-uploading from the publish workflow fails with\n\"asset under the same name already exists\" once the pre-release is\npromoted. Removing the redundant step also keeps the published bits\nidentical to what PMC voted on."
    },
    {
      "commit": "737899c5bc2b0ccc10f2c85d4b0f430c23d3f1e0",
      "tree": "aaac761e9557ed5cd9ebfb748b6ca67faf9a2731",
      "parents": [
        "c5687264b679ec58f463191d269f233af8cf7a7f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 07:47:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 07:47:02 2026 +0200"
      },
      "message": "ci(deps): bump actions/github-script from 8.0.0 to 9.0.0 (#79)\n\nBumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0.\n- [Release notes](https://github.com/actions/github-script/releases)\n- [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/github-script\n  dependency-version: 9.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c5687264b679ec58f463191d269f233af8cf7a7f",
      "tree": "615820b02bfa92b03696599387e232761bd4cdb9",
      "parents": [
        "2a42a69f17ca1ce2cfd7da489e708c04f54be835"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 07:06:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 07:06:07 2026 +0200"
      },
      "message": "ci(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#78)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2a42a69f17ca1ce2cfd7da489e708c04f54be835",
      "tree": "c1f98ddeca6c8528c4c69d9c5e48ca0e0e76b782",
      "parents": [
        "213f10266134f06e84118a40638362e1e04baad3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 07:05:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 07:05:57 2026 +0200"
      },
      "message": "ci(deps): bump actions/cache from 5.0.4 to 5.0.5 (#77)\n\nBumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to 5.0.5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: 5.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "213f10266134f06e84118a40638362e1e04baad3",
      "tree": "9d71a156f53a5365d045254c2bbe1bc2cf9e3c6c",
      "parents": [
        "93e15012cdb6805f7742bf6ec15ed72b1dae8e3b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 08:05:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 08:05:52 2026 +0200"
      },
      "message": "ci(deps): bump gradle/actions from 6.0.1 to 6.1.0 (#72)\n\nBumps [gradle/actions](https://github.com/gradle/actions) from 6.0.1 to 6.1.0.\n- [Release notes](https://github.com/gradle/actions/releases)\n- [Commits](https://github.com/gradle/actions/compare/39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f...50e97c2cd7a37755bbfafc9c5b7cafaece252f6e)\n\n---\nupdated-dependencies:\n- dependency-name: gradle/actions\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "93e15012cdb6805f7742bf6ec15ed72b1dae8e3b",
      "tree": "deb49a7c6647fd2b679b1dbc9ae7215e1b0fa20d",
      "parents": [
        "e1dada96f801c094469ae5ed99868fbc52781c41"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Apr 13 07:52:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 07:52:17 2026 +0200"
      },
      "message": "feat(diagram): resolve chain/redirect results as action-to-action edges (#76)\n\nExtend the Struts config diagram to handle redirectAction, chain, and\nredirect-action result types. When a result target resolves to an action\nin the same file, the model emits an action→action edge instead of an\nunresolvable RESULT node. External/unresolvable targets fall back to a\nlabeled RESULT node with a descriptive arrow label.\n\n- Add resolveChainOrRedirectTarget() helper that extracts target from\n  tag body text or \u003cparam name\u003d\"actionName\"\u003e/\u003cparam name\u003d\"namespace\"\u003e\n- Refactor build() into a two-pass approach: first create nodes and map\n  XmlTag→node for stable identity, then process results\n- Draw same-column (action→action) edges as dashed curves looping from\n  the source\u0027s right edge below both nodes to the target\u0027s left edge\n- Build model asynchronously via ReadAction.nonBlocking to avoid\n  write-intent lock violations on project open\n- Add test fixtures and tests for body-based and param-based redirect\n\nMade-with: Cursor"
    },
    {
      "commit": "e1dada96f801c094469ae5ed99868fbc52781c41",
      "tree": "bfc080732f017b466c6f6348a56738516f9f980c",
      "parents": [
        "367a26177ad18ccd8485d38dca38c9e241cd02f0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Apr 09 06:57:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 04:57:59 2026 +0000"
      },
      "message": "ci(nightly): derive version from pluginVersion instead of tags (#75)\n\nRead the middle segment from pluginVersion in gradle.properties instead\nof computing it from the latest non-nightly git tag. Nightly counter\nincrements within the same middle segment and resets automatically when\npluginVersion is bumped for a new release.\n\nMade-with: Cursor"
    },
    {
      "commit": "367a26177ad18ccd8485d38dca38c9e241cd02f0",
      "tree": "7cc0622f2e40d7c6fb71198da3037bf85865c01c",
      "parents": [
        "52d36b45d43e2b286b1362a37c5239a09182f77b"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 17:47:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 15:47:42 2026 +0000"
      },
      "message": "ci(depenedabot): add cooldown (#74)"
    },
    {
      "commit": "52d36b45d43e2b286b1362a37c5239a09182f77b",
      "tree": "cc792fc59fe91efd30c20eea486f10bca60247dc",
      "parents": [
        "729be85dd41664443abaa6699df3e2992d14c949"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 08:03:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:03:16 2026 +0000"
      },
      "message": "ci: fix plugin version and build concurrency policy (#73)\n\nBump pluginVersion to 261.19017.1 to maintain monotonic build numbering\n(18980 from latest non-nightly tag v252.18980.1 + 37 commits since).\n\nOnly cancel in-progress CI runs for pull requests, allowing main-branch\nbuilds to complete independently.\n\nMade-with: Cursor"
    },
    {
      "commit": "729be85dd41664443abaa6699df3e2992d14c949",
      "tree": "e82671f61be7a486259eaf250295dcfa2cf100e4",
      "parents": [
        "f150c72b4dfbf292c6fdcbdbadce7ef5c0f20373"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:49:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:49:19 2026 +0200"
      },
      "message": "refactor: remove experimental CreateBeanPropertyFixes dependency (#71)\n\nDrop usage of the experimental `CreateBeanPropertyFixes` API from\n`BeanPropertyPathReference` and the delegating quick-fix aggregation\nin `ResultParamNameCustomConverter.MergingBeanPropertyPathReference`.\n\nThis eliminates the plugin verifier warning about referencing an\n`@ApiStatus.Experimental` class that may change in future IntelliJ\nPlatform releases. Bean-property resolution, completion, highlighting,\nand rename/bind behavior are unaffected.\n\n🤖 Generated by AI Assistant\n\nMade-with: Cursor"
    },
    {
      "commit": "f150c72b4dfbf292c6fdcbdbadce7ef5c0f20373",
      "tree": "712565090a1b904a117fe4fda91909b2869035ac",
      "parents": [
        "1db91af1a81353113c251ed9c958bd63ed2d4aa2"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:48:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:48:59 2026 +0200"
      },
      "message": "refactor: replace deprecated EXTEND_CLASS_NAMES with SUPER_CLASSES (#70)\n\nReplace JavaClassReferenceProvider.EXTEND_CLASS_NAMES (deprecated, scheduled\nfor removal) with the supported SUPER_CLASSES option in ConstantValueClassConverter.\n\nGuard the option so it is only set when baseClass is non-empty, preserving\nthe existing \"any concrete non-interface class\" semantics for constants like\nstruts.configuration and struts.mapper.class that intentionally pass \"\".\n\n🤖 Generated by AI Assistant\n\nMade-with: Cursor"
    },
    {
      "commit": "1db91af1a81353113c251ed9c958bd63ed2d4aa2",
      "tree": "74aad352a698d53cf3218effb7c718cd95d320d0",
      "parents": [
        "2327654ded8e20009b12d73fb39caba712956160"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:48:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:48:48 2026 +0200"
      },
      "message": "refactor(facet): replace deprecated CheckboxTreeBase constructor with explicit CheckPolicy (#69)\n\nThe 2-arg CheckboxTreeBase(renderer, root) constructor is deprecated in\nIntelliJ Platform 2026.1 because it relies on an implicit default check\npolicy. Replace it with the non-deprecated 3-arg form that takes an\nexplicit CheckPolicy matching the previous default behavior\n(checkChildren\u003dtrue, uncheckChildren\u003dtrue, checkParent\u003dfalse,\nuncheckParent\u003dtrue).\n\nMade-with: Cursor"
    },
    {
      "commit": "2327654ded8e20009b12d73fb39caba712956160",
      "tree": "8493c5007bb5ef444c9279a2cb5ab32520dd9a0f",
      "parents": [
        "3e90c47c140fa47f68f080d72d1c83a8449150a9"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:48:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:48:31 2026 +0200"
      },
      "message": "refactor(facet): migrate FacetConfiguration persistence to PersistentStateComponent (#68)\n\nReplace deprecated readExternal()/writeExternal() overrides in\nStrutsFacetConfiguration with PersistentStateComponent\u003cElement\u003e,\nfollowing the migration path documented in the IntelliJ Platform SDK.\n\nUses PersistentStateComponent\u003cElement\u003e to preserve the exact existing\nXML structure (fileset/file/propertiesKeys tags) for full backward\ncompatibility with saved .iml facet configuration.\n\nAlso removes redundant ModificationTracker interface (already inherited\nfrom SimpleModificationTracker superclass).\n\nMade-with: Cursor"
    },
    {
      "commit": "3e90c47c140fa47f68f080d72d1c83a8449150a9",
      "tree": "115e731a24bcd80608a8bbd1ec2c7acd43c94428",
      "parents": [
        "956eb454f271814a12f42dd7c0ad941d6e1e6b19"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:48:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:48:16 2026 +0200"
      },
      "message": "feat(annotator): warn when Web facet is missing for Struts modules (#67)\n\nAdds early feedback when a Struts-configured module has no WebFacet,\nwhich prevents JSP result path resolution and Diagram navigation.\n\n- WebFacetChecker: shared predicate reused by annotator and initializer\n- StrutsWebFacetCheckingAnnotator: file-level warning on struts.xml with\n  quick action to open module facet settings\n- StrutsFrameworkInitializer: one-time notification per affected module\n  on project open\n- Struts2ProjectDescriptorBuilder.withoutWebFacet(): test support for\n  omitting WebFacet in light tests\n\nFollow-up to PR #66 (DTD validation).\n\nMade-with: Cursor"
    },
    {
      "commit": "956eb454f271814a12f42dd7c0ad941d6e1e6b19",
      "tree": "4bd974afbc87cbebd17a64d856a8702df5efff7d",
      "parents": [
        "53d382f7dce31a72763a8f6e2a1bebad8cfda37f"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Apr 08 06:48:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 06:48:01 2026 +0200"
      },
      "message": "feat: add read-only Diagram tab for struts.xml config visualization (#65)\n\n* feat: add read-only Diagram tab for struts.xml config visualization\n\nIntroduce a lightweight Swing-based Diagram tab alongside the existing\n(disabled-by-default) Graph tab. The new tab renders packages, actions,\nand results in a hierarchical layout with tooltips and click-to-navigate,\nwithout depending on the deprecated GraphBuilder APIs.\n\nNew components:\n- diagram/model: toolkit-neutral DTOs (node, edge, snapshot builder)\n- diagram/presentation: reusable tooltip/navigation helpers\n- diagram/ui: custom Swing renderer with hover and double-click support\n- diagram/fileEditor: PerspectiveFileEditorProvider + editor registration\n\nMade-with: Cursor\n\n* test: add Diagram file editor provider tests and migration boundary docs\n\nAdd focused tests for Struts2DiagramFileEditorProvider verifying it\naccepts struts.xml in file sets and rejects plain XML, JSP, and Java\nfiles. Document the toolkit-neutral model layer as the migration\nboundary between the current Swing renderer and a future Diagrams API.\n\nMade-with: Cursor\n\n* fix: resolve threading violations in Diagram tab\n\nPrecompute tooltip HTML and navigation pointers during model snapshot\ncreation (under read action) so Swing event handlers on the EDT never\naccess DOM/PSI directly.\n\nChanges:\n- StrutsDiagramNode: replace DomElement with precomputed tooltipHtml\n  and SmartPsiElementPointer for navigation\n- StrutsConfigDiagramModel.build(): compute tooltips and create smart\n  pointers during snapshot (must be called under read action)\n- StrutsDiagramPresentation: split into computeTooltipHtml (build-time)\n  and navigateToElement (EDT-safe via ReadAction.nonBlocking)\n- Struts2DiagramFileEditor: wrap build() in ReadAction.nonBlocking\n  with progress dialog for initial load\n- Struts2DiagramComponent: use precomputed node.getTooltipHtml()\n  instead of calling into DOM on hover\n\nMade-with: Cursor\n\n* feat(diagram): show local packages only and add early DTD validation\n\nDiagram model now resolves packages from the file-local StrutsRoot DOM\ninstead of the merged StrutsModel, so only the current struts.xml\u0027s\npackages/actions/results are displayed.\n\nDTD validation is extracted into a shared StrutsDtdValidator helper and\nwired into Struts2ModelInspection.checkFileElement() as a file-level\nwarning, so users see http:// vs https:// issues while editing rather\nthan only when opening the Diagram tab. The Diagram-specific\nnotification is removed since the inspection now covers it earlier.\n\n- Add StrutsDtdValidator shared helper for DTD URI checks\n- Add DTD check to Struts2ModelInspection with WARNING severity\n- Remove Diagram-side DTD notification (replaced by inspection)\n- Handle null model in Struts2DiagramFileEditor.reset()\n- Add StrutsConfigDiagramModelTest for local-file filtering\n- Add StrutsDtdValidatorTest for DTD validation logic\n- Add highlighting test for valid https:// DTD\n\nMade-with: Cursor\n\n* fix(diagram): use EDT-safe read action for node navigation\n\nReplace ReadAction.nonBlocking().executeSynchronously() with\nApplication.runReadAction(Computable) in navigateToElement() so\ndouble-clicking a Diagram node no longer throws an EDT assertion.\n\nThe NBRA path asserts background-thread usage, but the mouse handler\nalways runs on the EDT. The regular runReadAction is appropriate here\nsince the work is just a SmartPsiElementPointer dereference.\n\nAdds a regression test verifying pointer resolution through the\nsame Application.runReadAction path.\n\nMade-with: Cursor\n\n* feat(diagram): harden MVP with explicit states and clearer fallbacks\n\nUnify the editor rebuild path so initial load and reset() always\nreflect the current model state instead of retaining stale content.\nAdd LOADED/EMPTY/UNAVAILABLE states to the diagram component with\ncentered placeholder messages for non-loaded states. Replace raw\n??? placeholders with descriptive labels ((unresolved path),\n(unnamed), (unknown type)). Extend tests to cover empty files,\nnull models, rebuild transitions, and label clarity.\n\nMade-with: Cursor\n\n* fix(diagram): use stable element identity for diagram nodes\n\nReplace display-based equals/hashCode (kind+name) in StrutsDiagramNode\nwith a stable ID derived from the backing XML element\u0027s text offset.\nThis prevents node collisions when duplicate action names or result\npaths exist across packages.\n\nAdd focused tests for duplicate-name regression, edge topology and\nlabels, editor lifecycle (creation and reset), and DTD validator\nclassification outcomes.\n\nMade-with: Cursor"
    },
    {
      "commit": "53d382f7dce31a72763a8f6e2a1bebad8cfda37f",
      "tree": "28dff7c7bb1d31ec5bce020da553e3ec8fa57839",
      "parents": [
        "3476c457ea22cfafd776ea8bec78f014bc2570ed"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sun Apr 05 12:44:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 12:44:01 2026 +0200"
      },
      "message": "feat(inspection): add early DTD validation for Struts config files (#66)\n\nSurface invalid DOCTYPE SYSTEM URIs (http:// instead of https://, or\nunrecognized URIs) as a file-level warning in Struts2ModelInspection,\nso users discover the issue while editing struts.xml rather than only\nwhen opening the Diagram tab.\n\n- Extract StrutsDtdValidator as a shared helper for DTD URI checks\n- Call the validator from Struts2ModelInspection.checkFileElement()\n- Add message keys for both http-vs-https and unrecognized DTD warnings\n- Add StrutsDtdValidatorTest (unit) and highlighting regression test\n\nMade-with: Cursor"
    },
    {
      "commit": "3476c457ea22cfafd776ea8bec78f014bc2570ed",
      "tree": "1f61f2d0c8d09339f0878661c7982deb6e5e6242",
      "parents": [
        "8e780749cee9c0790f773615c7f0b3cab9d37e1b"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sun Apr 05 10:38:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 10:38:54 2026 +0200"
      },
      "message": "feat: disable deprecated Graph editor tab by default (#64)\n\nThe Graph editor tab uses deprecated IntelliJ Platform APIs\n(GraphBuilder, GraphBuilderFactory) that can cause IDE freezes on\nnewer platform versions. Gate the feature behind a JVM system property\nso it is hidden by default. Users who need the graph view can opt in\nwith -Dcom.intellij.struts2.enableGraphEditor\u003dtrue via\nHelp | Edit Custom VM Options.\n\nMade-with: Cursor"
    },
    {
      "commit": "8e780749cee9c0790f773615c7f0b3cab9d37e1b",
      "tree": "4f98d714e668f149d88e69da0409d3daf32d71e4",
      "parents": [
        "14612d756755613d0f1ed7aa463a7ac7c2ed63bb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Apr 04 15:29:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 15:29:52 2026 +0200"
      },
      "message": "ci(deps): bump gradle/actions from 5.0.2 to 6.0.1 (#63)\n\nBumps [gradle/actions](https://github.com/gradle/actions) from 5.0.2 to 6.0.1.\n- [Release notes](https://github.com/gradle/actions/releases)\n- [Commits](https://github.com/gradle/actions/compare/0723195856401067f7a2779048b490ace7a47d7c...39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f)\n\n---\nupdated-dependencies:\n- dependency-name: gradle/actions\n  dependency-version: 6.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "14612d756755613d0f1ed7aa463a7ac7c2ed63bb",
      "tree": "a9d9b95db4bfc24f82c8bfd90865c1c4dbb9a30f",
      "parents": [
        "8ba647192211528384a1bd719ba90257664df472"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Apr 04 15:29:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 15:29:40 2026 +0200"
      },
      "message": "ci(deps): bump codecov/codecov-action from 5.5.3 to 6.0.0 (#62)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.3 to 6.0.0.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/1af58845a975a7985b0beb0cbe6fbbb71a41dbad...57e3a136b779b570ffcdbf80b3bdc90e7fab3de2)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: 6.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8ba647192211528384a1bd719ba90257664df472",
      "tree": "972037f6fe5d2c508520483765c3e13f4a586e60",
      "parents": [
        "8fcc9d2a92c5a857c891ed4460b56149d0b0adee"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Apr 04 15:29:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 15:29:25 2026 +0200"
      },
      "message": "Update plugin to support IntelliJ Platform 2026.1 (#61)\n\n* build: target IntelliJ Platform 2026.1 (build 261)\n\n- Upgrade platformVersion to 2026.1 (build 261)\n- Update pluginSinceBuild/pluginUntilBuild to 261/261.*\n- Update IntelliJ Platform Gradle Plugin to 2.13.1 (requires Gradle 9)\n- Update Gradle wrapper to 9.0.0\n- Update Qodana linter to jetbrains/qodana-jvm:2026.1\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* fix: replace deprecated ReadAction.compute() in StrutsFrameworkInitializer\n\n* fix: replace deprecated ReadAction.compute() in Struts2ProblemFileHighlightFilter\n\n* fix: replace deprecated ReadAction.compute() in StrutsConstantHelper\n\n* fix: replace deprecated ReadAction.compute() in Struts2GraphFileEditor\n\n* fix: use non-deprecated DaemonCodeAnalyzer.restart() with reason parameter\n\n* fix: remove deprecated CompletionType.CLASS_NAME registration\n\nCompletionType.CLASS_NAME is deprecated (marked for removal).\nThe BASIC completion type already covers class name completion.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* docs: update CHANGELOG for 2026.1 platform upgrade\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* fix: resolve test compilation for IntelliJ 2026.1\n\n- Add TestFrameworkType.Plugin.Java for Java test framework classes\n- Add jetCheck dependency from JitPack for property-based tests\n- Replace deprecated CompletionType.CLASS_NAME in test\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* fix: add JSON plugin dependency required by JavaScript in 2026.1\n\nThe JavaScript plugin in IntelliJ 2026.1 now depends on the\nintellij.json.backend module from the JSON plugin. Without this\ndependency, JavaScript fails to load in the test sandbox, which\ncascades to prevent the Struts plugin from loading (242/294 test\nfailures). Also adjust completion test expectations for mock JDK.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* fix: revert Qodana linter to 2025.3 (2026.1 image not yet published)\n\nThe jetbrains/qodana-jvm:2026.1 Docker image does not exist yet,\ncausing the Inspect code CI job to fail.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Revert \"fix: revert Qodana linter to 2025.3 (2026.1 image not yet published)\"\n\nThis reverts commit 38f98f4d0c8a9a029fb71f0b9adc068143afc460.\n\n* ci: allow Qodana to fail until 2026.1 image is published\n\nThe jetbrains/qodana-jvm:2026.1 Docker image is not yet available.\nAdd continue-on-error so it doesn\u0027t block PRs in the meantime.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "8fcc9d2a92c5a857c891ed4460b56149d0b0adee",
      "tree": "84549a6e3787bb323837d66f5d5e847d456850d7",
      "parents": [
        "26ae22d6681f1ceccf2c4882ea8e07c44e905c30",
        "5605aa581bcc9f0f444572e524a91ab7c8f011b0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Mar 26 11:43:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 11:43:42 2026 +0100"
      },
      "message": "Merge pull request #59 from apache/ci/pin-actions-to-sha\n\nci: pin all GitHub Actions to SHA hashes"
    },
    {
      "commit": "5605aa581bcc9f0f444572e524a91ab7c8f011b0",
      "tree": "84549a6e3787bb323837d66f5d5e847d456850d7",
      "parents": [
        "a6dc6f55f15ae2d07e660399fc4578bcbe686fa9"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Mar 26 11:41:56 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Mar 26 11:41:56 2026 +0100"
      },
      "message": "ci: re-trigger workflow after infrastructure-actions sync\n"
    },
    {
      "commit": "a6dc6f55f15ae2d07e660399fc4578bcbe686fa9",
      "tree": "84549a6e3787bb323837d66f5d5e847d456850d7",
      "parents": [
        "972b54edc2963ca06e491e1ede9e2115e72e48a6"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Mar 24 12:39:29 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Mar 24 12:39:29 2026 +0100"
      },
      "message": "ci: trigger workflow re-run after infrastructure-actions approval\n"
    },
    {
      "commit": "972b54edc2963ca06e491e1ede9e2115e72e48a6",
      "tree": "84549a6e3787bb323837d66f5d5e847d456850d7",
      "parents": [
        "26ae22d6681f1ceccf2c4882ea8e07c44e905c30"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sun Mar 22 18:29:38 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sun Mar 22 18:29:38 2026 +0100"
      },
      "message": "ci: pin all GitHub Actions to SHA hashes for supply chain security\n\nPin all action references to commit SHAs instead of mutable tags,\nfollowing ASF infrastructure-actions allowed list where available.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "26ae22d6681f1ceccf2c4882ea8e07c44e905c30",
      "tree": "7440247daf40e11929869525d689ff60b37f1ae6",
      "parents": [
        "738932eef41e96e4ed58970d85c0ee5716b3d9ee"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Mar 18 06:58:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 06:58:21 2026 +0100"
      },
      "message": "ci(deps): bump JetBrains/qodana-action from 2025.3.1 to 2025.3.2 (#58)\n\nBumps [JetBrains/qodana-action](https://github.com/jetbrains/qodana-action) from 2025.3.1 to 2025.3.2.\n- [Release notes](https://github.com/jetbrains/qodana-action/releases)\n- [Commits](https://github.com/jetbrains/qodana-action/compare/v2025.3.1...v2025.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: JetBrains/qodana-action\n  dependency-version: 2025.3.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "738932eef41e96e4ed58970d85c0ee5716b3d9ee",
      "tree": "f37e4285df8c6781845653a523df12c5e8350e6b",
      "parents": [
        "0e3110f833247cd94cd89cc5c3ce7414721b493e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Mar 04 06:32:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 04 06:32:41 2026 +0100"
      },
      "message": "ci(deps): bump actions/upload-artifact from 6 to 7 (#57)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0e3110f833247cd94cd89cc5c3ce7414721b493e",
      "tree": "f80b4892d4e3a78eb9c68c62394dfc3d7de55a7f",
      "parents": [
        "5b343e6809e77287d8f6e9406d54efb840c1e653",
        "78c0a3d46d929bef0a776bcd1a7408fa8dae0840"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Feb 25 08:34:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 08:34:06 2026 +0100"
      },
      "message": "Merge pull request #56 from apache/docs/update-changelog\n\ndocs: update changelog with unreleased changes since v252.18978.1"
    },
    {
      "commit": "78c0a3d46d929bef0a776bcd1a7408fa8dae0840",
      "tree": "13a6287f1d4630689a848200941fcc5366c52402",
      "parents": [
        "ec1182218e2a8ad399876fcec18457074072a5d6"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 08:24:42 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 08:24:42 2026 +0100"
      },
      "message": "docs: update changelog with unreleased changes since v252.18978.1\n\nAdd all changes merged since the last release: deprecated API fixes,\nQodana warning resolutions, nullability fixes, DTD path fix, CI\nworkflow improvements (nightly schedule, two-phase release, PR\nartifact comments), and documentation cleanup.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5b343e6809e77287d8f6e9406d54efb840c1e653",
      "tree": "c40edbad6081dc5c9e8a6df4678de68378b04873",
      "parents": [
        "ec1182218e2a8ad399876fcec18457074072a5d6",
        "0d823445bfb399a1dc8d367e36623dbd27d4af3a"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Feb 25 07:54:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 07:54:22 2026 +0100"
      },
      "message": "Merge pull request #55 from apache/ci/replace-nightly-prereleases-with-tags\n\nci(nightly): replace GitHub pre-releases with lightweight git tags"
    },
    {
      "commit": "0d823445bfb399a1dc8d367e36623dbd27d4af3a",
      "tree": "1c9d1671f25c50b013d4db3a29bc66871cd5e363",
      "parents": [
        "ba51c4b0d6d5b96c2258dd6e7e951495062b215b"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 07:45:53 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 07:45:53 2026 +0100"
      },
      "message": "ci(nightly): replace GitHub pre-releases with lightweight git tags\n\nSwitch nightly workflow from creating GitHub pre-releases to using\nlightweight git tags for change detection and version tracking.\nThe plugin is already distributed via JetBrains Marketplace nightly\nchannel and workflow artifacts, making pre-releases redundant.\n\nChanges:\n- Replace `gh release list` queries with `git tag` lookups\n- Remove `Delete Previous Pre-release` step\n- Replace `Create Pre-release` step with `Create Nightly Tag`\n- Add `fetch-depth: 0` to nightly-release checkout for tag access\n- Remove unnecessary GH_TOKEN env vars\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ec1182218e2a8ad399876fcec18457074072a5d6",
      "tree": "99d2429dd1ca1c32b50e11656badb222dedaefa3",
      "parents": [
        "ba51c4b0d6d5b96c2258dd6e7e951495062b215b",
        "c0b64aec6c4abec7a5cfe91133c4f3b46495dfb9"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Feb 25 07:35:19 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 07:35:19 2026 +0100"
      },
      "message": "Merge pull request #54 from apache/fix/deprecated-api-warnings\n\nfix: resolve deprecated API warnings from Marketplace verification"
    },
    {
      "commit": "c0b64aec6c4abec7a5cfe91133c4f3b46495dfb9",
      "tree": "99d2429dd1ca1c32b50e11656badb222dedaefa3",
      "parents": [
        "ba51c4b0d6d5b96c2258dd6e7e951495062b215b"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 07:26:07 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 07:26:07 2026 +0100"
      },
      "message": "fix: resolve deprecated API warnings from Marketplace verification\n\n- Migrate DaemonCodeAnalyzer.restart() to restart(PsiFile) overload\n- Suppress GraphBuilder.queueUpdate()/initialize() deprecations (no replacement)\n- Suppress FacetConfiguration.readExternal/writeExternal deprecations (no replacement)\n- Suppress CheckboxTreeBase constructor deprecation (no replacement)\n- Add migration note pointing to Diagrams API as future replacement\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ba51c4b0d6d5b96c2258dd6e7e951495062b215b",
      "tree": "b7f593234fe1e65e1cc3f28c2ac998eeb815d185",
      "parents": [
        "1d295e533e1f397d5d891184f470b371f501e601",
        "c5099a94589ff50bfc13f71beb2db8824df61bc3"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Feb 25 07:04:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 07:04:09 2026 +0100"
      },
      "message": "Merge pull request #53 from apache/fix/nightly-version-generation\n\nfix(ci): exclude pre-releases when resolving nightly build number"
    },
    {
      "commit": "c5099a94589ff50bfc13f71beb2db8824df61bc3",
      "tree": "b7f593234fe1e65e1cc3f28c2ac998eeb815d185",
      "parents": [
        "1d295e533e1f397d5d891184f470b371f501e601"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 06:55:29 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Feb 25 06:55:29 2026 +0100"
      },
      "message": "fix(ci): exclude pre-releases when resolving latest build number\n\nThe nightly version generator fetched the most recent release\n(including pre-releases) to determine the next build number.\nWhen the latest release was a nightly (e.g., v253.18981-nightly.1),\nthe sed pattern failed to extract the build number, producing\nbroken versions like \"253.-nightly.2\".\n\nAdd --exclude-pre-releases flag and remove obsolete fallback defaults\nthat are no longer needed now that stable releases exist.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1d295e533e1f397d5d891184f470b371f501e601",
      "tree": "ebbbc9007197594f53b5ff2a23f4d46e01157a8e",
      "parents": [
        "194d39166ca6605148495fe2cda334b178b49970"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Feb 25 06:47:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 06:47:46 2026 +0100"
      },
      "message": "fix: resolve 22 Qodana warnings from CI analysis (#52)\n\n- Exclude src/main/gen from Qodana scanning (9 generated code warnings)\n- Replace redundant Collection.addAll() with constructor initialization\n- Fix 7 incorrect string capitalization warnings in bundle and source\n- Remove unnecessary null check before equals() in StrutsFileSet\n- Replace string concatenation in loop with StringBuilder\n- Suppress unstable API warnings with no public replacements\n- Migrate Struts2GraphComponent from DataProvider to UiDataProvider\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "194d39166ca6605148495fe2cda334b178b49970",
      "tree": "3f616301021c429963d042a864ceba269e131b6f",
      "parents": [
        "86308a011073b7d376c1304a6db06031f4554b03"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Feb 24 15:25:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 15:25:52 2026 +0100"
      },
      "message": "fix: resolve 21 critical nullability/NPE warnings from Qodana CI (#51)\n\nAdd null guards and fix nullable annotations across 15 files to prevent\npotential runtime NPE crashes identified by Qodana static analysis:\n\n- ResultNode: replace FileTypes.UNKNOWN.getIcon() with AllIcons.FileTypes.Unknown\n- Struts2GlobalVariableProvider (freemarker): null-guard action.getXmlTag()\n- ActionPathResultContributor: null-guard action.getXmlTag() in getVariants()\n- ActionChainOrRedirectResultContributor: same pattern in getVariants()\n- GoToActionSymbolProvider: null-guard action.getXmlTag() in addItems()\n- ResultActionPropertyReferenceProvider: null-guard result.getXmlTag(), simplify dead Math.max()\n- StrutsConstantValueReference: null-guard getErrorMessage() return\n- CreateValidationXmlIntention: null-guard action.getName().getStringValue()\n- ExtendableClassConverterSpringContributor: null-guard getPossibleSubClasses()\n- ConstantValueConverterImpl: null-guard domElement.getXmlTag()\n- HardcodedActionUrlInspection: assert buildTag result non-null\n- ValidatorManagerImpl: null-guard clazz.getName()\n- GotoRelatedActionProvider: null-guard pathReference.resolve()\n- StrutsConventionImplicitUsageProvider: null-guard psiClass.getName()\n- StrutsDataModel: fix @Nullable to @NotNull on createGroupNodeRealizer()\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "86308a011073b7d376c1304a6db06031f4554b03",
      "tree": "35670e37d22ae5d5011fe5b2285f00e76515c9f8",
      "parents": [
        "ae3f9930ac41e8ca06dcfc50bd1a3eda78f97c36",
        "b95b90505a2ac464ef11aed593eedf3b68588b2c"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Feb 24 10:35:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 10:35:42 2026 +0100"
      },
      "message": "Merge pull request #50 from apache/fix/nightly-prerelease-filter\n\nfix(ci): filter nightly workflow to only target nightly pre-releases"
    },
    {
      "commit": "b95b90505a2ac464ef11aed593eedf3b68588b2c",
      "tree": "620a0ba760fbc649fec9249930d50055b90cf22a",
      "parents": [
        "99f0faa9d772020d504686eff2dbd7552def3482"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 10:28:04 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 10:28:04 2026 +0100"
      },
      "message": "fix(ci): filter nightly workflow to only target nightly pre-releases\n\nAdd `| select(contains(\"nightly\"))` to three jq filters in the nightly\nworkflow so it no longer interferes with release candidate pre-releases\ncreated by prepare_release.yml:\n\n- check-changes: baseline commit count uses last nightly tag only\n- version generation: nightly counter derived from nightly releases only\n- delete step: only deletes previous nightly pre-releases\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ae3f9930ac41e8ca06dcfc50bd1a3eda78f97c36",
      "tree": "66b6e005442274a1d522aa370453be4633259731",
      "parents": [
        "99f0faa9d772020d504686eff2dbd7552def3482",
        "bf53c2b2620f6ee94567f0f677089c7082cb302e"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Feb 24 10:13:38 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 10:13:38 2026 +0100"
      },
      "message": "Merge pull request #49 from apache/ci/merge-pr-artifact-comment-into-build\n\nci: merge PR artifact comment into build workflow"
    },
    {
      "commit": "bf53c2b2620f6ee94567f0f677089c7082cb302e",
      "tree": "66b6e005442274a1d522aa370453be4633259731",
      "parents": [
        "99f0faa9d772020d504686eff2dbd7552def3482"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 10:04:57 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 10:04:57 2026 +0100"
      },
      "message": "ci: merge PR artifact comment into build workflow\n\nThe workflow_run-based pr-artifact.yml fails for cross-fork PRs because\nthe pull_requests array is empty. Moving the comment logic directly into\nbuild.yml as a conditional job eliminates this issue by using the natively\navailable context.payload.pull_request.number.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "99f0faa9d772020d504686eff2dbd7552def3482",
      "tree": "bae602bbaa22016e63ca48cd9010b461a350ab93",
      "parents": [
        "ab368341cc00d02e8d13476ad3d614636cf581f8",
        "7e9a6ca86cc7e624ba56d90a00567a57a56db0ce"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Feb 24 07:33:07 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 07:33:07 2026 +0100"
      },
      "message": "Merge pull request #48 from apache/fix/nightly-version-collision\n\nci(nightly): fix version collision in nightly workflow"
    },
    {
      "commit": "7e9a6ca86cc7e624ba56d90a00567a57a56db0ce",
      "tree": "bae602bbaa22016e63ca48cd9010b461a350ab93",
      "parents": [
        "ab368341cc00d02e8d13476ad3d614636cf581f8"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 07:25:44 2026 +0100"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Feb 24 07:25:44 2026 +0100"
      },
      "message": "ci(nightly): fix version collision in nightly workflow\n\nTwo bugs caused nightly uploads to fail with duplicate version errors:\n\n1. Branch prefix was read from pluginSinceBuild (252) instead of\n   pluginVersion (253), producing wrong version numbers.\n\n2. Nightly counter was hardcoded to .1, so re-triggers or retained\n   Marketplace versions caused collisions. Now increments the counter\n   from the latest pre-release tag.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ab368341cc00d02e8d13476ad3d614636cf581f8",
      "tree": "724a5bc62653e7c330048996acef929386b20552",
      "parents": [
        "d20f34935bbf5f04a9b3557987d6f2a73a4dbdeb"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 20:16:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 20:16:23 2026 +0100"
      },
      "message": "config(github): enables automerge of PRs (#46)\n\n"
    },
    {
      "commit": "d20f34935bbf5f04a9b3557987d6f2a73a4dbdeb",
      "tree": "c9b945593bd11d91b7ca7eb9a05a7e0978cf8572",
      "parents": [
        "629dab4579272c93eb96e5752f36becfdbf5ee0d"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 20:16:10 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 20:16:10 2026 +0100"
      },
      "message": "docs: clean up README by removing template boilerplate (#45)\n\nReplace IntelliJ Platform Plugin Template boilerplate with project-specific\ncontent: correct plugin description, actual Java test locations, real Gradle\ncommands. Remove non-existent UI tests, Qodana, and Run configurations sections.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "629dab4579272c93eb96e5752f36becfdbf5ee0d",
      "tree": "a0eca9a458c0502615928112b7389362d313d063",
      "parents": [
        "4937d77dfea8e76b0547902df8093a607bc2c84b"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 20:15:43 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 20:15:43 2026 +0100"
      },
      "message": "ci: convert pre-release from per-push to nightly schedule (#47)\n\nMove the createPrerelease job out of build.yml into a dedicated\nnightly.yml workflow that runs daily at 2:00 AM UTC. The new workflow\nchecks for new commits since the last pre-release before building,\navoiding redundant nightly versions when multiple PRs merge in a day.\nManual trigger via workflow_dispatch is also supported.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "4937d77dfea8e76b0547902df8093a607bc2c84b",
      "tree": "d5f11f384ac6191a8b139b6174b4c5cc42ff0858",
      "parents": [
        "8c776641d266b7d58a1e09f32c88ec0e480dfaaf"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 18:00:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 18:00:40 2026 +0100"
      },
      "message": "ci: add two-phase release workflow with prepare and publish steps (#44)\n\nAdd prepare_release.yml workflow (manual dispatch) that builds the plugin,\ncreates a git tag, and publishes a GitHub pre-release for PMC review.\nWhen the pre-release is promoted to a full release, the existing release.yml\nfires and publishes to the Marketplace Stable channel.\n\nAlso fixes:\n- release.yml trigger narrowed to [released] only (was [prereleased, released])\n- build.yml nightly builds now publish to Marketplace nightly channel\n- build.yml HEREDOC bug in pre-release notes creation\n- README.md documents the full release process\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "8c776641d266b7d58a1e09f32c88ec0e480dfaaf",
      "tree": "4ee0e85c177d63efac1bae37fef5a16304893e13",
      "parents": [
        "f6de54f2525c23c8cdc8ee38fd98ccc055972793"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 17:19:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 17:19:33 2026 +0100"
      },
      "message": "fix: strip leading slash from DTD resource path (#43)\n\nIn IntelliJ 2025.3, PluginClassLoader.findResource() no longer resolves\nresource paths with a leading `/`. Remove the leading slash from\nDTD_PATH to fix marketplace verification error.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f6de54f2525c23c8cdc8ee38fd98ccc055972793",
      "tree": "b06560b90a952051650aaeb4edea336cf747c4e5",
      "parents": [
        "ecb2c8768ea8b0c1147afb46ebafd3cadc2df2d0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Feb 23 15:07:43 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 15:07:43 2026 +0100"
      },
      "message": "fix: remediate private and deprecated API usages for marketplace approval (#42)\n\nReplace internal and deprecated IntelliJ Platform APIs to pass\nJetBrains Marketplace verification for plugin version 253.x.\n\nChanges:\n- Replace IconManager.loadRasterizedIcon() with IconLoader.getIcon()\n- Replace WebFacet.getWebRoots(boolean) with getWebRoots()\n- Replace AnActionButton with DumbAwareAction in toolbar\n- Replace IdeFocusManager.doWhenFocusSettlesDown() with requestFocus()\n- Replace ResourceRegistrar.addStdResource(Class) with ClassLoader version\n- Replace FilenameIndex.getFilesByName() with getVirtualFilesByName()\n- Replace deprecated URL(String) constructor with URI.create().toURL()\n- Document GraphBuilder internal API usage (no public replacement)\n- Document EXTEND_CLASS_NAMES deprecation (no replacement available)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ecb2c8768ea8b0c1147afb46ebafd3cadc2df2d0",
      "tree": "c48aced222f13739c8a3aea6aa489dea6c3bd155",
      "parents": [
        "167bd7c319bac7085e79824b89254731817d60ac"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Wed Jan 21 16:48:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 21 16:48:20 2026 +0100"
      },
      "message": "feat: WW-5563 add support for IntelliJ Platform 2025.3 (#29)\n\n* build: upgrade to IntelliJ Platform 2025.3\n\n- Update platformVersion to 2025.3 (build 253.x)\n- Update pluginSinceBuild/pluginUntilBuild to 252-253.*\n- Upgrade org.jetbrains.intellij.platform plugin to 2.10.4\n- Upgrade Gradle to 8.13 (required by platform plugin)\n- Migrate to unified intellijIdea() dependency (2025.3 unified distribution)\n- Update Qodana linter and action to 2025.3\n- Fix CreateFileAction API change (Icon -\u003e Supplier\u003cIcon\u003e)\n- Fix removed BuildableRootsChangeRescanningInfo.addModule() API\n- Temporarily disable 25 tests for 2025.3 compatibility fixes\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n* fix(facet): populate file sets when framework is detected\n\n- Add setupFacet() override to StrutsFrameworkDetector to automatically\n  add detected struts.xml files to file sets when user clicks \"Configure\"\n- Fix key mismatch in StrutsFrameworkInitializer (was storing with\n  project.getName() but retrieving with project.getLocationHash())\n- Fix NPE in StrutsFrameworkInitializer fallback logic that called\n  performInitialization with null facet\n- Refactor framework initialization to use modern ProjectActivity pattern\n- Update various files for IntelliJ Platform 2025.3 compatibility\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n* chore: update plugin vendor and add custom icon\n\n- Change vendor from JetBrains to Apache Software Foundation\n- Add custom plugin icon (Apache feather logo) at 40x40 resolution\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n* Mutes some verifications issues as the plugin was already uploaded into Marketplace\n\n* build: configure plugin verifier mute options in gradle\n\nMove -mute options from command-line (which caused parsing errors) to\nbuild.gradle.kts pluginVerification.freeArgs configuration.\n\nThis plugin was donated by JetBrains and retains its original ID\n\u0027com.intellij.struts2\u0027 for backwards compatibility.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n* Upgrades IntelliJ Platform Gradle Plugin\n\n* Disables continue-on-error\n\n* build: disable configuration cache in CI workflow\n\nWork around XML parsing issues in IntelliJ Platform Gradle Plugin\nwhen resolving bundled plugin dependencies with configuration cache.\n\nThe error \"Recursive lookup of IvyModule.Dependency.Artifact\" occurs\nduring dependency resolution for bundled plugins like com.intellij.javaee.web.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "167bd7c319bac7085e79824b89254731817d60ac",
      "tree": "1f451250381fd79141220c93fafd54ce3e2d89d7",
      "parents": [
        "330738160d06fb8d64eb5e3c128d7f92dc98f6a7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jan 14 06:43:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 06:43:56 2026 +0100"
      },
      "message": "ci(deps): bump actions/upload-artifact from 4 to 6 (#41)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "330738160d06fb8d64eb5e3c128d7f92dc98f6a7",
      "tree": "de9bd0e8beee0d6b2c2a1335652dc7109ced4526",
      "parents": [
        "a7b937671dd243a26eab022aa8017bc3ba880e76"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jan 14 06:43:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 06:43:46 2026 +0100"
      },
      "message": "ci(deps): bump gradle/actions from 3 to 5 (#40)\n\nBumps [gradle/actions](https://github.com/gradle/actions) from 3 to 5.\n- [Release notes](https://github.com/gradle/actions/releases)\n- [Commits](https://github.com/gradle/actions/compare/v3...v5)\n\n---\nupdated-dependencies:\n- dependency-name: gradle/actions\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a7b937671dd243a26eab022aa8017bc3ba880e76",
      "tree": "fae38429d605624fc6fc0a7aff07cb3a012cb1cb",
      "parents": [
        "52a0f65396a1ae8dadf175713550385ad753e631"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jan 14 06:43:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 06:43:24 2026 +0100"
      },
      "message": "ci(deps): bump actions/checkout from 4 to 6 (#39)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "52a0f65396a1ae8dadf175713550385ad753e631",
      "tree": "db0d5ad7938f341b86f6c5e5e4c23f83db194134",
      "parents": [
        "a5d72ac274b2af09f04905c61046e3a757c57b14"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jan 11 08:21:24 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 11 08:21:24 2026 +0100"
      },
      "message": "ci(deps): bump actions/setup-java from 4 to 5 (#36)\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a5d72ac274b2af09f04905c61046e3a757c57b14",
      "tree": "3f08c195629ba899f7584e75d0067fc2bd539e2d",
      "parents": [
        "fd60b9b8db21875c71be43d7b58aba4a8351af09"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jan 11 08:21:12 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 11 08:21:12 2026 +0100"
      },
      "message": "ci(deps): bump actions/cache from 4 to 5 (#35)\n\nBumps [actions/cache](https://github.com/actions/cache) from 4 to 5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd60b9b8db21875c71be43d7b58aba4a8351af09",
      "tree": "c30cacd9a95300d945e06d913d966183700e604e",
      "parents": [
        "441c4554433ac20d7fdeff01fe978e31d625ff44"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jan 11 08:20:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 11 08:20:52 2026 +0100"
      },
      "message": "ci(deps): bump codecov/codecov-action from 4 to 5 (#34)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "441c4554433ac20d7fdeff01fe978e31d625ff44",
      "tree": "d83280b8ea888a5e0925aa238bcf1032a4c92546",
      "parents": [
        "fdd2848a0d38b5d75a254e85c4b0b42dfcf7f367"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jan 11 08:20:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 11 08:20:39 2026 +0100"
      },
      "message": "ci(deps): bump JetBrains/qodana-action from 2024.2.6 to 2025.3.1 (#33)\n\nBumps [JetBrains/qodana-action](https://github.com/jetbrains/qodana-action) from 2024.2.6 to 2025.3.1.\n- [Release notes](https://github.com/jetbrains/qodana-action/releases)\n- [Commits](https://github.com/jetbrains/qodana-action/compare/v2024.2.6...v2025.3.1)\n\n---\nupdated-dependencies:\n- dependency-name: JetBrains/qodana-action\n  dependency-version: 2025.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fdd2848a0d38b5d75a254e85c4b0b42dfcf7f367",
      "tree": "63801e9c68bd9ae8104701820bec99ca386cb5df",
      "parents": [
        "12305b0efb00873597700c3b68682ce1c8d367b6"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Jan 10 21:06:28 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 10 21:06:28 2026 +0100"
      },
      "message": "chore: add GitHub repository metadata to .asf.yaml (#38)\n\nAdd description, homepage URL, and labels configuration for the\nGitHub repository to improve discoverability and organization.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "12305b0efb00873597700c3b68682ce1c8d367b6",
      "tree": "76ccfd78674e9d203dc2f4d992b1b8b3aef7105c",
      "parents": [
        "37e82b156212f497f001467dfb9ab3236eaa9a1a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jan 10 21:00:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 10 21:00:35 2026 +0100"
      },
      "message": "ci(deps): bump actions/github-script from 7 to 8 (#32)\n\nBumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.\n- [Release notes](https://github.com/actions/github-script/releases)\n- [Commits](https://github.com/actions/github-script/compare/v7...v8)\n\n---\nupdated-dependencies:\n- dependency-name: actions/github-script\n  dependency-version: \u00278\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "37e82b156212f497f001467dfb9ab3236eaa9a1a",
      "tree": "aa4970fa5c6edc2496e9eaaa6deec196d64586ea",
      "parents": [
        "221b7986702ed3beeff5b42e153cbf8785e986ac"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Jan 10 20:51:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 10 20:51:21 2026 +0100"
      },
      "message": "fix(ci): resolve Dependabot PR comment permission error (#37)\n\nMove PR artifact comment logic to dedicated workflow triggered by\nworkflow_run. This fixes the \"Resource not accessible by integration\"\n403 error on Dependabot PRs by running in repository context with\nproper permissions.\n\nChanges:\n- Remove inline comment step from build.yml\n- Add new pr-artifact.yml workflow with workflow_run trigger\n- Skip comment workflow for Dependabot PRs (not needed for deps updates)\n- Skip artifact preparation and upload for Dependabot PRs\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "221b7986702ed3beeff5b42e153cbf8785e986ac",
      "tree": "911252d6a361551cf573177fa88beeae89411dc5",
      "parents": [
        "793ecb90fa2d406092a5f33321dabfd5cdc6b0aa"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Jan 10 20:04:03 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 10 20:04:03 2026 +0100"
      },
      "message": "feat(ci): add artifact download for PR builds (#30)\n\n* feat(ci): add artifact download for PR builds\n\n- Add artifact preparation and upload steps to build job\n- Add sticky PR comment with download link to artifacts\n- Enables reviewers to test plugin without building locally\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n* fix(ci): replace third-party action with actions/github-script\n\nReplace marocchino/sticky-pull-request-comment with actions/github-script\nto comply with Apache\u0027s requirement that all actions must be from\napproved repositories (GitHub-owned actions are allowed).\n\nThe sticky comment behavior is preserved using a hidden HTML marker\nto find and update existing comments.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "793ecb90fa2d406092a5f33321dabfd5cdc6b0aa",
      "tree": "76faa41bb3ec4808f4c99ae15174fd78a9d00704",
      "parents": [
        "90474ff757935bc286fc7849d08714d2682c7189"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Jan 10 20:03:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 10 20:03:41 2026 +0100"
      },
      "message": "ci: add dependabot config for GitHub Actions updates (#31)\n\nConfigure Dependabot to automatically check for GitHub Actions updates\non a weekly basis and create PRs with conventional commit messages.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "90474ff757935bc286fc7849d08714d2682c7189",
      "tree": "e6324247b0e0d1544871d408ef50ff86dab07a1b",
      "parents": [
        "047dd022e2b7c4315a09c0916e408c180836df04",
        "9129684487eee91e8114535b1f5d8ae631d5a884"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sat Aug 16 09:21:37 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 16 09:21:37 2025 +0200"
      },
      "message": "Merge pull request #27 from apache/fix/clean-old-prerelease\n\nRemoves old prereleases"
    },
    {
      "commit": "9129684487eee91e8114535b1f5d8ae631d5a884",
      "tree": "e6324247b0e0d1544871d408ef50ff86dab07a1b",
      "parents": [
        "047dd022e2b7c4315a09c0916e408c180836df04"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sat Aug 16 09:12:53 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sat Aug 16 09:12:53 2025 +0200"
      },
      "message": "Removes old prereleases\n"
    },
    {
      "commit": "047dd022e2b7c4315a09c0916e408c180836df04",
      "tree": "a809cdeec08f3ffb3d71fc4404b832a1bc028b60",
      "parents": [
        "24c76add875aedd810a52ee173513c2d46edb2e0",
        "10d4e1aa4a957052d92d65e317c9c60683cd45e3"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 15 20:08:41 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 20:08:41 2025 +0200"
      },
      "message": "Merge pull request #26 from apache/fix/artifact-upload\n\nKeeps artifact name in sync with pre-release version"
    },
    {
      "commit": "10d4e1aa4a957052d92d65e317c9c60683cd45e3",
      "tree": "a809cdeec08f3ffb3d71fc4404b832a1bc028b60",
      "parents": [
        "24c76add875aedd810a52ee173513c2d46edb2e0"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 20:00:05 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 20:00:05 2025 +0200"
      },
      "message": "Keeps artifact name in sync with pre-release version\n"
    },
    {
      "commit": "24c76add875aedd810a52ee173513c2d46edb2e0",
      "tree": "27f1b705b0f188dc26e806d1b2a0717b6a4c7ac8",
      "parents": [
        "3e89b0c5e9952a22a95d46208fb20abf55648e45",
        "4c4562b8e916dfa04f4fb7878ce4e77b0f6da066"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 15 19:46:17 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 19:46:17 2025 +0200"
      },
      "message": "Merge pull request #25 from apache/fix/build-version\n\nImproves building a pre-release version"
    },
    {
      "commit": "4c4562b8e916dfa04f4fb7878ce4e77b0f6da066",
      "tree": "27f1b705b0f188dc26e806d1b2a0717b6a4c7ac8",
      "parents": [
        "ddaf273c91db2403587f276614315955b3593302"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 19:37:12 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 19:37:12 2025 +0200"
      },
      "message": "Uploads artifact only when building on main branch\n"
    },
    {
      "commit": "ddaf273c91db2403587f276614315955b3593302",
      "tree": "cca6c385b8686b2edee393baabfc0c80bc7e6b5b",
      "parents": [
        "3e89b0c5e9952a22a95d46208fb20abf55648e45"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 19:34:26 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 19:34:26 2025 +0200"
      },
      "message": "Increases version only when building a new package on the main branch\n"
    },
    {
      "commit": "3e89b0c5e9952a22a95d46208fb20abf55648e45",
      "tree": "5462a5a9cb6ce97d79572d34c70dcae7e53f9fdc",
      "parents": [
        "38ba2aaa08a2ceb38d2df32036d543886a096350",
        "066224298989bd4b5f4f5432486ecd7d7d574685"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 15 15:59:55 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 15:59:55 2025 +0200"
      },
      "message": "Merge pull request #24 from apache/fix/unit-tests-v2\n\nFixes additional unit tests"
    },
    {
      "commit": "066224298989bd4b5f4f5432486ecd7d7d574685",
      "tree": "5462a5a9cb6ce97d79572d34c70dcae7e53f9fdc",
      "parents": [
        "38ba2aaa08a2ceb38d2df32036d543886a096350"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Wed Aug 13 20:02:04 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 15 15:47:40 2025 +0200"
      },
      "message": "Fixes additional unit tests\n"
    },
    {
      "commit": "38ba2aaa08a2ceb38d2df32036d543886a096350",
      "tree": "89e832cdc1977a6c157f902f4ca1c930c1ef48f4",
      "parents": [
        "eb25ccabb9293094677add396f306687a4c5f0a5",
        "f98559435f6123e8d12218911513fc9e1117379f"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Mon Aug 11 20:19:05 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 11 20:19:05 2025 +0200"
      },
      "message": "Merge pull request #23 from apache/fix/unit-tests\n\nFixes additional unit test"
    },
    {
      "commit": "f98559435f6123e8d12218911513fc9e1117379f",
      "tree": "89e832cdc1977a6c157f902f4ca1c930c1ef48f4",
      "parents": [
        "9fa3f8c4ae4ce7d6919a675e014f7874e9dffed7"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Mon Aug 11 20:01:30 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Mon Aug 11 20:01:30 2025 +0200"
      },
      "message": "Fixes additional unit test\n"
    },
    {
      "commit": "eb25ccabb9293094677add396f306687a4c5f0a5",
      "tree": "38bec099517a5452f1aca647f3dc259a58c49b51",
      "parents": [
        "dabff68cac1f4b4496bf993bd91e61baedd1c6d7",
        "9fa3f8c4ae4ce7d6919a675e014f7874e9dffed7"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 08 19:57:08 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 19:57:08 2025 +0200"
      },
      "message": "Merge pull request #22 from apache/fix/unit-tests\n\nFixes code completion unit tests"
    },
    {
      "commit": "9fa3f8c4ae4ce7d6919a675e014f7874e9dffed7",
      "tree": "38bec099517a5452f1aca647f3dc259a58c49b51",
      "parents": [
        "dabff68cac1f4b4496bf993bd91e61baedd1c6d7"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 19:45:54 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 19:46:37 2025 +0200"
      },
      "message": "Fixes code completion unit tests\n"
    },
    {
      "commit": "dabff68cac1f4b4496bf993bd91e61baedd1c6d7",
      "tree": "9b5ef519e38df904c68154e78795a3da5df8ab79",
      "parents": [
        "34c84b338cfff239101f321b9b15ecd53b913174",
        "5c9e8b623120758e014c067f975d040c2af809fc"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 08 18:27:37 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 18:27:37 2025 +0200"
      },
      "message": "Merge pull request #21 from apache/fix/ognl-tests\n\nFixes OGNL related tests after upgrading to IntelliJ Platform 2024.2"
    },
    {
      "commit": "5c9e8b623120758e014c067f975d040c2af809fc",
      "tree": "626dc560b6249bdc7e321e4a74afff4314abd4fc",
      "parents": [
        "fbf2b6d069f805308da655c0ffcebb2af3722d98"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 16:39:49 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 16:39:49 2025 +0200"
      },
      "message": "Fixes OGNL related tests after upgrading to IntelliJ Platform 2024.2\n"
    },
    {
      "commit": "34c84b338cfff239101f321b9b15ecd53b913174",
      "tree": "41893a6915504845ff1be658c40af7616e96bb30",
      "parents": [
        "fbf2b6d069f805308da655c0ffcebb2af3722d98",
        "18c8a27c7c649f0ec956cc804ee89d8c0c66d92c"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 08 08:57:18 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 08:57:18 2025 +0200"
      },
      "message": "Merge pull request #20 from apache/fix/build-number\n\nUses incremental build number to version plugin"
    },
    {
      "commit": "18c8a27c7c649f0ec956cc804ee89d8c0c66d92c",
      "tree": "41893a6915504845ff1be658c40af7616e96bb30",
      "parents": [
        "fbf2b6d069f805308da655c0ffcebb2af3722d98"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 08:39:11 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 08:39:43 2025 +0200"
      },
      "message": "Uses incremental build number to version plugin\n"
    },
    {
      "commit": "fbf2b6d069f805308da655c0ffcebb2af3722d98",
      "tree": "d5025511721eaca9b0ed0911e0c9510053535bb7",
      "parents": [
        "2aeb0c97bcef55f89abb6899f2c808efa965cc13",
        "48df4c98e869ceb0108d00b8292132d59b9a23bc"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Fri Aug 08 08:38:25 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 08:38:25 2025 +0200"
      },
      "message": "Merge pull request #19 from apache/fix/wrong-packages\n\nAddresses problem with wrong packages in generated code"
    },
    {
      "commit": "48df4c98e869ceb0108d00b8292132d59b9a23bc",
      "tree": "d5025511721eaca9b0ed0911e0c9510053535bb7",
      "parents": [
        "2aeb0c97bcef55f89abb6899f2c808efa965cc13"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 08:26:52 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Fri Aug 08 08:27:48 2025 +0200"
      },
      "message": "Addresses problem with wrong packages in generated code\nThere are over 70 such warning as below\nWrong package statement: src/main/java/com/intellij/struts2/ognl/psi/impl/OgnlPsiUtil.java#L16\nPackage name \u0027com.intellij.lang.ognl.psi.impl\u0027 does not correspond to the file path \u0027com.intellij.struts2.ognl.psi.impl\u0027\n"
    },
    {
      "commit": "2aeb0c97bcef55f89abb6899f2c808efa965cc13",
      "tree": "a7c2b188482ee8ca8c5f73ba20d9874ef883640b",
      "parents": [
        "301a1f4a0f089e5504bcd8062efa965f6e2694ec",
        "7a7f1bc6b88b8a1532720e381053df3e81580618"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Aug 07 23:21:34 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 23:21:34 2025 +0200"
      },
      "message": "Merge pull request #18 from apache/feature/update-plugin-version-270\n\nUpgrades IntelliJ Platform Gradle plugin to version 2.7.0"
    },
    {
      "commit": "7a7f1bc6b88b8a1532720e381053df3e81580618",
      "tree": "3176176701eb5f2ae5d83401df1a6c1a9f5c1b58",
      "parents": [
        "b884d52bebdb8bdc570daaddf54d44255822f593"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 22:31:44 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 23:08:09 2025 +0200"
      },
      "message": "Upgrades IntelliJ Platform Gradle plugin to version 2.7.0\n"
    },
    {
      "commit": "301a1f4a0f089e5504bcd8062efa965f6e2694ec",
      "tree": "1479c13c547ebb9149b263206b17b74d169a8a22",
      "parents": [
        "b884d52bebdb8bdc570daaddf54d44255822f593",
        "7e927993e36176dc66afff166b904215a7674625"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Aug 07 21:59:55 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 21:59:55 2025 +0200"
      },
      "message": "Merge pull request #17 from apache/fix/qodana-version-2024.2.6\n\nFixes Qodana version"
    },
    {
      "commit": "7e927993e36176dc66afff166b904215a7674625",
      "tree": "1479c13c547ebb9149b263206b17b74d169a8a22",
      "parents": [
        "b884d52bebdb8bdc570daaddf54d44255822f593"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 21:42:50 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 21:42:50 2025 +0200"
      },
      "message": "Fixes Qodana version\n"
    },
    {
      "commit": "b884d52bebdb8bdc570daaddf54d44255822f593",
      "tree": "0d98e8bc2f98cfcd3a86a10ff98d626971768f94",
      "parents": [
        "105af2b8bae0e56462036efe694c4cb691af7550",
        "494152a294ae407f844790c8043545285c4456f3"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Aug 07 21:19:34 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 21:19:34 2025 +0200"
      },
      "message": "Merge pull request #16 from apache/fix/compatibility-issues-242\n\nAddresses deprecation warnings and sets proper plugin version"
    },
    {
      "commit": "494152a294ae407f844790c8043545285c4456f3",
      "tree": "0d98e8bc2f98cfcd3a86a10ff98d626971768f94",
      "parents": [
        "105af2b8bae0e56462036efe694c4cb691af7550"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 20:33:52 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Thu Aug 07 21:04:03 2025 +0200"
      },
      "message": "Addresses deprecation warnings and sets proper plugin version\n"
    },
    {
      "commit": "105af2b8bae0e56462036efe694c4cb691af7550",
      "tree": "80ba7db8754860741c71ff03f13f3696dba710ef",
      "parents": [
        "4aee3838df75d248f2f302ffbaa810b205b8e584"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Aug 07 20:03:50 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 20:03:50 2025 +0200"
      },
      "message": "Supports IntelliJ platform 2024.2 (#13)\n\n"
    },
    {
      "commit": "4aee3838df75d248f2f302ffbaa810b205b8e584",
      "tree": "220a6303c669c8ca2892b8d661098c05b87fbe23",
      "parents": [
        "5c3645761a7852cbfdaf367c63da7ea34b714242",
        "ecaef9406e654001dafcc6f60757bfff28b059be"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Thu Aug 07 19:44:54 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 07 19:44:54 2025 +0200"
      },
      "message": "Merge pull request #12 from apache/fix/WW-5558-struts7\n\nWW-5558 Adds support for new Struts packages"
    },
    {
      "commit": "5c3645761a7852cbfdaf367c63da7ea34b714242",
      "tree": "ec196c2ff10c2f6d3e3398f151ae62329579422c",
      "parents": [
        "456bde0eca6c07f3de990be72e57abe199ccce74",
        "c7d5c2eef58ef32002ef787f995a45011c83a6f8"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Aug 05 15:01:35 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 05 15:01:35 2025 +0200"
      },
      "message": "Merge pull request #15 from apache/lukaszlenart-patch-1\n\nUpdate .asf.yaml"
    },
    {
      "commit": "c7d5c2eef58ef32002ef787f995a45011c83a6f8",
      "tree": "ec196c2ff10c2f6d3e3398f151ae62329579422c",
      "parents": [
        "456bde0eca6c07f3de990be72e57abe199ccce74"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Aug 05 14:20:35 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 05 14:20:35 2025 +0200"
      },
      "message": "Update .asf.yaml"
    },
    {
      "commit": "456bde0eca6c07f3de990be72e57abe199ccce74",
      "tree": "eef3c4783b38d034bc09d0f62e51520c80bbb805",
      "parents": [
        "3cf72f8e52212e1f4c2f0b7dbc9963aa2727233f",
        "e94ce40ab5c4f4a555880ee1f7fe54072e9d18ff"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Tue Aug 05 10:32:53 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 05 10:32:53 2025 +0200"
      },
      "message": "Merge pull request #14 from apache/fic/required-checks\n\nFixes required checks"
    },
    {
      "commit": "e94ce40ab5c4f4a555880ee1f7fe54072e9d18ff",
      "tree": "eef3c4783b38d034bc09d0f62e51520c80bbb805",
      "parents": [
        "3cf72f8e52212e1f4c2f0b7dbc9963aa2727233f"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Aug 05 10:19:32 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Tue Aug 05 10:19:32 2025 +0200"
      },
      "message": "Fixes required checks\n"
    },
    {
      "commit": "ecaef9406e654001dafcc6f60757bfff28b059be",
      "tree": "3af296bbc1755a4780f2255bc70b08470b1bef21",
      "parents": [
        "3cf72f8e52212e1f4c2f0b7dbc9963aa2727233f"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Mon Aug 04 21:48:46 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Mon Aug 04 22:33:04 2025 +0200"
      },
      "message": "WW-5558 Adds support for new Struts packages\n"
    },
    {
      "commit": "3cf72f8e52212e1f4c2f0b7dbc9963aa2727233f",
      "tree": "1c851c5e742af2b5218104d7cc8e490d6211000e",
      "parents": [
        "45a8f130ae934780c7424326c7c2ebf47870422c",
        "4e17a8083eb5b8684422890eaadd4f9821ad8aa7"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sun Aug 03 14:52:32 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 03 14:52:32 2025 +0200"
      },
      "message": "Merge pull request #11 from apache/festure/release-flow\n\nPrepares automatic release flow"
    },
    {
      "commit": "4e17a8083eb5b8684422890eaadd4f9821ad8aa7",
      "tree": "21e8a5b3475a6a909cfead117fc4c62ef54212e1",
      "parents": [
        "b762ce199fe443b8b4fb4513f05c3b28dc97fbe5"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sun Aug 03 14:43:49 2025 +0200"
      },
      "committer": {
        "name": "Lukasz Lenart",
        "email": "lukaszlenart@apache.org",
        "time": "Sun Aug 03 14:43:49 2025 +0200"
      },
      "message": "Prepares automatic release flow\n"
    },
    {
      "commit": "45a8f130ae934780c7424326c7c2ebf47870422c",
      "tree": "2aea38e13f432df095560c1f4101b77f24697267",
      "parents": [
        "b762ce199fe443b8b4fb4513f05c3b28dc97fbe5",
        "30c0833edda53d9f521ed21f141ce8fd5c55ed3a"
      ],
      "author": {
        "name": "Lukasz Lenart",
        "email": "lukasz.lenart@gmail.com",
        "time": "Sun Aug 03 14:02:39 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 03 14:02:39 2025 +0200"
      },
      "message": "Merge pull request #10 from apache/festure/build-status\n\nFixes build status"
    }
  ],
  "next": "30c0833edda53d9f521ed21f141ce8fd5c55ed3a"
}
