diff --git a/CHANGELOG.md b/CHANGELOG.md index ab1d564..30798b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,14 @@ ### Fixed - **Commander compatibility** for current folder and record discriminators (`classic_folder` / `nested_share_folder`, `Classic` / `Nested`), with support for older wire values. +## [2.0.2] - 2026-07-07 + +### Fixed +- Replaced internal `PluginManagerCore` API with public `PluginManager.isPluginInstalled()` for HTTP Client detection +- Replaced deprecated `JBUI.CurrentTheme.Link.linkColor()` with `Link.Foreground.ENABLED` +- Removed empty optional Python dependency declaration that had no runtime effect +- Plugin now verifies compatibility against IntelliJ IDEA 2026.2 EAP (build 262.8665.81) + ## [1.2.0] - 2026-06-22 ### Added diff --git a/build.gradle.kts b/build.gradle.kts index d59a06e..2bfe533 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,12 +5,12 @@ import org.jetbrains.intellij.platform.gradle.TestFrameworkType plugins { id("java") // Java support - id("org.jetbrains.kotlin.jvm") version "2.2.0" // Kotlin support + id("org.jetbrains.kotlin.jvm") version "2.4.0" // Kotlin support id("org.jetbrains.intellij.platform") version "2.7.0" // IntelliJ Platform Gradle Plugin - id("org.jetbrains.kotlin.plugin.serialization") version "2.2.0" + id("org.jetbrains.kotlin.plugin.serialization") version "2.4.0" id("org.jetbrains.changelog") version "2.3.0" // Gradle Changelog Plugin id("org.jetbrains.qodana") version "2025.1.1" // Gradle Qodana Plugin - id("org.jetbrains.kotlinx.kover") version "0.9.1" // Gradle Kover Plugin + id("org.jetbrains.kotlinx.kover") version "0.9.8" // Gradle Kover Plugin } group = providers.gradleProperty("pluginGroup").get() @@ -121,9 +121,8 @@ intellijPlatform { pluginVerification { ides { ide(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion")) - // Optionally verify against additional IDEs: - // ide("IC", "2024.3.6") - // ide("IU", "2024.3.6") + // Verify against the EAP build used by the JetBrains Marketplace live checker (build 262.8665.81 = IU 2026.2) + ide("IU", "262.8665.81") } } } @@ -154,6 +153,16 @@ tasks { dependsOn(patchChangelog) } + // Activate the EAP trial widget so the IDE shows the same toolbar state the JetBrains + // Marketplace live checker uses (build IU-262.8665.81, eap.require.license=true). + // To test against 2026.2 EAP: set platformVersion=2026.2 in gradle.properties locally, + // then run ./gradlew runIde. + named("runIde") { + jvmArgumentProviders += CommandLineArgumentProvider { + listOf("-Deap.require.license=true") + } + } + // Task to copy runtime dependencies for SBOM generation register("copyDependencies") { from(configurations.runtimeClasspath) diff --git a/gradle.properties b/gradle.properties index af70108..fd07d58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,11 +7,11 @@ pluginGroup = com.keepersecurity.jetbrains pluginName = Keeper Security pluginRepositoryUrl = https://github.com/Keeper-Security/keeper-jetbrains-plugin # SemVer format -> https://semver.org -pluginVersion = 2.0.1 +pluginVersion = 2.0.2 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 243 -pluginUntilBuild = +pluginUntilBuild = # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension # IU bundles HTTP Client (restClient); use IC for Community-only verification via Gradle property override diff --git a/src/main/kotlin/keepersecurity/action/KeeperGetSecretAction.kt b/src/main/kotlin/keepersecurity/action/KeeperGetSecretAction.kt index 8ca3864..50d92b4 100644 --- a/src/main/kotlin/keepersecurity/action/KeeperGetSecretAction.kt +++ b/src/main/kotlin/keepersecurity/action/KeeperGetSecretAction.kt @@ -1,11 +1,11 @@ package keepersecurity.action +import com.intellij.ide.plugins.PluginManager import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.editor.Editor -import com.intellij.ide.plugins.PluginManager import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.progress.ProgressIndicator @@ -330,11 +330,11 @@ class KeeperGetSecretAction : AnAction("Get Keeper Secret") { } /** - * Detects JetBrains HTTP Client request files by extension when the HTTP Client plugin is - * installed. Uses public [PluginManager.isPluginInstalled] (not Internal API - * [com.intellij.ide.plugins.PluginManagerCore.getPlugin]). The `$keeper` dynamic variable is - * registered only when optional `com.jetbrains.restClient` loads `keeper-http-client.xml`. - */ + * Detects JetBrains HTTP Client request files by extension when the HTTP Client plugin is + * installed. Uses public [PluginManager.isPluginInstalled] (not Internal API + * [com.intellij.ide.plugins.PluginManagerCore.getPlugin]). The `$keeper` dynamic variable is + * registered only when optional `com.jetbrains.restClient` loads `keeper-http-client.xml`. + */ private fun isHttpClientRequestFile(editor: Editor): Boolean { val file: VirtualFile = FileDocumentManager.getInstance().getFile(editor.document) ?: return false if (!isHttpClientPluginEnabled()) return false