From 2ad069a5dd823506f7f2cbc1bdda2e4a920012ef Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 08:40:20 +0000 Subject: [PATCH 01/12] Initial plan From 15c233d2135ac46b9c3f0c8fa261466001478e47 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 08:45:37 +0000 Subject: [PATCH 02/12] Fix plugin descriptor and update CI to generate artifacts - Remove missing icon reference from plugin.xml to fix descriptor loading - Update kotlin-ci.yml to run buildPlugin and upload the artifact - Artifact only generated when ide-plugins/** files are changed Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 32 +++++-------------- .../src/main/resources/META-INF/plugin.xml | 1 - 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index 4ee9180..de9573e 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -58,40 +58,24 @@ jobs: run: ./gradlew --no-daemon --version working-directory: ide-plugins - - name: Full build with stacktrace (capture to file) + - name: Build plugin env: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx3g" run: | set -o pipefail - ./gradlew build --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log || true + ./gradlew buildPlugin --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log working-directory: ide-plugins + - name: Upload build log uses: actions/upload-artifact@v4 with: name: gradle-build-log-java-17 path: gradle-build.log + if: always() - - name: Build Kotlin plugin subproject if present - run: | - set -o pipefail - if ./gradlew :kotlin:tasks --dry-run &>/dev/null; then - echo "Detected :kotlin subproject -> building it" - ./gradlew :kotlin:build --no-daemon --stacktrace 2>&1 | tee ../kotlin-subproject-build.log || true - echo "Uploading kotlin-subproject-build.log" - ls -la ../kotlin-subproject-build.log || true - elif ./gradlew :plugin:kotlin:tasks --dry-run &>/dev/null; then - echo "Detected :plugin:kotlin subproject -> building it" - ./gradlew :plugin:kotlin:build --no-daemon --stacktrace 2>&1 | tee ../kotlin-subproject-build.log || true - else - echo "No explicit kotlin plugin subproject found; running assemble on all projects" - ./gradlew assemble --no-daemon --stacktrace 2>&1 | tee ../assemble.log || true - fi - working-directory: ide-plugins - - name: Upload kotlin-subproject/build logs if present + - name: Upload plugin artifact uses: actions/upload-artifact@v4 with: - name: kotlin-subproject-logs-java-17 - path: | - kotlin-subproject-build.log - assemble.log - if: always() + name: intellij-plugin-pr-${{ github.event.pull_request.number || github.run_number }} + path: ide-plugins/build/distributions/*.zip + if: success() diff --git a/ide-plugins/src/main/resources/META-INF/plugin.xml b/ide-plugins/src/main/resources/META-INF/plugin.xml index 50ff761..8b8c9d6 100644 --- a/ide-plugins/src/main/resources/META-INF/plugin.xml +++ b/ide-plugins/src/main/resources/META-INF/plugin.xml @@ -13,7 +13,6 @@ Date: Thu, 13 Nov 2025 09:25:52 +0000 Subject: [PATCH 03/12] Add missing icon and improve plugin verification - Add picocode.png icon file to resources/icons/ - Restore icon reference in plugin.xml - Add verifyPlugin task to CI to validate plugin structure - Build logs already uploaded with if: always() condition Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 2 +- .../src/main/resources/META-INF/plugin.xml | 1 + ide-plugins/src/main/resources/icons/picocode.png | Bin 0 -> 256 bytes 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 ide-plugins/src/main/resources/icons/picocode.png diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index de9573e..d7c531e 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -63,7 +63,7 @@ jobs: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx3g" run: | set -o pipefail - ./gradlew buildPlugin --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log + ./gradlew buildPlugin verifyPlugin --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log working-directory: ide-plugins - name: Upload build log diff --git a/ide-plugins/src/main/resources/META-INF/plugin.xml b/ide-plugins/src/main/resources/META-INF/plugin.xml index 8b8c9d6..50ff761 100644 --- a/ide-plugins/src/main/resources/META-INF/plugin.xml +++ b/ide-plugins/src/main/resources/META-INF/plugin.xml @@ -13,6 +13,7 @@ rMq>1fP!Krt`Q~9MX8A;nfZANA(^?U3H(??_jGX#(U_Q=;=uI3kn`VvexYO)m7^V3 zRovKsASJZGj+vSHaD9rn!66n25SUowHY3YzhJ-RmoSluWjXz?|flL`@ Date: Thu, 13 Nov 2025 09:35:24 +0000 Subject: [PATCH 04/12] Replace IDE version constraints with plugin version in patchPluginXml - Remove sinceBuild and untilBuild constraints - Add version.set(project.version.toString()) to patch plugin version - This allows the plugin to work with wider range of IDE versions Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- ide-plugins/build.gradle.kts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ide-plugins/build.gradle.kts b/ide-plugins/build.gradle.kts index 1fe6d16..dae3719 100644 --- a/ide-plugins/build.gradle.kts +++ b/ide-plugins/build.gradle.kts @@ -37,7 +37,6 @@ tasks { } patchPluginXml { - sinceBuild.set("231") - untilBuild.set("241.*") + version.set(project.version.toString()) } } From 18ddddcb9069fc91785860c60b2fb14144cd32ad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:22:59 +0000 Subject: [PATCH 05/12] Fix build error by adding version directly to plugin.xml - Remove patchPluginXml task that was causing compilation error - Add version element directly in plugin.xml (set to 0.0.1) - This resolves the "Unresolved reference 'set'" build error Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- ide-plugins/build.gradle.kts | 4 ---- ide-plugins/src/main/resources/META-INF/plugin.xml | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/ide-plugins/build.gradle.kts b/ide-plugins/build.gradle.kts index dae3719..8114625 100644 --- a/ide-plugins/build.gradle.kts +++ b/ide-plugins/build.gradle.kts @@ -35,8 +35,4 @@ tasks { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } - - patchPluginXml { - version.set(project.version.toString()) - } } diff --git a/ide-plugins/src/main/resources/META-INF/plugin.xml b/ide-plugins/src/main/resources/META-INF/plugin.xml index 50ff761..47824a1 100644 --- a/ide-plugins/src/main/resources/META-INF/plugin.xml +++ b/ide-plugins/src/main/resources/META-INF/plugin.xml @@ -1,6 +1,7 @@ com.picocode.rag-assistant PicoCode RAG Assistant + 0.0.1 PicoCode Date: Thu, 13 Nov 2025 10:45:57 +0000 Subject: [PATCH 06/12] Replace icon with valid white placeholder image - Create proper 13x13 white PNG image as placeholder - Previous icon was not valid, replaced with simple white RGB PNG Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .../src/main/resources/icons/picocode.png | Bin 256 -> 75 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ide-plugins/src/main/resources/icons/picocode.png b/ide-plugins/src/main/resources/icons/picocode.png index abdb8598a26866b365794d9fd9e073a2ad2612bd..59267b9b3aacd5f0af05e5dbca7b35b063b18b6c 100644 GIT binary patch delta 56 zcmZo*@}3}R#KgeB@VB#A8%POxx;TbZ+)Do8FOwhBhlnx-Dv%n*=n1O*?2!t6g-L3lr6cj6Q zjVN(0N=+=u%+FH@$;?eEus3vqsO SF*yaagu&C*&t;ucLK6T?t450e From a95ebfeae33ac57699eff4008595a7f12867c935 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 11:28:37 +0000 Subject: [PATCH 07/12] Remove verifyPlugin task from CI workflow - verifyPlugin requires IDE versions configuration that's not set up - buildPlugin is sufficient for creating the plugin artifact - This fixes the "No IDEs Found" build failure Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index d7c531e..de9573e 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -63,7 +63,7 @@ jobs: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx3g" run: | set -o pipefail - ./gradlew buildPlugin verifyPlugin --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log + ./gradlew buildPlugin --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log working-directory: ide-plugins - name: Upload build log From db7f993b453e21ed68a39b3a44a5ba48fed2af23 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 13:47:59 +0000 Subject: [PATCH 08/12] Add instrumentationTools to fix plugin structure - Add instrumentationTools() dependency for proper plugin packaging - This fixes the PyCharm plugin loading error where plugin.xml was not found in the correct location - Ensures IntelliJ Platform Gradle Plugin v2.x generates correct plugin structure Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- ide-plugins/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/ide-plugins/build.gradle.kts b/ide-plugins/build.gradle.kts index 8114625..4673a00 100644 --- a/ide-plugins/build.gradle.kts +++ b/ide-plugins/build.gradle.kts @@ -21,6 +21,7 @@ dependencies { intellijPlatform { intellijIdeaCommunity("2023.1") bundledPlugin("com.intellij.java") + instrumentationTools() } } From 4c487e529b1c3d5dde1c5c427d0136fdd9259211 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 15:03:09 +0000 Subject: [PATCH 09/12] Trigger CI to generate new plugin artifact - Add comment to build.gradle.kts to trigger CI workflow - This ensures a new artifact is generated with the instrumentationTools fix Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- ide-plugins/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/ide-plugins/build.gradle.kts b/ide-plugins/build.gradle.kts index 4673a00..4b89c5d 100644 --- a/ide-plugins/build.gradle.kts +++ b/ide-plugins/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("org.jetbrains.intellij.platform") version "2.10.4" } +// Build configuration for PicoCode IntelliJ Plugin group = "com.picocode" version = project.findProperty("version") as String? ?: "0.0.1" From 81d64f568ce3106cd78efe369f7d64aae1276298 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 15:47:01 +0000 Subject: [PATCH 10/12] Fix double-zip artifact issue - Rename plugin ZIP to a consistent name before upload - This prevents GitHub Actions from creating a zip-within-zip - Users can now download and install the artifact directly Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index de9573e..c37ae22 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -73,9 +73,18 @@ jobs: path: gradle-build.log if: always() + - name: Rename plugin artifact + run: | + cd ide-plugins/build/distributions + PLUGIN_FILE=$(ls *.zip | head -n 1) + if [ -n "$PLUGIN_FILE" ]; then + cp "$PLUGIN_FILE" intellij-plugin.zip + fi + if: success() + - name: Upload plugin artifact uses: actions/upload-artifact@v4 with: name: intellij-plugin-pr-${{ github.event.pull_request.number || github.run_number }} - path: ide-plugins/build/distributions/*.zip + path: ide-plugins/build/distributions/intellij-plugin.zip if: success() From bf4255f9e5c855213ec78b05122b0fee01320a57 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 16:02:21 +0000 Subject: [PATCH 11/12] Fix CI error when plugin is already named correctly - Check if plugin file is already named intellij-plugin.zip before renaming - Use mv instead of cp to avoid duplicate files - Prevents "are the same file" error in CI Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index c37ae22..e5ea155 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -77,8 +77,8 @@ jobs: run: | cd ide-plugins/build/distributions PLUGIN_FILE=$(ls *.zip | head -n 1) - if [ -n "$PLUGIN_FILE" ]; then - cp "$PLUGIN_FILE" intellij-plugin.zip + if [ -n "$PLUGIN_FILE" ] && [ "$PLUGIN_FILE" != "intellij-plugin.zip" ]; then + mv "$PLUGIN_FILE" intellij-plugin.zip fi if: success() From b2ea0fb27656672d78ca47d8e6624f79b9d65b0d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 16:47:35 +0000 Subject: [PATCH 12/12] Extract plugin contents before artifact upload - Extract the plugin ZIP contents to a directory - Upload the directory instead of the ZIP file - GitHub Actions will create a single ZIP from the contents - This eliminates the double-zip issue completely Co-authored-by: Mte90 <403283+Mte90@users.noreply.github.com> --- .github/workflows/kotlin-ci.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/kotlin-ci.yml b/.github/workflows/kotlin-ci.yml index e5ea155..54ba426 100644 --- a/.github/workflows/kotlin-ci.yml +++ b/.github/workflows/kotlin-ci.yml @@ -73,12 +73,17 @@ jobs: path: gradle-build.log if: always() - - name: Rename plugin artifact + - name: Prepare plugin artifact for upload run: | cd ide-plugins/build/distributions PLUGIN_FILE=$(ls *.zip | head -n 1) - if [ -n "$PLUGIN_FILE" ] && [ "$PLUGIN_FILE" != "intellij-plugin.zip" ]; then - mv "$PLUGIN_FILE" intellij-plugin.zip + if [ -n "$PLUGIN_FILE" ]; then + # Create a temporary directory for extraction + mkdir -p plugin-extracted + # Extract the plugin zip + unzip -q "$PLUGIN_FILE" -d plugin-extracted/ + # Remove the original zip + rm "$PLUGIN_FILE" fi if: success() @@ -86,5 +91,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: intellij-plugin-pr-${{ github.event.pull_request.number || github.run_number }} - path: ide-plugins/build/distributions/intellij-plugin.zip + path: ide-plugins/build/distributions/plugin-extracted/ if: success()