Skip to content

Modernize plugin for IntelliJ IDEA 2026.1+#174

Open
thomaslabeyrie wants to merge 1 commit intotestmycode:masterfrom
thomaslabeyrie:master
Open

Modernize plugin for IntelliJ IDEA 2026.1+#174
thomaslabeyrie wants to merge 1 commit intotestmycode:masterfrom
thomaslabeyrie:master

Conversation

@thomaslabeyrie
Copy link
Copy Markdown

A compatibility update entirely made with Claude Code making the plugin compatible with IDEA 2026.1+

Replace the unmaintained Maven build (which fetched a 2017-era IntelliJ SDK from a dead repo) with Gradle + IntelliJ Platform Gradle Plugin 2.x. Vendor tmc-core and its transitive dependencies under libs/ since maven.testmycode.net is no longer reachable. Pull Apache Ant from Maven Central — tmc-langs-util's ProjectType references BuildException in its static initializer and was crashing exercise downloads with NoClassDefFoundError.

Source-side fixes for APIs that broke in modern IntelliJ:

  • Migrate StartupEvent from deprecated StartupActivity to ProjectActivity.
  • Move static service lookups out of in TmcSettingsManager and ExerciseDatabaseManager — class initialization must not depend on services.
  • Replace ServiceManager.getService(...) with ApplicationManager.getService(...) in PersistentTmcSettings/PersistentExerciseDatabase, and route every call site through their getInstance() helpers.
  • Replace ContentFactory.SERVICE.getInstance() with ContentFactory.getInstance() in OpenToolWindowAction and TestResultPanelFactory.
  • Update NewProjectUtilModified / ProjectFromSourcesBuilderImplModified for the current ProjectManager / ModifiableModelsProvider APIs.
  • No-op PropertySetter.setLog4jProperties to silence the log4j appender warning; the platform now provides its own SLF4J binding.

Bump plugin.xml since-build to 261 and version to 2.1.0; declare the required com.intellij.modules.platform / com.intellij.modules.java dependencies explicitly.

Replace the unmaintained Maven build (which fetched a 2017-era IntelliJ
SDK from a dead repo) with Gradle + IntelliJ Platform Gradle Plugin 2.x.
Vendor tmc-core and its transitive dependencies under libs/ since
maven.testmycode.net is no longer reachable. Pull Apache Ant from Maven
Central — tmc-langs-util's ProjectType references BuildException in its
static initializer and was crashing exercise downloads with NoClassDefFoundError.

Source-side fixes for APIs that broke in modern IntelliJ:
- Migrate StartupEvent from deprecated StartupActivity to ProjectActivity.
- Move static service lookups out of <clinit> in TmcSettingsManager and
  ExerciseDatabaseManager — class initialization must not depend on services.
- Replace ServiceManager.getService(...) with ApplicationManager.getService(...)
  in PersistentTmcSettings/PersistentExerciseDatabase, and route every call
  site through their getInstance() helpers.
- Replace ContentFactory.SERVICE.getInstance() with ContentFactory.getInstance()
  in OpenToolWindowAction and TestResultPanelFactory.
- Update NewProjectUtilModified / ProjectFromSourcesBuilderImplModified for
  the current ProjectManager / ModifiableModelsProvider APIs.
- No-op PropertySetter.setLog4jProperties to silence the log4j appender warning;
  the platform now provides its own SLF4J binding.

Bump plugin.xml since-build to 261 and version to 2.1.0; declare the
required com.intellij.modules.platform / com.intellij.modules.java
dependencies explicitly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant