From 1f3e06d0b19ffbafeb4baa5724c4afdb24726867 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 15 Oct 2025 12:30:11 +0200 Subject: [PATCH] [JEWEL-1051] Fix Metalava CI checks, add gen'd theme sanity checks This fixes the issues we've been having with PRs that introduce changes in a release, and also gives us a way to deal with the platform removing deprecated and unused APIs in their usual cleanup cycles. The solution is using Metalava baselines for any changes mid-cycle; we write all changes there and, when it's time to release, we validate and store the changes for that release. While this is not a perfect solution it at least allows us to see those baseline changes in the PRs. Then we can at least review them. The release and PR documentations were updated accordingly. This also updates the generated themes and adds a sanity check test that should ensure they get updated when the major platform version is also bumped (and, that we don't mistakenly cherry-pick their changes to an older release branch). Note: this also updates ktfmt's IJ plugin settings since the new plugin version changed the storage format slightly. closes https://github.com/JetBrains/intellij-community/pull/3276 (cherry picked from commit 5127f3429d3a16710797c6e7e279abd0dcfbd21e) (cherry picked from commit 394a30be911b17a7eb03169ac96191f877933915) IJ-MR-179919 GitOrigin-RevId: 2bd74824ae8928616a63ffa0e1cb2420b92e871a --- .idea/modules.xml | 1 + build/bazel-generated-file-list.txt | 1 + platform/jewel/.idea/ktfmt.xml | 2 +- .../metalava/ApiChangedException.kt | 2 +- .../metalava/CheckMetalavaApiTask.kt | 79 +++--- .../buildlogic/metalava/MetalavaConfigurer.kt | 29 ++- .../decorated-window-baseline-current.txt | 1 + ...corated-window-baseline-stable-current.txt | 1 + platform/jewel/docs/pr-guide.md | 2 + platform/jewel/docs/releasing-guide.md | 12 +- .../metalava/foundation-baseline-current.txt | 1 + .../foundation-baseline-stable-current.txt | 1 + .../ide-laf-bridge-baseline-current.txt | 1 + ...ide-laf-bridge-baseline-stable-current.txt | 1 + ...t-ui-decorated-window-baseline-current.txt | 1 + ...corated-window-baseline-stable-current.txt | 1 + .../int-ui-standalone-tests/BUILD.bazel | 39 +++ .../int-ui-standalone-tests/build.gradle.kts | 10 + ....platform.jewel.intUi.standalone.tests.iml | 31 +++ .../core/theme/GeneratedThemeUpToDateTest.kt | 122 +++++++++ .../int-ui/int-ui-standalone/build.gradle.kts | 3 + ...tellij.platform.jewel.intUi.standalone.iml | 4 +- .../int-ui-standalone-baseline-current.txt | 1 + ...-ui-standalone-baseline-stable-current.txt | 1 + .../core/metalava/core-baseline-current.txt | 1 + .../metalava/core-baseline-stable-current.txt | 1 + .../metalava/autolink-baseline-current.txt | 1 + .../autolink-baseline-stable-current.txt | 1 + .../metalava/gfm-alerts-baseline-current.txt | 1 + .../gfm-alerts-baseline-stable-current.txt | 1 + .../gfm-strikethrough-baseline-current.txt | 1 + ...-strikethrough-baseline-stable-current.txt | 1 + .../metalava/gfm-tables-baseline-current.txt | 1 + .../gfm-tables-baseline-stable-current.txt | 1 + .../metalava/images-baseline-current.txt | 1 + .../images-baseline-stable-current.txt | 1 + ...de-laf-bridge-styling-baseline-current.txt | 1 + ...bridge-styling-baseline-stable-current.txt | 1 + ...ui-standalone-styling-baseline-current.txt | 1 + ...dalone-styling-baseline-stable-current.txt | 1 + .../scripts/metalava-signatures.main.kts | 240 ++++++++---------- platform/jewel/settings.gradle.kts | 1 + .../jewel/ui/metalava/ui-baseline-current.txt | 3 + .../metalava/ui-baseline-stable-current.txt | 3 + 44 files changed, 437 insertions(+), 173 deletions(-) create mode 100644 platform/jewel/decorated-window/metalava/decorated-window-baseline-current.txt create mode 100644 platform/jewel/decorated-window/metalava/decorated-window-baseline-stable-current.txt create mode 100644 platform/jewel/foundation/metalava/foundation-baseline-current.txt create mode 100644 platform/jewel/foundation/metalava/foundation-baseline-stable-current.txt create mode 100644 platform/jewel/ide-laf-bridge/metalava/ide-laf-bridge-baseline-current.txt create mode 100644 platform/jewel/ide-laf-bridge/metalava/ide-laf-bridge-baseline-stable-current.txt create mode 100644 platform/jewel/int-ui/int-ui-decorated-window/metalava/int-ui-decorated-window-baseline-current.txt create mode 100644 platform/jewel/int-ui/int-ui-decorated-window/metalava/int-ui-decorated-window-baseline-stable-current.txt create mode 100644 platform/jewel/int-ui/int-ui-standalone-tests/BUILD.bazel create mode 100644 platform/jewel/int-ui/int-ui-standalone-tests/build.gradle.kts create mode 100644 platform/jewel/int-ui/int-ui-standalone-tests/intellij.platform.jewel.intUi.standalone.tests.iml create mode 100644 platform/jewel/int-ui/int-ui-standalone-tests/src/test/kotlin/org/jetbrains/jewel/intui/core/theme/GeneratedThemeUpToDateTest.kt create mode 100644 platform/jewel/int-ui/int-ui-standalone/metalava/int-ui-standalone-baseline-current.txt create mode 100644 platform/jewel/int-ui/int-ui-standalone/metalava/int-ui-standalone-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/core/metalava/core-baseline-current.txt create mode 100644 platform/jewel/markdown/core/metalava/core-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/extensions/autolink/metalava/autolink-baseline-current.txt create mode 100644 platform/jewel/markdown/extensions/autolink/metalava/autolink-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-alerts/metalava/gfm-alerts-baseline-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-alerts/metalava/gfm-alerts-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-strikethrough/metalava/gfm-strikethrough-baseline-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-strikethrough/metalava/gfm-strikethrough-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-tables/metalava/gfm-tables-baseline-current.txt create mode 100644 platform/jewel/markdown/extensions/gfm-tables/metalava/gfm-tables-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/extensions/images/metalava/images-baseline-current.txt create mode 100644 platform/jewel/markdown/extensions/images/metalava/images-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/ide-laf-bridge-styling/metalava/ide-laf-bridge-styling-baseline-current.txt create mode 100644 platform/jewel/markdown/ide-laf-bridge-styling/metalava/ide-laf-bridge-styling-baseline-stable-current.txt create mode 100644 platform/jewel/markdown/int-ui-standalone-styling/metalava/int-ui-standalone-styling-baseline-current.txt create mode 100644 platform/jewel/markdown/int-ui-standalone-styling/metalava/int-ui-standalone-styling-baseline-stable-current.txt create mode 100644 platform/jewel/ui/metalava/ui-baseline-current.txt create mode 100644 platform/jewel/ui/metalava/ui-baseline-stable-current.txt diff --git a/.idea/modules.xml b/.idea/modules.xml index 29aefff421f5..ff356d644e91 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -1129,6 +1129,7 @@ + diff --git a/build/bazel-generated-file-list.txt b/build/bazel-generated-file-list.txt index 4d6b9d1a8c2e..10afd97f3deb 100644 --- a/build/bazel-generated-file-list.txt +++ b/build/bazel-generated-file-list.txt @@ -582,6 +582,7 @@ platform/jewel/foundation platform/jewel/ide-laf-bridge platform/jewel/int-ui/int-ui-decorated-window platform/jewel/int-ui/int-ui-standalone +platform/jewel/int-ui/int-ui-standalone-tests platform/jewel/markdown/core platform/jewel/markdown/extensions/autolink platform/jewel/markdown/extensions/gfm-alerts diff --git a/platform/jewel/.idea/ktfmt.xml b/platform/jewel/.idea/ktfmt.xml index 615c312e88df..0d8bf4dc7901 100644 --- a/platform/jewel/.idea/ktfmt.xml +++ b/platform/jewel/.idea/ktfmt.xml @@ -2,8 +2,8 @@