Support JetBrains 2026.1 builds#199
Open
urbanfreestyler wants to merge 2 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the AMII JetBrains plugin/tooling to publish and verify against 2026.1 IDE builds (including Rider 261.*), while refactoring several runtime paths to avoid blocking work on the UI thread and adding regression coverage for the new behaviors.
Changes:
- Removes the
until-buildcap and adds CI enforcement to prevent reintroducing it; bumps toolchain and plugin versions to match 2026.1. - Refactors asset download/update, meme display, and project listener registration to be more EDT-safe and resilient (retries, bounded caches, duplicate-registration guards).
- Adds targeted regression tests for settings parsing/bitmask updates, asset scanning/download behavior, and project lifecycle tracking.
Reviewed changes
Copilot reviewed 34 out of 36 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/kotlin/io/unthrottled/amii/ProjectLifecycleRegistryTest.kt | Adds coverage for the new project open/close registry behavior. |
| src/test/kotlin/io/unthrottled/amii/config/ui/PluginSettingsUIRegressionTest.kt | Adds regression tests for exit-code parsing and bitmask updates. |
| src/test/kotlin/io/unthrottled/amii/assets/LocalVisualContentManagerRegressionTest.kt | Adds regression tests for custom-asset directory scanning behavior. |
| src/test/kotlin/io/unthrottled/amii/assets/ContentAssetManagerRegressionTest.kt | Adds regression test ensuring asset resolution doesn’t do network synchronously on EDT. |
| src/main/resources/messages/AMII.properties | Updates user-facing messages to instruct “Synchronize Assets” instead of restart. |
| src/main/resources/messages/AMII_zh.properties | Chinese translations aligned with the updated messaging. |
| src/main/kotlin/io/unthrottled/amii/tools/AssetTools.kt | Switches MD5 calculation to streaming to avoid loading whole files into memory. |
| src/main/kotlin/io/unthrottled/amii/services/WelcomeService.kt | Defers greeting until asset metadata readiness (with retry/backoff). |
| src/main/kotlin/io/unthrottled/amii/services/GifService.kt | Adds cache bounding and ensures ImageReader disposal. |
| src/main/kotlin/io/unthrottled/amii/promotion/PluginService.kt | Routes PluginId creation through a Java helper to avoid verifier/bytecode issues. |
| src/main/kotlin/io/unthrottled/amii/promotion/MemePromotionDialog.kt | Uses the PluginIds wrapper for plugin install/enable flow. |
| src/main/kotlin/io/unthrottled/amii/PluginMaster.kt | Adds project lifecycle registry and synchronizes listener registration; disposes on close safely. |
| src/main/kotlin/io/unthrottled/amii/onboarding/UserOnBoarding.kt | Uses PluginIds wrapper for plugin version lookup. |
| src/main/kotlin/io/unthrottled/amii/memes/MemeService.kt | Ensures meme display/clear always executes on the EDT. |
| src/main/kotlin/io/unthrottled/amii/memes/Meme.kt | Simplifies meme display scheduling and adds EDT guard in display path. |
| src/main/kotlin/io/unthrottled/amii/listeners/ProjectListener.kt | Migrates startup hook to ProjectActivity.execute only. |
| src/main/kotlin/io/unthrottled/amii/listeners/IDEPluginInstallListener.kt | Removes Kotlin listener implementation (replaced by Java). |
| src/main/kotlin/io/unthrottled/amii/integrations/RestClient.kt | Simplifies REST calls to avoid unnecessary pooled-thread hopping. |
| src/main/kotlin/io/unthrottled/amii/core/MIKU.kt | Adds delayed retry for message bus subscriptions with clearer logging. |
| src/main/kotlin/io/unthrottled/amii/assets/LocalVisualContentManager.kt | Introduces scanner wrapper that guarantees closing Files.walk streams. |
| src/main/kotlin/io/unthrottled/amii/assets/ContentAssetManager.kt | Changes download behavior to avoid synchronous network on EDT. |
| src/main/kotlin/io/unthrottled/amii/assets/AssetAPI.kt | Removes pooled-thread wrapper, delegating request execution to callers. |
| src/main/kotlin/io/unthrottled/amii/assets/APIAssetManager.kt | Makes API asset download/update non-blocking on EDT and refactors update flow. |
| src/main/java/io/unthrottled/amii/tools/PluginIds.java | New Java wrapper around PluginId.getId for verifier compatibility. |
| src/main/java/io/unthrottled/amii/listeners/IDEPluginInstallListener.java | Reintroduces dynamic plugin listener in Java for verifier compatibility. |
| src/main/java/io/unthrottled/amii/config/ui/PluginSettingsUI.java | Refactors exit-code parsing, bitmask updates, and settings UI disposal; removes settings “meme” HTML. |
| src/main/java/io/unthrottled/amii/config/ui/CustomMemeList.java | Replaces “one panel per asset” UI with async-scanned list + editor split-pane. |
| src/main/java/io/unthrottled/amii/config/ui/CustomMemeList.form | Adjusts layout constraints to allow the new browser to fill available space. |
| gradle/wrapper/gradle-wrapper.properties | Updates Gradle wrapper to 9.0.0. |
| gradle/libs.versions.toml | Updates IntelliJ Platform Gradle plugin + Kotlin versions. |
| gradle.properties | Bumps plugin version, targets 2026.1, and removes until-build property. |
| docs/RELEASE-NOTES.md | Updates release notes content for the new behavior/tooling. |
| CHANGELOG.md | Adds an Unreleased section documenting the 2026.1-related changes. |
| build.gradle.kts | Makes untilBuild optional and updates plugin verification IDE matrix. |
| .gitignore | Ignores additional Gradle/Kotlin cache directories. |
| .github/workflows/build.yml | Adds CI guard to fail if until-build is reintroduced into generated plugin.xml. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+102
to
+111
| if (isDispatchThread()) { | ||
| executeInBackground { | ||
| download() | ||
| } | ||
| ).get() | ||
| return if (Files.exists(localAssetPath)) { | ||
| localAssetPath.toUri().toOptional() | ||
| } else { | ||
| Optional.empty() | ||
| } | ||
| } |
Comment on lines
+140
to
+147
| ApplicationManager.getApplication().executeOnPooledThread { | ||
| download() | ||
| } | ||
| return if (Files.exists(localAssetPath)) { | ||
| localAssetPath.toUri().toOptional() | ||
| } else { | ||
| Optional.empty() | ||
| } |
Comment on lines
+165
to
+166
| assetConverter(Files.newInputStream(localAssetPath)) | ||
| .map { existingAssets -> newAssets to existingAssets } |
Comment on lines
+10
to
+12
| Build Support | ||
|
|
||
| - 2025.2 Build Support |
| localAssetPath.toUri() | ||
| if (ApplicationManager.getApplication().isDispatchThread) { | ||
| ApplicationManager.getApplication().executeOnPooledThread { | ||
| update() |
Comment on lines
+17
to
+21
| if (Files.exists(testDirectory)) { | ||
| Files.walk(testDirectory) | ||
| .sorted(Comparator.reverseOrder()) | ||
| .forEach { Files.deleteIfExists(it) } | ||
| } |
Comment on lines
+47
to
+51
| if (Files.exists(testDirectory)) { | ||
| Files.walk(testDirectory) | ||
| .sorted(Comparator.reverseOrder()) | ||
| .forEach { Files.deleteIfExists(it) } | ||
| } |
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.
Updates Anime Memes for current JetBrains IDE builds, including Rider 261.*.
Changes:
Verification:
./gradlew.bat --no-daemon --console=plain check./gradlew.bat --no-daemon --console=plain verifyPlugin./gradlew.bat --no-daemon --console=plain buildPluginBuilt plugin XML now contains:
<idea-version since-build="251" />