Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
0b659c0
Migrate build to Gradle 9.4 + IntelliJ Platform Gradle Plugin 2.13.0
mdelambilly Mar 15, 2026
d972553
Fix deprecated and removed IntelliJ Platform APIs for 2025.3
mdelambilly Mar 16, 2026
5752f5e
Fix deprecated and removed IntelliJ Platform APIs for 2025.3
mdelambilly Mar 16, 2026
ae37bd7
Fix deprecated and removed IntelliJ Platform APIs for 2025.3
mdelambilly Mar 16, 2026
0b26e20
Replace GUI Designer .form injection with programmatic UI setup
mdelambilly Mar 16, 2026
76f56cb
Replace GUI Designer .form injection with programmatic UI setup
mdelambilly Mar 16, 2026
00004f5
Replace GUI Designer .form injection with programmatic UI setup
mdelambilly Mar 16, 2026
a33b5bc
docs: update CLAUDE.md to single authoritative English version
mdelambilly Mar 16, 2026
ba87964
docs: clarify action vs explanation and clarifying-question rules
mdelambilly Mar 16, 2026
6949201
build: upgrade IJPGP to 2.13.1 and configure JUnit 5 for all modules
mdelambilly Mar 16, 2026
546f406
fix: migrate tests from JUnit 4 to JUnit 5 and fix legacy configurabl…
mdelambilly Mar 16, 2026
dfdf86b
refactor: replace GUI Designer .form files with programmatic UI setup
mdelambilly Mar 16, 2026
d065d21
fix: re-enable testing:integration-neo4j and fix test infrastructure
mdelambilly Mar 16, 2026
6864229
fix: update integration tests for Neo4j 5.26 compatibility
mdelambilly Mar 16, 2026
addf7ee
chore: ignore documents/ directory
mdelambilly Mar 16, 2026
c350e05
fix: rename neo4j52() to neo4j526() for consistency with VERSION_5_26
mdelambilly Mar 17, 2026
396c49f
fix: fix memory leaks, deprecated APIs and plugin.xml compatibility f…
mdelambilly Mar 17, 2026
8d002b1
chore: update CI workflow and add publish workflow
mdelambilly Mar 17, 2026
8979fae
chore: update README, add issue templates, remove FUNDING.yml
mdelambilly Mar 17, 2026
65062b2
docs: update README for IntelliJ 2025.3 and Neo4j 5.26 LTS
mdelambilly Mar 18, 2026
3c945eb
chore: add workflow_dispatch to build-plugin.yaml
mdelambilly Mar 18, 2026
f52cc1b
ci: skip integration tests in CI (require Docker/Testcontainers)
mdelambilly Mar 18, 2026
3f18e06
chore: update plugin.xml vendor and description
mdelambilly Mar 18, 2026
ea7c1c4
fix: use theme-aware colors throughout graph visualization
mdelambilly Mar 18, 2026
8a6ba3d
fix: dispose ParametersPanel editors via GraphConsoleView lifecycle
mdelambilly Mar 18, 2026
cca82ff
feat: auto-uppercase Cypher keywords as you type
mdelambilly Mar 18, 2026
d5690ae
feat: add Raw JSON output tab to Graph Database Console
mdelambilly Mar 19, 2026
2688dd9
chore: update changelog for v1.0.0 and fix repositoryUrl
mdelambilly Mar 19, 2026
109a3d4
refactor: rename package to com.github.mdelambilly with fixed plugin.xml
mdelambilly Mar 19, 2026
0e66657
chore: add GitHub Sponsors links to FUNDING.yml, README and plugin.xml
mdelambilly Mar 20, 2026
1158206
feat: add AuraDB credentials import and improve connection dialog UX
mdelambilly Mar 20, 2026
bc7c85a
chore: upgrade Neo4j driver to 5.28.10
mdelambilly Mar 20, 2026
f57259a
fix: simplify test connection dialog and update supported databases
mdelambilly Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
39 changes: 39 additions & 0 deletions .claude/commands/check-neo4j.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
Vérifie la compatibilité du code avec le driver Neo4j Java 5.26.2.

## 1. Analyse du code database

Cherche tous les usages du driver Neo4j :
```powershell
Get-ChildItem -Recurse -Path database\src -Filter "*.java" | Select-String -Pattern "org.neo4j"
```

