Repository navigation
chore: Java 插件改为普通插件身份,去掉发布者签名 - #3
Merged
Merged
Conversation
Lithe 不再区分官方插件和普通插件。Java 插件和 Cargo、Maven、Gradle 一样 使用 io.github.lithe-idea.* 身份,不带发布者签名,由 Lithe Store 自动收录。 - 插件 ID 从 dev.lithe.plugin.java-support 改为 io.github.lithe-idea.java-support, 包目录随之改名;vendor 改为 Lithe Community(signatureRequirement: none), 删除 bundledSignatureRequirement 和 requires.packageTrust - 删除签名链路:scripts/host-tools.sh、host-tools.lock.json、构建和归档里的 签名器与官方校验器调用;CI 和发布不再需要 Xcode 和签名密钥 - build-package.sh 只接受 --arch,组装后直接校验;archive-package.sh 输出 dist/Lithe-Java-Support-<版本>-darwin-<arm64|x64>.zip 和 .sha256,解包后再校验 - verify-package.sh 要求 vendor.signatureRequirement 为 none、包内没有签名文件, 保留 JDK 上游 Apple 代码签名检查 - CI 的打包任务在 Draft PR 上跳过;发布仍为预发布,发布说明改为中文 - 测试里的插件 ID 改为 io.github.lithe-idea.*;repository_pins 断言新身份 - README、MIGRATION、NOTICE 同步新身份、收录方式和转正式发布前的两条宿主限制
xiaoyumuxi
marked this pull request as ready for review
November 5, 2026 05:40
This was referenced Nov 5, 2026
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.
背景
Lithe 不再区分官方插件和普通插件,所有插件都按普通插件处理,不带发布者签名。区别只在 Lithe Store 怎样收录:
lithe-plugin-*仓库的稳定版 GitHub Release 由商店机器人自动跟踪并上架;本 PR 把 Java 插件改成和 Cargo、Maven、Gradle 一样的普通插件。
改动
身份
dev.lithe.plugin.java-support改为io.github.lithe-idea.java-support;包目录dev.lithe.plugin.java-support/改名为io.github.lithe-idea.java-support/(图标和模板只是换目录,内容不变)。plugin.json的vendor改为{"id": "io.github.lithe-idea", "displayName": "Lithe Community", "signatureRequirement": "none"};删除bundledSignatureRequirement和requires.packageTrust(packageTrust只为内置包签名要求服务,留着会被宿主的 capability 检查当成多余声明拒绝)。requires不变;backend仍不声明。去掉签名链路
scripts/host-tools.sh和host-tools.lock.json(原来用于从主仓库构建签名器LithePluginPackageSigner和官方校验器LitheOfficialPluginVerifier)。脚本
scripts/build-package.sh:只接受--arch arm64|x86_64,组装后直接调用verify-package.sh,打印包目录。scripts/archive-package.sh:参数--package <目录> --arch <arch>,用ditto --keepParent写出dist/Lithe-Java-Support-<版本>-darwin-<arm64|x64>.zip和只含哈希的.sha256;解包到.artifacts/archive-check/后再校验一次。资产名符合 Lithe Store 的-(darwin|windows|linux)(-(arm64|x64))?.zip规则。scripts/verify-package.sh:要求vendor.signatureRequirement为none、包里没有lithe-plugin-signature.json;顶层只允许plugin.json icons templates language-server runtime;保留“打包的 JDK 仍带上游 Apple 代码签名”的检查。scripts/assemble-package.sh:只改了插件目录路径和一条错误提示里的路径。工作流
ci.yml:打包任务(macOS,构建并归档两个架构)在 Draft PR 上跳过;去掉 Xcode 和 host-tools 步骤;产物名改为java-support-archives。release.yml:去掉签名步骤;发布资产是两个架构的 zip 和.sha256;发布说明改为中文;仍保留--prerelease(原因见下)。测试
backend/tests/repository_pins.rs:测试改名为the_manifest_keeps_the_community_identity_and_declares_no_backend_yet,断言新 ID、vendor、signatureRequirement: none、没有packageTrust/bundledSignatureRequirement,以及仍不声明backend。backend/src/plugin_functions.rs、crates/java-domain/src/lsp/languages/jdt_contributions.rs:测试数据里的插件 ID 改为io.github.lithe-idea.maven-build、io.github.lithe-idea.gradle-build、io.github.lithe-idea.p{序号}。文档
README.md:新身份、收录方式、安装方式(目前从磁盘安装)、为什么仍是预发布、新的构建/归档命令。MIGRATION.md:路径映射表里plugin.json、打包脚本、官方索引三行改为新做法;第 8.2 节加入阶段 E 必须先取消的两条宿主限制和旧 ID 迁移方式;新增第 9 节“发布与商店”。NOTICE:图标路径改为新目录。为什么仍然是预发布
当前 Lithe 会拒绝这个包,所以暂时不让 Store 自动上架:
rust/lithe-core/src/plugins/declarative.rs只允许dev.lithe.*插件使用languageServers[].hostIntegration(JDT 集成),其他 ID 得到plugin.integration.unsupported;rust/lithe-core/src/toolchain/definitions.rs只对带官方来源验证的包接受不含:的短工具 ID,本包声明了java;dev.lithe.plugin.java-support。这三点都在主仓库阶段 E 处理(旧 ID 按 1lck/Lithe-IDEA#1357 的先例留在
OfficialPluginCatalog并用communityReplacementID指向新 ID)。完成后去掉--prerelease,Store 自动上架稳定版。验证
cargo fmt --all --check、cargo clippy --workspace --all-targets --locked -- -D warnings、cargo test --workspace --locked全部通过。zsh -n通过。scripts/build-package.sh --arch arm64→scripts/archive-package.sh产出dist/Lithe-Java-Support-1.1.0-darwin-arm64.zip(261,649,962 字节,SHA-2561189f6d9d5aefc5618f03a9a8c3a193046706f81403c8ea6c8d8b7cfc4de816f)。手动核对:zip 内只有一个io.github.lithe-idea.java-support/plugin.json,id/version 为io.github.lithe-idea.java-support 1.1.0,vendor 正确,没有packageTrust,没有签名文件;解包副本通过verify-package.sh。相关 PR