feat: add best-effort compatibility builds for older IDEA versions - #1438
Conversation
Only the default build (IDEA 2025.2+) is published to the JetBrains Marketplace; users on older IDEA versions had no way to install the plugin at all. Parameterize the IDEA compatibility range so additional best-effort packages can be produced: - plugin version now embeds the range as <base>.<since>.<until|0>, sourced from gradle.properties (pluginBaseVersion, pluginSinceBuild) and overridable per invocation with -PpluginSinceBuild / -PpluginUntilBuild; "0" means unbounded - script/package.sh accepts a range argument (e.g. 221-251, '221-*'); script/release.sh bumps pluginBaseVersion in gradle.properties - release and PR workflows build a best-effort package covering IDEA 2022.1-2025.1; its failure warns but never blocks the default artifact - release notes generate a per-zip Downloads table listing the exact IDE range and support level of each package - README/README_CN document the support matrix and how to build a custom range Also replace the markdown issue templates with structured GitHub Issue Forms (capturing IDE version, framework, rule setup, and diagnostic logs up front) and extend the PR template with architecture, threading, and logging checklists mirroring AGENTS.md. Compatibility outside the default range remains best-effort: packages are compiled against the newest platform and are not verified on older IDEs. Refs: #1434
|
📦 Plugin has been packaged for this PR. You can download |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1438 +/- ##
=========================================
Coverage 66.805% 66.805%
=========================================
Files 468 468
Lines 27146 27146
Branches 6520 6520
=========================================
Hits 18135 18135
Misses 6544 6544
Partials 2467 2467
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
The PR-package workflow put every built zip into a single artifact named after the default package, and uploaded the raw zip files — so GitHub wrapped them in another zip on download. Reporters had to unzip twice, and the compatibility package had no artifact of its own to pick from the Artifacts dropdown. Root cause: one upload step with a glob path and a fixed artifact name; the extract-before-upload step that produced directly installable artifacts was dropped when the multi-range build was introduced. Solution: stage each distribution by extracting it to its own directory and upload one artifact per package, named after the plugin zip (easy-yapi-<base>.<since>.<until|0>). Each downloaded artifact is a valid plugin zip — installable directly via "Install Plugin from Disk", no extraction needed. PR and issue comments now list every artifact with its IDEA range and mark the compatibility package best-effort. Impact: release workflow unchanged — release assets are uploaded as-is and never double-zipped. Refs: #1434
|
📦 Plugin has been packaged for this PR. You can download it from the GitHub Actions workflow run by clicking on the "Artifacts" dropdown:
Each artifact is a ready-to-install plugin zip — pick the one matching your IDEA version and install it via Settings → Plugins → ⚙ → Install Plugin from Disk. No extraction needed. |
PRs are squash-merged, so the PR title becomes the merge-commit subject, and script/release.sh groups changelog entries by the feat/fix/refactor prefix. Until now the format was only an implicit convention in git history: nothing in AGENTS.md, the PR template, or the AI PR-creation flow stated it, so an AI-authored PR title (#1438) came out unprefixed and would have landed ungrouped in the changelog. Codifying the rule in AGENTS.md makes it part of the workspace rules injected into every AI session, closing the instruction-path gap between commit messages (covered by the git-commit skill) and PR titles (previously uncovered).
|
📦 Plugin has been packaged for this PR. You can download it from the GitHub Actions workflow run by clicking on the "Artifacts" dropdown:
Each artifact is a ready-to-install plugin zip — pick the one matching your IDEA version and install it via Settings → Plugins → ⚙ → Install Plugin from Disk. No extraction needed. |
Description
Only the default build (IDEA 2025.2+) ships to the JetBrains Marketplace, so users on older IDEA versions currently have no way to install the plugin at all. This PR parameterizes the IDEA compatibility range and produces an additional best-effort package covering IDEA 2022.1–2025.1 in every release and PR artifact.
Type of Change
Related Issues
Refs #1434 — the reporter is on IDEA 2023.3.8, below the current supported minimum (2025.2), and upgrading is inconvenient for them.
@soldierjw — once the package workflow on this PR finishes, the Artifacts dropdown will list two ready-to-install zips:
easy-yapi-3.2.3.252.0.zip— IDEA 2025.2+easy-yapi-3.2.3.221.251.zip— IDEA 2022.1–2025.1 (best-effort)Download the one matching your IDEA version and install it via Settings → Plugins → ⚙ → Install Plugin from Disk — no extraction needed. Please give it a try on your project. (Referenced as
Refs, notFixes— this PR does not change the IPage export behaviour discussed there.)Affected Area
Changes Made
<base>.<since>.<until|0>, sourced fromgradle.properties(pluginBaseVersion,pluginSinceBuild), overridable per invocation with-PpluginSinceBuild/-PpluginUntilBuild(0= unbounded)script/package.shaccepts a range argument (e.g.221-251,'221-*');script/release.shbumpspluginBaseVersioningradle.propertiesfile:///Users/tangcent/...links with repo-relative links, document the Issue/PR conventionsHow I Tested
./gradlew testpasses./gradlew runIde) — describe the entry action exercisedNo production Kotlin code changed — this PR only touches build config, scripts, CI workflows, and docs. A local
./gradlew testrun configured the build correctly andpatchPluginXmlproduced the expected version3.2.3.252.0with since-build252; the local test-JVM execution was cut short by a Windows page-file exhaustion error (nativeos::commit_memoryfailure on the dev machine, unrelated to these changes — every test that executed passed). The CI matrix on this PR runs the full./gradlew test+buildPlugin.Architecture & Threading Checklist
launch(Dispatchers.Default)— N/A, no Kotlin code touchedLogging Checklist
LOG.error,LOG.debug,LOG.trace,println, orprintStackTrace()— N/A, no Kotlin code touchedGeneral Checklist
Screenshots (if applicable)
N/A
Additional Notes
COMPAT_SINCE/COMPAT_UNTILinrelease.yml/pr-package.yml.