Vérifie ces patterns courants qui ont changé entre le driver 4.x et 5.x :
- `session.writeTransaction(tx -> ...)` → doit être `session.executeWrite(tx -> ...)`
- `session.readTransaction(tx -> ...)` → doit être `session.executeRead(tx -> ...)`
- `session.beginTransaction()` → toujours valide mais vérifie le pattern
- `Config.builder()` → vérifie les méthodes appelées sur le builder
- `AuthTokens.basic()` → toujours valide
- `Result.list()` / `Result.stream()` → toujours valide
- `Values.parameters()` → toujours valide

## 2. Analyse des tests

Cherche dans les tests :
```powershell
Get-ChildItem -Recurse -Path testing\src -Filter "*.java" | Select-String -Pattern "org.neo4j|Neo4jContainer|neo4j:"
Get-ChildItem -Recurse -Path database\src\test -Filter "*.java" | Select-String -Pattern "org.neo4j|Neo4jContainer|neo4j:"
```

Vérifie :
- L'image Docker Testcontainer doit être `neo4j:5.26-community` (ou `neo4j:5.26`)
- Les configurations du container (ports, authentification)
- Les assertions qui dépendent du format de réponse Neo4j

## 3. Propose les corrections

Pour chaque changement nécessaire :
- Montre le fichier, la ligne, le code avant/après
- Explique pourquoi le changement est nécessaire
- Précise les imports à modifier

Note : on est sous Windows avec PowerShell 7.x.
30 changes: 30 additions & 0 deletions .claude/commands/check-plugin-xml.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Analyse le fichier plugin.xml du projet.

Lis le fichier :
```bash
cat graph-database-plugin/src/main/resources/META-INF/plugin.xml
```

Vérifie point par point :

1. **`<depends>`** : Chaque dépendance référence-t-elle un module/plugin qui existe dans IntelliJ 2025.3 (build 253) ? Les plus courants :
- `com.intellij.modules.platform` → OK
- `com.intellij.modules.lang` → OK
- `com.intellij.java` → OK si le plugin dépend du support Java
- Signale tout module obsolète ou renommé

2. **`<extensions>`** : Chaque Extension Point (EP) déclaré est-il toujours valide dans 253 ?
Cherche dans le code source si les classes d'implémentation existent toujours.

3. **`<applicationService>` et `<projectService>`** : Les classes référencées existent-elles ?
```bash
# Pour chaque serviceImplementation="com.xxx.YYY", vérifie :
find . -name "YYY.java" -type f
```

4. **`<idea-version>`** : Est-ce cohérent avec gradle.properties (sinceBuild=253, untilBuild=253.*) ?
Note : le plugin Gradle 2.x patche automatiquement ces valeurs, donc si elles sont codées en dur dans le XML, signale-le.

5. **Notifications et toolwindows** : Vérifie les `<toolWindow>` et `<notificationGroup>` pour la compatibilité.

Liste les problèmes trouvés et propose les corrections exactes du XML.
22 changes: 22 additions & 0 deletions .claude/commands/diagnose-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Lance le build du plugin et analyse les erreurs.

Exécute :
```powershell
.\gradlew.bat :graph-database-plugin:buildPlugin 2>&1 | Select-Object -Last 100
```

Pour chaque erreur trouvée :
1. Identifie le fichier source et la ligne
2. Explique la cause (API supprimée, import manquant, signature changée...)
3. Propose la correction exacte avec l'import complet
4. N'applique PAS la correction — présente-la moi d'abord

Regroupe les erreurs par catégorie :
- Imports manquants ou cassés
- API dépréciées / supprimées
- Signatures de méthodes changées
- Problèmes de configuration Gradle

Traite les erreurs module par module dans cet ordre : database, language, platform, ui, graph-database-plugin.

Note : on est sous Windows avec PowerShell 7.x. Utilise `.\gradlew.bat` (pas `./gradlew`).
20 changes: 20 additions & 0 deletions .claude/commands/fix-deprecated.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Cherche toutes les utilisations d'API IntelliJ dépréciées dans le projet.

1. Exécute le vérificateur de plugin :
```bash
./gradlew :graph-database-plugin:verifyPlugin 2>&1 | tail -200
```

2. Cherche aussi les usages manuels :
```bash
grep -rn "Deprecated" --include="*.java" -l
```

