Repository navigation
fix: IntelliJ 2026.3 compatibility - #964
Open
dividedmind wants to merge 4 commits into
Open
dividedmind wants to merge 4 commits into
dividedmind wants to merge 4 commits into
Conversation
2026.3 moved the Problems tool window out of the core platform into a bundled plugin of its own, com.intellij.problemsView, and its classes are visible only to plugins which depend on it. Without the dependency our scanner findings panel fails to load there -- in a build compiled against platform 251, which sees no API change at all. The dependency is optional so that a single artifact keeps working on older platforms: they have no plugin with this ID and ignore it, and the Problems View classes are part of their core platform anyway. The config file it names is empty, the dependency itself is what matters. Assisted-by: Claude:claude-opus-5
HttpConfigurable.setProxyLogin and setPlainProxyPassword are gone. They wrote to the proxy credential store, which the tests now use directly; the getters our production code reads are unaffected. StdModuleTypes is gone as well, JavaModuleType.getModuleType() replaces it. Both replacements exist unchanged back to platform 251, so neither is conditional on the platform version. The proxy tests pass on 251 and on 263. Assisted-by: Claude:claude-opus-5
2026.3 splits a number of modules out of the core plugin, each with its own class loader, so they are no longer on the default compile and test classpath: the Problems View became a bundled plugin, and the built-in server, external system, VCS core and Jackson library modules have to be requested explicitly. Two further moves show up only when running tests. idea_rt.jar, which the platform test framework needs to start, ships with the Java plugin rather than the core platform, so the Java plugin joins the test classpath; and intellij.libraries.misc.plugin was dissolved again, so it leaves javaTestCompanionPlugins. All of it is conditional on the platform version. The shipped artifact is built on 251, where none of these IDs resolve, and the runtime side of the Problems View move is handled by the plugin descriptor instead. 2026.3 is still an EAP, so gradle-263.properties pins a build number which has to be bumped by hand; neither CI nor the Plugin Verifier targets it yet. Assisted-by: Claude:claude-opus-5
What moves between platform versions shows in how the platform wires a plugin's class loader, and that is what our existing checks miss: the tests force the core class loader, and the Plugin Verifier does not model it. runIde does not answer the question either, because it rebuilds the plugin against the platform under test. runIdeOn launches another IDE build with the plugin as compiled against the default platform, which is the combination users actually install. Assisted-by: Claude:claude-opus-5
There was a problem hiding this comment.
🟡 Changes recommended
The custom testWithoutAgent target lacks the Java plugin dependency needed to start platform tests on 263.
No open issues 🎉
What changed in this PR
Restores IntelliJ 2026.3 compatibility while preserving support for older platforms.
Changes:
- Adds an optional Problems View dependency for runtime class loading.
- Updates tests to use compatible platform APIs.
- Adds 263 build dependencies, an EAP target, and cross-version launch support.
| File | Description |
|---|---|
| plugin-java/src/test/java/appland/execution/AppMapJavaAgentRunnerTest.java | Replaces the removed module-type API. |
| plugin-core/src/test/java/appland/cli/DefaultCommandLineServiceTest.java | Uses the proxy credential store. |
| plugin-core/src/main/resources/META-INF/appmap-problems-view.xml | Supplies the optional dependency descriptor. |
| plugin-core/src/main/resources/META-INF/appmap-core.xml | Declares the Problems View dependency. |
| gradle-263.properties | Pins the 2026.3 EAP build. |
| build.gradle.kts | Adds compatibility dependencies and runIdeOn. |
Review effort: Balanced
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
2026.3 moved the Problems tool window out of the core platform into a bundled plugin of its own,
com.intellij.problemsView, whose classes are visible only to plugins which depend on it. Our scanner findings panel extends it, so it fails to load there — including in the released artifact, which is compiled against platform 251 and therefore sees no API change at all. This adds the dependency, plus everything needed to build and test against 2026.3 so the next move of this kind is caught locally.Changes
fix:an optional<depends>com.intellij.problemsView</depends>with an empty config file, mirroring the existing JCEF pattern. Optional keeps one artifact working everywhere: older platforms have no plugin with this ID and ignore it, and the Problems View classes are part of their core platform anyway. This is the only commit that changes what ships.test:HttpConfigurable.setProxyLogin/setPlainProxyPasswordandStdModuleTypeswere removed in 2026.3; the tests now useProxyCredentialStoreandJavaModuleType.getModuleType(), both of which exist unchanged back to 251, so neither replacement is conditional.build:platformVersion >= 263dependencies for the modules 2026.3 split out of the core plugin (Problems View, built-in server, external system, VCS core, Jackson), the Java plugin on the test classpath becauseidea_rt.jarships with it now,intellij.libraries.misc.plugindropped fromjavaTestCompanionPlugins, andgradle-263.propertiespinning the EAP build.build:arunIdeOntask which launches another IDE build with the plugin compiled against the default platform — the combination users install, and the only local check that exercises it.Verification
proxySettings*tests pass on both 251 and 263, so the credential-store rewrite is behaviourally equivalent.-PplatformVersion=263 runIdeandrunIdeOn: the AppMap findings tab is present in the Problems tool window.Worth noting that the automated checks could not have caught this one. The test JVM runs with
-Didea.force.use.core.classloader=true, so class loader isolation never applies there, and the Plugin Verifier analyses the 251-built artifact statically without modelling how the platform wires a plugin's class loader. HencerunIdeOn.Out of scope
testImplementation(project(":plugin-core", "testOutput")). Unblocking it means reworking how test classes are shared between modules.