Skip to content
Merged

next #580

Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e5606df
fix: handle empty releases list in draft cleanup step (#578)
squadgazzz Mar 25, 2026
ea404eb
Migrate IntelliJ Platform repository configuration to `settings.gradl…
hsz Apr 10, 2026
6c8b80e
CHANGELOG update
hsz Apr 10, 2026
b90c983
Remove redundant Kotlin JVM toolchain configuration from `build.gradl…
hsz Apr 10, 2026
a062f15
Remove redundant `intellijPlatform.pluginConfiguration.ideaVersion` c…
hsz Apr 10, 2026
7c098c4
Remove redundant `intellijPlatform.signing` configuration from `build…
hsz Apr 10, 2026
c1841df
Remove redundant `intellijPlatform.publishing.token` configuration fr…
hsz Apr 10, 2026
5aea1c5
Remove redundant `intellijPlatform.pluginVerification` configuration …
hsz Apr 10, 2026
8de915a
Remove redundant `java` plugin declaration from `build.gradle.kts`
hsz Apr 10, 2026
018cb38
Simplify property configuration by removing redundant `pluginGroup` r…
hsz Apr 10, 2026
edb0f0a
Update `version` property in `gradle.properties` and remove redundant…
hsz Apr 10, 2026
465249c
Remove redundant `pluginSinceBuild` property from `gradle.properties`.
hsz Apr 10, 2026
2d81f88
Remove redundant `pluginVersion` configuration from `build.gradle.kts`.
hsz Apr 10, 2026
80c457e
Remove redundant `pluginName` property from `gradle.properties` and `…
hsz Apr 10, 2026
8117821
Remove redundant comments and `pluginVersion` configuration from `gra…
hsz Apr 10, 2026
38580d3
Suppress unstable API usage warning in `settings.gradle.kts`.
hsz Apr 13, 2026
8eeabb3
Remove `opentest4j` dependency from `build.gradle.kts` and `libs.vers…
hsz Apr 13, 2026
4d9a412
Simplify property configuration: replace `pluginGroup` and `pluginNam…
hsz Apr 13, 2026
869b4d8
Remove `gradleVersion` property and wrapper configuration as Gradle W…
hsz Apr 13, 2026
54e18ea
Remove Qodana configuration, dependencies, and related workflow steps.
hsz Apr 13, 2026
7965a46
Remove Kover configuration, dependencies, and related workflow steps.
hsz Apr 13, 2026
64c7597
Remove `intellijPlatform.publishing.channels` configuration from `bui…
hsz Apr 13, 2026
03daa80
Remove (empty) plugin and module dependency configurations from `buil…
hsz Apr 13, 2026
13dee18
Remove `platformVersion` property and inline its value in `build.grad…
hsz Apr 13, 2026
a2c5116
Inline `junit` dependency version in `build.gradle.kts` and remove it…
hsz Apr 13, 2026
12f231b
Remove `libs.versions.toml` and inline plugin versions in build scrip…
hsz Apr 13, 2026
6e3abcc
Refactor changelog property usage to simplify version mapping logic.
hsz Apr 13, 2026
d454cfc
Remove `runIdeForUiTests` obsolete task from `build.gradle.kts`.
hsz Apr 13, 2026
e8aa6d9
Remove `codecov.yml` configuration file to clean up unused CI settings.
hsz Apr 13, 2026
fa25739
2.5.0
hsz Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 2 additions & 22 deletions .github/template-cleanup/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,27 +1,7 @@
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
group = %GROUP%
version = 0.0.1

pluginGroup = %GROUP%
pluginName = %NAME%
pluginRepositoryUrl = https://github.com/%REPOSITORY%
# SemVer format -> https://semver.org
pluginVersion = 0.0.1

# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 252

# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
platformVersion = 2025.2.6.1

# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
platformPlugins =
# Example: platformBundledPlugins = com.intellij.java
platformBundledPlugins =
# Example: platformBundledModules = intellij.spellchecker
platformBundledModules =

# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 9.4.1

# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency = false
Expand Down
50 changes: 2 additions & 48 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# GitHub Actions Workflow is created for testing and preparing the plugin release in the following steps:
# - Validate Gradle Wrapper.
# - Run 'test' and 'verifyPlugin' tasks.
# - Run Qodana inspections.
# - Run the 'buildPlugin' task and prepare artifact for further tests.
# - Run the 'runPluginVerifier' task.
# - Create a draft release.
Expand Down Expand Up @@ -119,51 +118,6 @@ jobs:
name: tests-result
path: ${{ github.workspace }}/build/reports/tests

# Upload the Kover report to CodeCov
- name: Upload Code Coverage Report
uses: codecov/codecov-action@v5
Comment thread
hsz marked this conversation as resolved.
with:
files: ${{ github.workspace }}/build/reports/kover/report.xml
token: ${{ secrets.CODECOV_TOKEN }}

# Run Qodana inspections and provide a report
inspectCode:
name: Inspect code
needs: [ build ]
runs-on: ubuntu-latest
permissions:
contents: write
checks: write
pull-requests: write
steps:

# Free GitHub Actions Environment Disk Space
- name: Maximize Build Space
uses: jlumbroso/free-disk-space@v1.3.1
with:
tool-cache: false
large-packages: false

# Check out the current repository
- name: Fetch Sources
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth: 0 # a full history is required for pull request analysis

# Set up the Java environment for the next steps
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21

# Run Qodana inspections
- name: Qodana - Code Inspection
uses: JetBrains/qodana-action@v2025.1.1
with:
cache-default-branch-only: true

# Run plugin structure verification along with IntelliJ Plugin Verifier
verify:
name: Verify plugin
Expand Down Expand Up @@ -212,7 +166,7 @@ jobs:
releaseDraft:
name: Release draft
if: github.event_name != 'pull_request'
needs: [ build, test, inspectCode, verify ]
needs: [ build, test, verify ]
runs-on: ubuntu-latest
permissions:
contents: write
Expand Down Expand Up @@ -242,7 +196,7 @@ jobs:
run: |
gh api repos/{owner}/{repo}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}
| xargs -r -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{}

