Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 15 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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")
}
}
}
Expand Down Expand Up @@ -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<org.jetbrains.intellij.platform.gradle.tasks.RunIdeTask>("runIde") {
jvmArgumentProviders += CommandLineArgumentProvider {
listOf("-Deap.require.license=true")
}
}

// Task to copy runtime dependencies for SBOM generation
register<Copy>("copyDependencies") {
from(configurations.runtimeClasspath)
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions src/main/kotlin/keepersecurity/action/KeeperGetSecretAction.kt
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
Loading