diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0435157..f40bb78 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -27,69 +27,23 @@ jobs:
# Check out the current repository
- name: Fetch Sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
# Set up the Java environment for the next steps
- name: Setup Java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21
# Setup Gradle
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
# Build plugin
- name: Build plugin
run: ./gradlew buildPlugin
- # Run Qodana inspections and provide a report
- inspectCode:
- name: Inspect code
- needs: [ build ]
- runs-on: ubuntu-latest
- if: github.event_name == 'pull_request'
-
- 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@v4
- 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@v4
- with:
- distribution: zulu
- java-version: 21
-
- # Run Qodana inspections
- - name: Qodana - Code Inspection
- uses: JetBrains/qodana-action@v2025.1.1
- with:
- args: --baseline,./.qodana/baseline.sarif.json
- cache-default-branch-only: true
-
- - name: Qodana - Publish Results
- uses: github/codeql-action/upload-sarif@v3
- with:
- sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
-
# Run tests and upload a code coverage report
test:
name: Test (${{ matrix.os }})
@@ -113,18 +67,18 @@ jobs:
# Check out the current repository
- name: Fetch Sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
# Set up the Java environment for the next steps
- name: Setup Java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21
# Setup Gradle
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
@@ -135,11 +89,57 @@ jobs:
# Collect Tests Result of failed tests
- name: Collect Tests Result
if: ${{ failure() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: tests-result-${{ matrix.os }}
path: ${{ github.workspace }}/build/reports/tests
+ # Run Qodana inspections and provide a report
+ inspectCode:
+ name: Inspect code
+ needs: [ build ]
+ runs-on: ubuntu-latest
+ if: github.event_name == 'pull_request'
+
+ 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@v5
+ 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:
+ args: --baseline,./.qodana/baseline.sarif.json
+ cache-default-branch-only: true
+
+ - name: Qodana - Publish Results
+ uses: github/codeql-action/upload-sarif@v3
+ with:
+ sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
+
# Run plugin structure verification along with IntelliJ Plugin Verifier
verify:
name: Verify plugin
@@ -156,18 +156,18 @@ jobs:
# Check out the current repository
- name: Fetch Sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
# Set up the Java environment for the next steps
- name: Setup Java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21
# Setup Gradle
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
@@ -178,7 +178,7 @@ jobs:
# Collect Plugin Verifier Result
- name: Collect Plugin Verifier Result
if: ${{ always() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: pluginVerifier-result
path: ${{ github.workspace }}/build/reports/pluginVerifier
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3d809a9..7980cbb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,7 +1,8 @@
name: Release
on:
release:
- types: [released]
+ types: [ released ]
+
jobs:
# Prepare and publish the GitHub releases
@@ -22,27 +23,25 @@ jobs:
# Check out the current repository
- name: Fetch Sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
ref: ${{ github.event.release.tag_name }}
# Set up the Java environment for the next steps
- name: Setup Java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: zulu
java-version: 21
# Setup Gradle
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
# Build the plugin artifact
- name: Build the Plugin
- env:
- SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
./gradlew buildPlugin
diff --git a/.run/Run Plugin.run.xml b/.run/Run Plugin.run.xml
index c4ec3d6..855d1a8 100644
--- a/.run/Run Plugin.run.xml
+++ b/.run/Run Plugin.run.xml
@@ -16,10 +16,10 @@
- true
+ false
true
false
false
-
\ No newline at end of file
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 993a332..4fb4472 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Modulite Changelog
+## 1.1.12 - 24.12.2025
+
+- Adapt code for PhpStorm 2025.3
+
## 1.1.11 - 06.08.2025
- Adapt code for PhpStorm 2025.2
diff --git a/build.gradle.kts b/build.gradle.kts
index daa753d..474cfaf 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -27,14 +27,14 @@ repositories {
}
}
-// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
+// 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)
// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
- create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
+ phpstorm(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(',') })
@@ -42,9 +42,10 @@ dependencies {
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(providers.gradleProperty("platformPlugins").map { it.split(',') })
- testFramework(TestFrameworkType.Platform)
+ // Module Dependencies. Uses `platformBundledModules` property from the gradle.properties file for bundled IntelliJ Platform modules.
+ bundledModules(providers.gradleProperty("platformBundledModules").map { it.split(',') })
- bundledModules(providers.gradleProperty("bundledModules").map { it.split(",") })
+ testFramework(TestFrameworkType.Platform)
}
}
@@ -69,7 +70,6 @@ intellijPlatform {
ideaVersion {
sinceBuild = providers.gradleProperty("pluginSinceBuild")
- untilBuild = providers.gradleProperty("pluginUntilBuild")
}
}
@@ -94,7 +94,7 @@ changelog {
repositoryUrl = providers.gradleProperty("pluginRepositoryUrl")
}
-// Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration
+// Configure Gradle Kover Plugin - read more: https://kotlin.github.io/kotlinx-kover/gradle-plugin/#configuration-details
kover {
reports {
total {
diff --git a/gradle.properties b/gradle.properties
index 97f6cc8..0728e04 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,26 +5,24 @@ pluginName = modulite
pluginRepositoryUrl = https://github.com/VKCOM/modulite
# SemVer format -> https://semver.org
-pluginVersion = 1.1.11
+pluginVersion = 1.1.12
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
-pluginSinceBuild = 252
-pluginUntilBuild = 252.*
+pluginSinceBuild = 253
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
-platformType = PS
-platformVersion = 2025.2
+platformVersion = 2025.3
# 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 = com.jetbrains.php, org.jetbrains.plugins.yaml, Git4Idea
-
-bundledModules = intellij.spellchecker
+# Example: platformBundledModules = intellij.spellchecker
+platformBundledModules = intellij.spellchecker
# Gradle Releases -> https://github.com/gradle/gradle/releases
-gradleVersion = 9.0.0
+gradleVersion = 9.2.1
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency = false
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 7579eac..9790379 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -4,10 +4,10 @@ junit = "4.13.2"
opentest4j = "1.3.0"
# plugins
-changelog = "2.4.0"
-intelliJPlatform = "2.7.0"
-kotlin = "2.2.0"
-kover = "0.9.1"
+changelog = "2.5.0"
+intelliJPlatform = "2.10.5"
+kotlin = "2.2.21"
+kover = "0.9.3"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 8bdaf60..f8e1ee3 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2a84e18..23449a2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index ef07e01..adff685 100755
--- a/gradlew
+++ b/gradlew
@@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
diff --git a/gradlew.bat b/gradlew.bat
index db3a6ac..c4bdd3a 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,11 +70,10 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/qodana.yaml b/qodana.yaml
index d19f716..7a4e185 100644
--- a/qodana.yaml
+++ b/qodana.yaml
@@ -2,7 +2,7 @@
# https://www.jetbrains.com/help/qodana/qodana-yaml.html
version: "1.0"
-linter: jetbrains/qodana-jvm-community:2025.2
+linter: jetbrains/qodana-jvm-community:2025.3
projectJDK: "21"
profile:
name: Project Default
diff --git a/src/main/kotlin/com/vk/modulite/actions/dialogs/DepsRegenerationResultDialog.kt b/src/main/kotlin/com/vk/modulite/actions/dialogs/DepsRegenerationResultDialog.kt
index 1b7399c..d7906c0 100644
--- a/src/main/kotlin/com/vk/modulite/actions/dialogs/DepsRegenerationResultDialog.kt
+++ b/src/main/kotlin/com/vk/modulite/actions/dialogs/DepsRegenerationResultDialog.kt
@@ -82,7 +82,7 @@ class DepsRegenerationResultDialog(
override fun needCheckboxes() = false
- override fun onDoubleClick(node: CheckedTreeNode) {}
+ override fun onDoubleClick(node: CheckedTreeNode?) {}
override fun borders(): Border = IdeBorderFactory.createBorder()
diff --git a/src/main/kotlin/com/vk/modulite/actions/dialogs/ManageModuliteExportsDialog.kt b/src/main/kotlin/com/vk/modulite/actions/dialogs/ManageModuliteExportsDialog.kt
index 9daf262..a5518f5 100644
--- a/src/main/kotlin/com/vk/modulite/actions/dialogs/ManageModuliteExportsDialog.kt
+++ b/src/main/kotlin/com/vk/modulite/actions/dialogs/ManageModuliteExportsDialog.kt
@@ -68,7 +68,7 @@ class ManageModuliteExportsDialog(
override fun needCheckboxes() = true
- override fun onDoubleClick(node: CheckedTreeNode) {}
+ override fun onDoubleClick(node: CheckedTreeNode?) {}
override fun borders(): Border = IdeBorderFactory.createBorder()
diff --git a/src/main/kotlin/com/vk/modulite/actions/dialogs/ModuliteWizardDialog.kt b/src/main/kotlin/com/vk/modulite/actions/dialogs/ModuliteWizardDialog.kt
index b7193cf..92310ce 100644
--- a/src/main/kotlin/com/vk/modulite/actions/dialogs/ModuliteWizardDialog.kt
+++ b/src/main/kotlin/com/vk/modulite/actions/dialogs/ModuliteWizardDialog.kt
@@ -77,7 +77,11 @@ class ModuliteWizardDialog(
init()
}
- override fun onDoubleClick(node: CheckedTreeNode) {
+ override fun onDoubleClick(node: CheckedTreeNode?) {
+ if (node == null) {
+ return
+ }
+
node.isChecked = !node.isChecked
tree().repaint()
}
diff --git a/src/main/kotlin/com/vk/modulite/actions/panels/ModuliteSymbolDialog.kt b/src/main/kotlin/com/vk/modulite/actions/panels/ModuliteSymbolDialog.kt
index 516c52e..20984cc 100644
--- a/src/main/kotlin/com/vk/modulite/actions/panels/ModuliteSymbolDialog.kt
+++ b/src/main/kotlin/com/vk/modulite/actions/panels/ModuliteSymbolDialog.kt
@@ -44,7 +44,7 @@ class ModuliteSymbolDialog(
init()
}
- override fun onDoubleClick(node: CheckedTreeNode) {
+ override fun onDoubleClick(node: CheckedTreeNode?) {
if (node is SymbolTreeNode) {
node.isChecked = true
close(OK_EXIT_CODE)
diff --git a/src/main/kotlin/com/vk/modulite/actions/panels/SymbolsTreeBase.kt b/src/main/kotlin/com/vk/modulite/actions/panels/SymbolsTreeBase.kt
index 003a306..391b211 100644
--- a/src/main/kotlin/com/vk/modulite/actions/panels/SymbolsTreeBase.kt
+++ b/src/main/kotlin/com/vk/modulite/actions/panels/SymbolsTreeBase.kt
@@ -47,9 +47,7 @@ abstract class SymbolsTreeBase(private val symbols: List) {
override fun isPathEditable(path: TreePath): Boolean = false
- override fun onDoubleClick(node: CheckedTreeNode) {
- onDoubleClickProxy(node)
- }
+ override fun onDoubleClick(node: CheckedTreeNode?) = onDoubleClickProxy(node)
override fun getToolTipText(event: MouseEvent): String {
val path = tree.getPathForLocation(event.x, event.y) ?: return ""
@@ -119,7 +117,7 @@ abstract class SymbolsTreeBase(private val symbols: List) {
fun tree() = tree
- abstract fun onDoubleClick(node: CheckedTreeNode)
+ abstract fun onDoubleClick(node: CheckedTreeNode?)
abstract fun selectionModel(): Int
abstract fun tooltipAdditionalInfo(node: TooltipNode): String?
@@ -157,7 +155,7 @@ abstract class SymbolsTreeBase(private val symbols: List) {
}
}
- private fun onDoubleClickProxy(node: CheckedTreeNode) = onDoubleClick(node)
+ private fun onDoubleClickProxy(node: CheckedTreeNode?) = onDoubleClick(node)
private fun groupByFirst(root: TreeBaseNode, rawNames: List, names: List>) {
val groups = names.groupBy { it[0] }