Skip to content

chore: Java 插件改为普通插件身份,去掉发布者签名 - #3

Merged
xiaoyumuxi merged 1 commit into
mainfrom
chore/community-identity
Nov 5, 2026
Merged

xiaoyumuxi merged 1 commit into
mainfrom
chore/community-identity

Conversation

@xiaoyumuxi

@xiaoyumuxi xiaoyumuxi commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

背景

Lithe 不再区分官方插件和普通插件,所有插件都按普通插件处理,不带发布者签名。区别只在 Lithe Store 怎样收录:

  • Lithe-IDEA 组织里 lithe-plugin-* 仓库的稳定版 GitHub Release 由商店机器人自动跟踪并上架;
  • 组织之外的插件向 Lithe-store 提交 PR,维护者审核后上架。

本 PR 把 Java 插件改成和 Cargo、Maven、Gradle 一样的普通插件。

改动

身份

  • 插件 ID 从 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 检查当成多余声明拒绝)。
  • 版本保持 1.1.0;权限、设置、其余 requires 不变;backend 仍不声明。

去掉签名链路

  • 删除 scripts/host-tools.sh 和 host-tools.lock.json(原来用于从主仓库构建签名器 LithePluginPackageSigner 和官方校验器 LitheOfficialPluginVerifier)。
  • 构建、CI 和发布不再需要 Xcode/Swift 工具链,也不读任何签名密钥。

脚本

  • 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 自动上架:

  1. rust/lithe-core/src/plugins/declarative.rs 只允许 dev.lithe.* 插件使用 languageServers[].hostIntegration(JDT 集成),其他 ID 得到 plugin.integration.unsupported;
  2. rust/lithe-core/src/toolchain/definitions.rs 只对带官方来源验证的包接受不含 : 的短工具 ID,本包声明了 java;
  3. Lithe 仍内置旧 ID 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 通过。
  • 本地 arm64 完整构建:scripts/build-package.sh --arch arm64 → scripts/archive-package.sh 产出 dist/Lithe-Java-Support-1.1.0-darwin-arm64.zip(261,649,962 字节,SHA-256 1189f6d9d5aefc5618f03a9a8c3a193046706f81403c8ea6c8d8b7cfc4de816f)。手动核对: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。
  • x86_64 包没有在本地构建,由 CI 的打包任务覆盖(PR 标为 ready 后才会运行)。

相关 PR

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 同步新身份、收录方式和转正式发布前的两条宿主限制
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant