Skip to content

Migrate plugin to IntelliJ 2025.3#2

Merged
mdelambilly merged 33 commits into
mainfrom
migration/intellij-2025.3-neo4j-5.26
Mar 20, 2026
Merged

Migrate plugin to IntelliJ 2025.3#2
mdelambilly merged 33 commits into
mainfrom
migration/intellij-2025.3-neo4j-5.26

Conversation

@mdelambilly
Copy link
Copy Markdown
Owner

Summary

  • Upgrade to IntelliJ Platform 2025.3.3 (build 253)
  • Upgrade Neo4j Bolt driver to 5.28.10
  • Rename package from com.albertoventurini to com.github.mdelambilly
  • Fix theme/dark mode support in graph visualization
  • Fix memory leaks at IDE shutdown (ParametersPanel editors)
  • Add auto-uppercase of Cypher keywords as you type
  • Add Raw JSON output tab in the Graph Database Console
  • Add AuraDB credentials import in the data source dialog
  • Simplify test connection dialog (replaced custom popup with standard dialog)
  • Add GitHub Sponsors links (FUNDING.yml, README, plugin.xml)

Tested with Neo4j 5.x LTS, Neo4j 2026.x, AuraDB, Neo4j Sandbox and DozerDB.

Test plan

  • Plugin loads without errors in IntelliJ 2025.3 sandbox
  • Neo4j AuraDB connection tested successfully
  • Cypher auto-uppercase works on space/delimiter
  • Raw JSON tab displays query results
  • AuraDB credentials import fills the form correctly

🤖 Generated with Claude Code

mdelambilly and others added 30 commits March 15, 2026 23:48
  IntelliJ Platform Gradle Plugin 2.x no longer instruments GUI Designer
  .form files, leaving all bound fields null at runtime (guaranteed NPE).
  IntelliJ Platform Gradle Plugin 2.x no longer instruments GUI Designer
  .form files, leaving all bound fields null at runtime (guaranteed NPE).
  IntelliJ Platform Gradle Plugin 2.x no longer instruments GUI Designer
  .form files, leaving all bound fields null at runtime (guaranteed NPE).
  - Add rule: all project file content must be in English
  - Add behavioral rules (autonomy, no over-engineering, no hallucination, verbosity)
- Upgrade IntelliJ Platform Gradle Plugin 2.13.0 -> 2.13.1 (fixes
  StackOverflowError in CachingJarFileSystemProvider during Grammar-Kit
  classpath resolution)
- Add junit-platform-launcher and junit:junit:4.13.2 as testRuntimeOnly
  in all projects (required by IJPGP module test executor in Gradle 9)
- Add useJUnitPlatform() and JUnit 5 dependencies to language:cypher,
  platform, ui:visualization, and testing:manual build files
- Exclude testing:integration-neo4j from settings.gradle until removed
  APIs (doTest, MockCreateParameterInfoContext) are fixed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e ID

- Replace @Before/@After/@Ignore/@RunWith with JUnit 5 equivalents
  (@beforeeach, @AfterEach, @disabled, remove @RunWith) in all test files
- Replace org.junit.Assert.* with org.junit.jupiter.api.Assertions.*
- Remove extends LightJavaCodeInsightFixtureTestCase from ContextMenuTest
  and DataSourceMetadataUpdateServiceTest (IntelliJ test framework not
  available in platform.module submodules)
- Override getLanguage() in CypherCodeStyleSettingsProvider to fix
  SEVERE "Legacy configurable id calculation mode" at runtime

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove .form files for GraphConsoleView, DataSourcesView,
EditEntityDialog, and Neo4jBoltDataSourceDialog — UI is now built
programmatically, making the GUI Designer plugin dependency unnecessary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Re-enable testing:integration-neo4j in settings.gradle
- Add JUnit 5 + Vintage Engine runtime deps for JUnit 3-style IntelliJ tests
- Resolve testFramework.jar via intellijPlatform.platformPath (IJPGP module limitation)
- Fix Windows InvalidPathException: use new File(url.toURI()) instead of url.getFile()

All 260 integration tests pass (Testcontainers + Neo4j 5.26).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch Testcontainer image from 5.2/5.3 to neo4j:5.26-community
- Update version assertions (minor: 2 → 26)
- Remove nullable type suffix (STRING? → STRING, INTEGER? → INTEGER, etc.)
- Update list type notation (LIST OF ANY? → LIST<ANY>...)
- Update procedure hint format to match Neo4j 5.26 output
- Replace deprecated db.labels signature check with dbms.components name check
- Remove false-positive type error for RELATIONSHIP in size() (no longer flagged in 5.26)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…or IntelliJ 2025.3

- Replace StartupActivity with ProjectActivity in PluginUpdateActivity
- Fix Editor memory leaks in ParametersPanel by implementing Disposable
- Add bundledPlugin('org.intellij.intelliLang') to build.gradle
- Add setTargetComponent() on console toolbar (ActionToolbarImpl warning)
- Add displayName to applicationConfigurable in plugin.xml
- Remove optional="true" from com.intellij.modules.java dependency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Update build-plugin.yaml: Java 17 -> 21, update actions to latest versions, runPluginVerifier -> verifyPlugin
- Add publish-plugin.yaml: manual workflow_dispatch trigger to publish to JetBrains Marketplace

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Update README: fix links, contacts → Discussions, remove old ko-fi link
- Add bug report and feature request issue templates
- Remove FUNDING.yml (sponsorship setup deferred)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
   - Update CI badge URL to this repository
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace hardcoded colors with IntelliJ-aware APIs (JBColor, UIUtil,
UIManager) in IdeaLookAndFeelService, ColorProvider, SchemaProvider,
and GraphDisplay to properly support dark/light IDE themes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GraphConsoleView.dispose() now explicitly disposes ParametersPanel,
ensuring editors are released when the project closes and avoiding
ROOT_DISPOSABLE leaks at IDE shutdown.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Override charTyped() in CypherTypedHandlerDelegate: when a space or
delimiter is typed after a word, convert it to uppercase if it matches
a known Cypher keyword. Skips string literals.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a new Raw tab displaying the full JSON structure of query results
(nodes with labels/properties, relationships with type/properties, or
tabular rows). Includes a clickable link in the Log tab to navigate to
it, consistent with existing Graph and Table links.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add [1.0.0] changelog entry summarizing the IntelliJ 2025.3 + Neo4j
5.26 LTS migration features. Fix repositoryUrl in build.gradle to
point to the mdelambilly fork instead of albertoventurini.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rename all Java packages from com.albertoventurini.graphdbplugin to
com.github.mdelambilly.graphdbplugin.

Fix plugin.xml class references corrupted by IntelliJ rename refactoring:
IntelliJ reversed sub-package segments when updating plugin.xml extension
points (e.g. editor.cypher.language.com.github.mdelambilly... instead of
com.github.mdelambilly....language.cypher.editor). All references are now
corrected to match actual package structure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mdelambilly and others added 3 commits March 20, 2026 22:25
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mdelambilly mdelambilly merged commit 22b7208 into main Mar 20, 2026
1 check passed
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