3. Pour chaque API dépréciée signalée :
- Identifie le remplacement dans le SDK IntelliJ 2025.3
- Montre le code avant/après avec le contexte (5 lignes autour)
- Précise le package/import complet de la nouvelle API

Limite-toi à **5 corrections à la fois** pour que je puisse vérifier avant de continuer.

Après mes validations, je te dirai "continue" pour les 5 suivantes.
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ko-fi: albertoventurini
github: mdelambilly
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Bug report
about: Something is not working as expected
labels: bug
---

## Description

<!-- A clear and concise description of the bug. -->

## Steps to reproduce

1.
2.
3.

## Expected behavior

<!-- What did you expect to happen? -->

## Actual behavior

<!-- What actually happened? -->

## Environment

- Plugin version:
- IntelliJ version (e.g. IntelliJ IDEA 2025.3.3):
- Neo4j version (e.g. 5.26):
- OS:

## Logs

<!-- If applicable, paste relevant error messages from Help → Show Log in IDE. -->
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea or improvement
labels: enhancement
---

## Summary

<!-- A clear and concise description of the feature you'd like. -->

## Motivation

<!-- Why would this be useful? What problem does it solve? -->

## Proposed solution

<!-- If you have an idea of how it could work, describe it here. -->
17 changes: 10 additions & 7 deletions .github/workflows/build-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ name: Build and test

# See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
on:
workflow_dispatch:
pull_request:
branches:
- 'main'
Expand All @@ -13,20 +14,22 @@ jobs:
gradle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
java-version: 21

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/actions/setup-gradle@v4

- name: Execute Gradle build
run: ./gradlew build
# Exclude integration tests: they require a running Docker/Neo4j container (Testcontainers)
run: ./gradlew build -x :testing:integration-neo4j:test

- name: Run tests
run: ./gradlew test
# Exclude integration tests: they require a running Docker/Neo4j container (Testcontainers)
run: ./gradlew test -x :testing:integration-neo4j:test

- name: Run Plugin Verifier
run: ./gradlew :graph-database-plugin:runPluginVerifier
run: ./gradlew :graph-database-plugin:verifyPlugin
26 changes: 26 additions & 0 deletions .github/workflows/publish-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Publish plugin

on:
workflow_dispatch:

jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Verify plugin
run: ./gradlew :graph-database-plugin:verifyPlugin

- name: Publish plugin
env:
INTELLIJ_TOKEN: ${{ secrets.INTELLIJ_TOKEN }}
run: ./gradlew :graph-database-plugin:publishPlugin
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,13 @@ idea-flex.skeleton

gen/

# IntelliJ Platform Gradle Plugin local cache
.intellijPlatform/