# Create a new release draft which is not publicly visible and requires manual acceptance
- name: Create Release Draft
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/template-verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,8 @@ jobs:
echo "\`\`\`diff" >> $GITHUB_STEP_SUMMARY

diff -U 0 \
-I '^pluginVersion' \
-I '^pluginGroup' \
-I '^pluginName' \
-I '^version' \
-I '^group' \
-I '^pluginRepositoryUrl' \
--label .github/template-cleanup/gradle.properties \
--label gradle.properties \
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@
.idea
.intellijPlatform
.kotlin
.qodana
build
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,41 @@

## [Unreleased]

### Changed

- Migrate IntelliJ Platform repository configuration to `settings.gradle.kts`
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.14.0`
- Update `group` property in `gradle.properties` and remove redundant `pluginGroup` configuration from `build.gradle.kts`
- Update `version` property in `gradle.properties` and remove redundant `pluginVersion` configuration from `build.gradle.kts`
- Inline `junit` dependency version in `build.gradle.kts` and remove it from `libs.versions.toml`.
- Remove `platformVersion` property and inline its value in `build.gradle.kts` for cleaner configuration.
- Remove `libs.versions.toml` and inline plugin versions in build scripts for simpler configuration.

### Removed

- Remove (empty) plugin and module dependency configurations from `build.gradle.kts` and `gradle.properties`.
- Remove `opentest4j` dependency from `build.gradle.kts` and `libs.versions.toml`, redundant since IntelliJ Platform 251+
- Remove `gradleVersion` property and wrapper configuration as Gradle Wrapper should be updated with `./gradlew wrapper --gradle-version=9.4.1 && ./gradlew wrapper`
- Remove Qodana configuration, dependencies, and related workflow steps.
- Remove Kover configuration, dependencies, and related workflow steps.
- Remove redundant Kotlin JVM toolchain configuration from `build.gradle.kts`
- Remove redundant `intellijPlatform.pluginConfiguration.ideaVersion.sinceBuild` configuration from `build.gradle.kts`
- Remove redundant `pluginSinceBuild` property from `gradle.properties`
- Remove redundant `intellijPlatform.signing` configuration from `build.gradle.kts`
- Remove redundant `intellijPlatform.publishing.token` configuration from `build.gradle.kts`
- Remove redundant `intellijPlatform.pluginVerification` configuration from `build.gradle.kts`
- Remove redundant `java` plugin declaration from `build.gradle.kts`
- Remove `pluginVersion` configuration from `build.gradle.kts`.
- Remove `pluginName` property from `gradle.properties` and `build.gradle.kts` as it is already set in the `plugin.xml`
- Remove `intellijPlatform.publishing.channels` configuration from `build.gradle.kts`.
- Remove `runIdeForUiTests` obsolete task from `build.gradle.kts`.

## [2.4.1] - 2026-03-20

### Fixed

- GitHub Actions: handle empty releases list in draft cleanup step using `xargs -r`

### Changed

- Upgrade Gradle Wrapper to `9.4.1`
Expand Down
107 changes: 6 additions & 101 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,60 +3,25 @@ import org.jetbrains.changelog.markdownToHTML
import org.jetbrains.intellij.platform.gradle.TestFrameworkType

plugins {
id("java") // Java support
alias(libs.plugins.kotlin) // Kotlin support
alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin
alias(libs.plugins.changelog) // Gradle Changelog Plugin
alias(libs.plugins.qodana) // Gradle Qodana Plugin
alias(libs.plugins.kover) // Gradle Kover Plugin
}

group = providers.gradleProperty("pluginGroup").get()
version = providers.gradleProperty("pluginVersion").get()

// Set the JVM language level used to build the project.
kotlin {
jvmToolchain(21)
}

// Configure project's dependencies
repositories {
mavenCentral()

// IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
intellijPlatform {
defaultRepositories()
}
id("org.jetbrains.kotlin.jvm")
id("org.jetbrains.intellij.platform")
id("org.jetbrains.changelog")
}

// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/version_catalogs.html
dependencies {
testImplementation(libs.junit)
testImplementation(libs.opentest4j)
testImplementation("junit:junit:4.13.2")

// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
intellijIdea(providers.gradleProperty("platformVersion"))

// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') })

// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })

// Module Dependencies. Uses `platformBundledModules` property from the gradle.properties file for bundled IntelliJ Platform modules.
bundledModules(providers.gradleProperty("platformBundledModules").map { it.split(',') })

intellijIdea("2025.2.6.1")
testFramework(TestFrameworkType.Platform)
}
}

// Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html
intellijPlatform {
pluginConfiguration {
name = providers.gradleProperty("pluginName")
version = providers.gradleProperty("pluginVersion")

// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
val start = "<!-- Plugin description -->"
Expand All @@ -72,7 +37,7 @@ intellijPlatform {

val changelog = project.changelog // local variable for configuration cache compatibility
// Get the latest available change notes from the changelog file
changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion ->
changeNotes = version.map { pluginVersion ->
with(changelog) {
renderItem(
(getOrNull(pluginVersion) ?: getUnreleased())
Expand All @@ -82,30 +47,6 @@ intellijPlatform {
)
}
}

ideaVersion {
sinceBuild = providers.gradleProperty("pluginSinceBuild")
}
}

signing {
certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN")
privateKey = providers.environmentVariable("PRIVATE_KEY")
password = providers.environmentVariable("PRIVATE_KEY_PASSWORD")
}

publishing {
token = providers.environmentVariable("PUBLISH_TOKEN")
// The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html#specifying-a-release-channel
channels = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) }
}

pluginVerification {
ides {
recommended()
}
}
}

Expand All @@ -116,44 +57,8 @@ changelog {
versionPrefix = ""
}

// Configure Gradle Kover Plugin - read more: https://kotlin.github.io/kotlinx-kover/gradle-plugin/#configuration-details
kover {
reports {
total {
xml {
onCheck = true
}
}
}
}

tasks {
wrapper {
gradleVersion = providers.gradleProperty("gradleVersion").get()
}

publishPlugin {
dependsOn(patchChangelog)
}
}

intellijPlatformTesting {
runIde {
register("runIdeForUiTests") {
task {
jvmArgumentProviders += CommandLineArgumentProvider {
listOf(
"-Drobot-server.port=8082",
"-Dide.mac.message.dialogs.as.sheets=false",
"-Djb.privacy.policy.text=<!--999.999-->",
"-Djb.consents.confirmation.enabled=false",
)
}
}

plugins {
robotServerPlugin()
}
}
}
}
24 changes: 2 additions & 22 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,27 +1,7 @@
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
group = org.jetbrains.plugins.template
version = 2.4.1

pluginGroup = org.jetbrains.plugins.template
pluginName = IntelliJ Platform Plugin Template
pluginRepositoryUrl = https://github.com/JetBrains/intellij-platform-plugin-template
# SemVer format -> https://semver.org
pluginVersion = 2.4.1

# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 252

# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
platformVersion = 2025.2.6.1

# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
platformPlugins =
# Example: platformBundledPlugins = com.intellij.java
platformBundledPlugins =
# Example: platformBundledModules = intellij.spellchecker
platformBundledModules =

# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 9.4.1

# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency = false
Expand Down
22 changes: 0 additions & 22 deletions gradle/libs.versions.toml
Copy link
Copy Markdown
Contributor

@Danil42Russia Danil Ovchinnikov (Danil42Russia) Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow... that's certainly unexpected...
Why is that? It was convenient, after all

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for questioning that, Danil. Let me explain the background story first:

We're moving toward the multi-module setup, which requires and/or makes setup easier when utilizing the settings.gradle.kts. This makes you define the org.jetbrains.intellij.platform.settings version there, and not Gradle Version Catalog. We end up with Gradle plugin versions defined in multiple places.
Thanks to the pluginManagement.plugins, we can manage versions from one place.

That'll leave us with Version Catalog storing only library versions, not the IntelliJ Platform! Sure, we can define there just the IntelliJ Platform version, but accessing it as a string isn't obvious. That's why it was defined in gradle.properties — again, multiple sources of truth.

If we summarize, we can define versions in gradle.properties, gradle/libs.versions.toml, build.gradle.kts, and settings.gradle.kts.
That's a pretty overcomplicated state for a Template project, isn't it?

This file was deleted.

12 changes: 0 additions & 12 deletions qodana.yml

This file was deleted.

Loading