# Claude Code local data (personal memory, local settings)
.claude/*
!.claude/commands/

# Local documentation (not versioned)
documents/

8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0]

### Added
- Support for IntelliJ 2025.3 and Neo4j 5.26 LTS (fork by Michel de Lambilly)
- Auto-uppercase Cypher keywords as you type
- Raw JSON output tab in the Graph Database Console
- Theme-aware graph visualization (dark/light mode support)

## [0.8.0]

### Added
Expand Down
123 changes: 123 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# CLAUDE.md — graphdb-intellij-plugin

## Project
IntelliJ IDEA plugin for graph databases (Neo4j).
Provides: Cypher syntax highlighting, auto-completion, database connection and querying.

## Migration goal
Migrate the plugin from IntelliJ 2023.3 to **IntelliJ 2025.3.3** (build 253.31033.145)
and ensure compatibility with **Neo4j 5.26 LTS**.

## Environment
- OS: **Windows** with **PowerShell 7.x**
- Gradle Wrapper: use `.\gradlew.bat` (not `./gradlew`)

## Tech stack
- Language: Java 21
- Build: Gradle 9.4.0 with IntelliJ Platform Gradle Plugin **2.13.1**
- Gradle Plugin ID: `org.jetbrains.intellij.platform` (NOT `org.jetbrains.intellij`)
- IntelliJ submodules: use `org.jetbrains.intellij.platform.module`
- Neo4j Driver: `org.neo4j.driver:neo4j-java-driver:5.26.10`
- Tests: JUnit 5, Testcontainers (image `neo4j:5.26-community`)

## Module structure

```
database\ → Neo4j access (driver), NO IntelliJ dependency
language\ → Cypher parser, PSI, syntax highlighting (depends on IntelliJ API)
platform\ → Shared services, settings (depends on IntelliJ API)
ui\ → ToolWindow, graph/table views (depends on IntelliJ API)
testing\ → Test utilities, Testcontainers
graph-database-plugin\ → Main plugin module, assembles everything, produces the final ZIP
```

## Conventions
- **All content in project files (source code, build files, config files, comments, commit messages) MUST be written in English. No exceptions.**
- NEVER suggest reverting to Gradle IntelliJ Plugin 1.x
- Use Groovy DSL (not Kotlin DSL) for build.gradle files
- Centralized properties live in `gradle.properties`
- One fix at a time, clearly explained
- When fixing a deprecated API, always cite the replacement API with its full import
- Do not modify the plugin's business logic unless explicitly asked
- Shell commands must be compatible with **PowerShell 7.x on Windows**
- **NEVER commit without an explicit test approval from the user.** For any feature or fix involving UI, editor behavior, or runtime plugin loading: propose launching `runIde`, wait for the user to confirm the behavior works, then commit.

## Project properties (gradle.properties)
- `platformType = IC`
- `platformVersion = 2025.3.3`
- `sinceBuild = 253`
- `untilBuild = 253.*`
- `javaVersion = 21`
- `neo4jDriverVersion = 5.26.10`

## Useful commands

```powershell
.\gradlew.bat :graph-database-plugin:buildPlugin # Build the plugin
.\gradlew.bat test # Run tests
.\gradlew.bat :graph-database-plugin:verifyPlugin # Verify compatibility
.\gradlew.bat :graph-database-plugin:runIde # Launch IntelliJ sandbox
```

## IntelliJ Platform context
- since-build = 253
- until-build = 253.*
- IntelliJ Platform imports come from the SDK, not Maven Central
- `testFramework()` is only available in `org.jetbrains.intellij.platform` (main plugin module), NOT in `org.jetbrains.intellij.platform.module` submodules
- JUnit 5 runtime in submodules requires adding `junit:junit:4.13.2` as `testRuntimeOnly` (used internally by the IJPGP test executor — our tests remain JUnit 5)
- `junit-platform-launcher` must be declared explicitly as `testRuntimeOnly` in Gradle 9
- The `database` module is a plain Java module — it does NOT use the IntelliJ plugin
- The `language`, `platform`, `ui` modules use `org.jetbrains.intellij.platform.module`
- The `graph-database-plugin` module uses `org.jetbrains.intellij.platform` (the main plugin)

## Expected behavior

### Long context management
Your context window will be automatically compacted as it approaches its
limit, allowing you to continue working indefinitely from where you left off.
Therefore, do not stop tasks early due to token budget concerns. As you
approach your token budget limit, save your current progress and state to a
progress.md file before the context window refreshes. Always be as persistent
and autonomous as possible and complete tasks fully, even if the end of your
budget approaches. Never artificially stop a task early regardless of
remaining context.

### Default to action
Before making any code change, briefly explain what you intend to do and why,
then proceed without waiting for confirmation — unless the change is risky or
irreversible (see Autonomy and safety below).

If the user's intent is unclear, ask a focused clarifying question rather than
guessing or inferring. Do not ask multiple questions at once — identify the
single most important unknown and ask only that.

### Autonomy and safety
Consider the reversibility and potential impact of your actions. You are
encouraged to take local and reversible actions like editing files or running
tests, but for actions that are hard to reverse, affect shared systems, or
could be destructive, ask the user before proceeding.

Examples of actions that require confirmation:
- Deleting files or branches
- git push --force, git reset --hard
- Modifying published commits

### No over-engineering
Avoid over-engineering. Only make changes that are directly requested or
clearly necessary. Keep solutions simple and focused. A bug fix does not need
cleanup of surrounding code. Do not refactor code, add features, or add
documentation beyond what is asked.

### No hallucination
Never speculate about code you haven't opened. If the user references a
specific file, you MUST read the file before responding. Never make claims
about code before investigating.

### Verbosity
After completing a task involving tool use, provide a brief summary of the
work done. No long summaries — just what changed and why.

### Parallel tool calls
If you intend to call multiple tools and there are no dependencies between
the calls, make all independent calls in parallel. For example, when reading
3 files, read them all at the same time.
Loading
Loading