Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/track-releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ jobs:
args=""
if [ -n "$PLUGIN" ]; then args="--plugin $PLUGIN"; fi
node scripts/track-releases.mjs lithe-plugin-index.json $args
node scripts/render-readme.mjs

- name: Verify the new archives
if: steps.track.outputs.added != '0'
Expand All @@ -62,7 +63,7 @@ jobs:
git config user.name "lithe-store-bot"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git switch -C "$BRANCH"
git add lithe-plugin-index.json
git add lithe-plugin-index.json README.md
git commit -m "chore(index): track new plugin releases" -m "$SUMMARY"
git push --force origin "$BRANCH"
body=$(printf '自动追踪到新的插件版本:\n\n%s\n\n已校验 SHA-256 与包内 plugin.json(id、version、pluginAPIVersion、signatureRequirement)。维护者请按 docs/maintainers.md 的清单审查后合并。' "$(echo "$SUMMARY" | tr ',' '\n' | sed 's/^ */- /')")
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ jobs:
- name: Validate index
run: node scripts/validate-index.mjs lithe-plugin-index.json

- name: Check the README plugin overview
run: node scripts/render-readme.mjs --check

- name: Pick the base index
id: base
run: |
Expand Down
57 changes: 56 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
| --- | --- |
| 收录自己的插件 | 读 [docs/publishing.md](docs/publishing.md),提 PR 或开“插件收录申请” issue |
| 发布插件新版本 | 在自己仓库发布 Release 即可,bot 会自动开 PR(见 [发布新版本](docs/publishing.md#4-发布新版本)) |
| 修改插件信息 | 提 PR 修改 `lithe-plugin-index.json` 中自己的条目 |
| 修改插件信息 | 提 PR 修改 `lithe-plugin-index.json` 中自己的条目,并运行 `node scripts/render-readme.mjs` 更新 README |
| 报告有问题的插件 | 开“报告插件问题” issue;安全问题请勾选“安全问题”,维护者会优先处理 |
| 改进脚本、CI 或文档 | 直接提 PR,并运行 `node --test scripts/store.test.mjs` |

Expand All @@ -13,10 +13,65 @@
- 一个 PR 只改一个插件,便于审查和回退。
- `plugins` 按 `id` 字母序排列;每个插件的 `versions` 新版本在前。
- 不修改已发布版本的 `downloadURL` 与 `sha256`;不删除历史版本(撤回问题版本除外)。
- 修改索引后运行 `node scripts/render-readme.mjs`,README 的插件总览由它生成,CI 会检查两者是否一致。
- 插件的 bug 与功能请求请提到插件自己的仓库,本仓库只处理收录相关事务。

第一次开发语言插件,先读[LSP 插件完整生命周期](docs/lsp-plugin-lifecycle.md),
再按[构建、运行与测试接入指南](docs/build-tool-integration.md)扩展能力,
最后按[发布文档](docs/publishing.md)提交收录。

审查标准见 [docs/maintainers.md](docs/maintainers.md#审查清单)。

## 索引如何工作

这个仓库只存放一份索引文件 [`lithe-plugin-index.json`](lithe-plugin-index.json),列出社区插件、
它们的版本和每个平台的下载包;插件代码和安装包都留在各自作者的 GitHub 仓库里,通过 GitHub Releases 分发。

Lithe 会把仓库地址 `https://github.com/Lithe-IDEA/Lithe-store` 解析为
`https://raw.githubusercontent.com/Lithe-IDEA/Lithe-store/HEAD/lithe-plugin-index.json`,
索引缓存在本机缓存目录,不会写入应用安装包。

## 社区插件与官方插件

| | 官方插件 | 社区插件(本仓库) |
| --- | --- | --- |
| 索引位置 | Lithe 主仓库 `Plugins/marketplace/index.json`,随应用附带 | 本仓库,Lithe 预置为社区插件源(用户可停用或移除) |
| ID 命名空间 | `dev.lithe.*` | 不得使用 `dev.lithe.*`,Lithe 会直接拒绝 |
| 完整性 | Lithe 发布者 Ed25519 签名 | 索引固定每个包的 SHA-256,安装后记录内容摘要并在每次加载时复查 |
| 安装前 | 直接安装 | 弹窗列出权限、要运行的程序和来源仓库,用户确认后安装 |

社区插件**由各自的开发者维护**。本仓库的审查只保证:索引格式正确、下载包与 SHA-256 一致、
包内 `plugin.json` 与索引条目一致、来源仓库真实存在且公开。它不代表对插件代码的安全审计。

## 文档

| 文档 | 内容 |
| --- | --- |
| [LSP 插件完整生命周期](docs/lsp-plugin-lifecycle.md) | 从 Lua 模板开始:清单、服务器打包、激活、状态目录、停止、升级与卸载 |
| [构建、运行与测试接入](docs/build-tool-integration.md) | 可用的执行提供者示例、工程后端边界,以及开发中的 API 3 状态 |
| [docs/publishing.md](docs/publishing.md) | 插件作者:如何打包、发布 Release、提交收录和发布新版本 |
| [docs/versioning-and-updates.md](docs/versioning-and-updates.md) | 版本号如何追踪、Lithe 如何选择可安装版本、用户如何更新/回退 |
| [docs/maintainers.md](docs/maintainers.md) | 维护者:审查清单、下架与撤回、同步 Lithe 契约 |

## 仓库结构

```text
lithe-plugin-index.json # 唯一的数据文件,Lithe 客户端读取它
schema/plugin-index.schema.json # 索引 JSON Schema(Lithe 契约 v1 的副本)
scripts/validate-index.mjs # 与 Lithe Rust Core 同规则的校验 + 下载包校验
scripts/track-releases.mjs # 追踪已收录插件的新 Release 并生成版本条目
scripts/render-readme.mjs # 根据索引生成 README 的插件总览
scripts/store.test.mjs # 校验脚本的测试(fixtures 复制自 Lithe 主仓库)
assets/ # README 用到的图片(无图标插件的默认图标)
.github/workflows/ # validate(PR/推送/每周)与 track-releases(每 6 小时)
```

## 本地校验

需要 Node.js 22+ 与 `unzip`:

```bash
node --test scripts/store.test.mjs
node scripts/validate-index.mjs --verify-archives
node scripts/render-readme.mjs --check
```
136 changes: 80 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,93 @@
# Lithe Store
<div align="center">

Lithe 的**社区插件市场索引**。这个仓库只存放一份索引文件
[`lithe-plugin-index.json`](lithe-plugin-index.json),列出社区插件、它们的版本和每个平台的下载包;
插件代码和安装包都留在各自作者的 GitHub 仓库里,通过 GitHub Releases 分发。
<img src="assets/plugin-default.svg" width="72" alt="Lithe Store">

> English: This repository is the community plugin index for [Lithe](https://github.com/Lithe-IDEA/Lithe-IDEA).
> Plugin authors publish archives in their own GitHub Releases; this index pins each archive's SHA-256.
> See [docs/publishing.md](docs/publishing.md) to list a plugin.

## 在 Lithe 中使用

需要 Lithe 0.6.1 或更新版本(目前插件市场只在 macOS 提供)。Lithe 已预置本仓库作为社区插件源,
打开 **设置 → 插件 → 插件市场** 即可浏览、安装社区插件,不需要额外配置。

如果你之前移除了 Lithe Store,可以重新添加:
<h1>Lithe Store</h1>

1. 打开 **设置 → 插件 → ⚙ → 管理插件仓库…**
2. 添加 `https://github.com/Lithe-IDEA/Lithe-store`
3. 回到 **插件市场** 标签
<p><strong><a href="https://github.com/Lithe-IDEA/Lithe-IDEA">Lithe</a> 的社区插件市场</strong></p>

Lithe 会把仓库地址解析为
`https://raw.githubusercontent.com/Lithe-IDEA/Lithe-store/HEAD/lithe-plugin-index.json`,
索引缓存在本机缓存目录,不会写入应用安装包。
<p>
<a href="#-插件总览"><b>🧩 浏览插件</b></a> ·
<a href="#️-在-lithe-中安装"><b>⬇️ 安装方式</b></a> ·
<a href="docs/publishing.md"><b>📤 发布插件</b></a> ·
<a href="CONTRIBUTING.md"><b>🤝 参与贡献</b></a>
</p>

## 社区插件与官方插件
</div>

| | 官方插件 | 社区插件(本仓库) |
| --- | --- | --- |
| 索引位置 | Lithe 主仓库 `Plugins/marketplace/index.json`,随应用附带 | 本仓库,Lithe 预置为社区插件源(用户可停用或移除) |
| ID 命名空间 | `dev.lithe.*` | 不得使用 `dev.lithe.*`,Lithe 会直接拒绝 |
| 完整性 | Lithe 发布者 Ed25519 签名 | 索引固定每个包的 SHA-256,安装后记录内容摘要并在每次加载时复查 |
| 安装前 | 直接安装 | 弹窗列出权限、要运行的程序和来源仓库,用户确认后安装 |

社区插件**由各自的开发者维护**。本仓库的审查只保证:索引格式正确、下载包与 SHA-256 一致、
包内 `plugin.json` 与索引条目一致、来源仓库真实存在且公开。它不代表对插件代码的安全审计。

## 文档
> English: Community plugin index for [Lithe](https://github.com/Lithe-IDEA/Lithe-IDEA).
> Plugins live in their authors' repositories; this index pins every archive's SHA-256.
> See [docs/publishing.md](docs/publishing.md) to list a plugin.

| 文档 | 内容 |
| --- | --- |
| [LSP 插件完整生命周期](docs/lsp-plugin-lifecycle.md) | 从 Lua 模板开始:清单、服务器打包、激活、状态目录、停止、升级与卸载 |
| [构建、运行与测试接入](docs/build-tool-integration.md) | 可用的执行提供者示例、工程后端边界,以及开发中的 API 3 状态 |
| [docs/publishing.md](docs/publishing.md) | 插件作者:如何打包、发布 Release、提交收录和发布新版本 |
| [docs/versioning-and-updates.md](docs/versioning-and-updates.md) | 版本号如何追踪、Lithe 如何选择可安装版本、用户如何更新/回退 |
| [docs/maintainers.md](docs/maintainers.md) | 维护者:审查清单、下架与撤回、同步 Lithe 契约 |
| [CONTRIBUTING.md](CONTRIBUTING.md) | 参与方式总览 |
## 🧩 插件总览

社区插件**由各自的开发者维护**。收录审查只核对索引格式、下载包 SHA-256 和包内清单,**不代表对插件代码做过安全审计**,安装前请先看代码。
插件本身的问题请提到插件自己的仓库。

<!-- plugins:start (generated by scripts/render-readme.mjs, do not edit) -->

**全部 · 5** | 语言支持 · 3 | 构建工具 · 2

<table>
<tr>
<td width="50%" valign="top">
<h3><img src="assets/plugin-default.svg" width="28" height="28" alt=""> <a href="https://github.com/Lithe-IDEA/lithe-plugin-go">Go Support</a></h3>
<p><sub>Lithe Community · v0.1.0 · API 1</sub></p>
<p>使用你自己安装的 gopls 提供 Go 补全、跳转定义和错误提示,并支持运行 main 包和 go test(整个模块、单个文件所在的包或单个测试函数)。需要先安装 Go 和 gopls(go install gola…</p>
<p>🏷️ 语言支持 · 💻 macOS · <img src="https://img.shields.io/github/stars/Lithe-IDEA/lithe-plugin-go?style=flat&label=stars&logo=github" alt="GitHub stars"></p>
<p><code>language</code> <code>go</code></p>
</td>
<td width="50%" valign="top">
<h3><img src="https://raw.githubusercontent.com/Lithe-IDEA/lithe-plugin-gradle/88a86cae73403d715d1385e447d8e4a9273e8f2f/io.github.lithe-idea.gradle-build/icons/gradle.svg" width="28" height="28" alt=""> <a href="https://github.com/Lithe-IDEA/lithe-plugin-gradle">Gradle</a></h3>
<p><sub>Lithe Community · v0.1.1 · API 3(需 buildSystems)</sub></p>
<p>预发布 Gradle 集成:项目与任务树、JavaExec 运行入口、筛选测试、编译诊断及依赖树。需要支持 API 3 buildSystems 和原生构建窗口的 Lithe preview 开发版、Gradle 7.6…</p>
<p>🏷️ 构建工具 · 💻 macOS · <img src="https://img.shields.io/github/stars/Lithe-IDEA/lithe-plugin-gradle?style=flat&label=stars&logo=github" alt="GitHub stars"></p>
<p><code>build</code> <code>gradle</code> <code>java</code> <code>testing</code></p>
</td>
</tr>
<tr>
<td width="50%" valign="top">
<h3><img src="assets/plugin-default.svg" width="28" height="28" alt=""> <a href="https://github.com/Lithe-IDEA/lithe-plugin-lua">Lua Support</a></h3>
<p><sub>Lithe Community · v0.3.0 · API 1</sub></p>
<p>内置 lua-language-server(LuaLS)提供 Lua 补全、跳转定义和错误提示,无需另外安装;“运行当前文件”使用你自己的 lua(brew install lua)。</p>
<p>🏷️ 语言支持 · 💻 macOS · <img src="https://img.shields.io/github/stars/Lithe-IDEA/lithe-plugin-lua?style=flat&label=stars&logo=github" alt="GitHub stars"></p>
<p><code>language</code> <code>lua</code></p>
</td>
<td width="50%" valign="top">
<h3><img src="https://raw.githubusercontent.com/Lithe-IDEA/lithe-plugin-maven/177ee4e9b12b9fe06a07498eb316539f7472d5d8/io.github.lithe-idea.maven-build/icons/maven.svg" width="28" height="28" alt=""> <a href="https://github.com/Lithe-IDEA/lithe-plugin-maven">Maven</a></h3>
<p><sub>Lithe Community · v0.1.0 · API 3(需 buildSystems)</sub></p>
<p>预发布 Maven 集成:反应堆与目标树、Profiles、带 JUnit 报告的筛选测试、编译诊断及依赖树。附带只读 Maven 核心扩展;需要支持 API 3 buildSystems 和原生构建窗口的 Lithe…</p>
<p>🏷️ 构建工具 · 💻 macOS · <img src="https://img.shields.io/github/stars/Lithe-IDEA/lithe-plugin-maven?style=flat&label=stars&logo=github" alt="GitHub stars"></p>
<p><code>build</code> <code>maven</code> <code>java</code> <code>testing</code></p>
</td>
</tr>
<tr>
<td width="50%" valign="top">
<h3><img src="assets/plugin-default.svg" width="28" height="28" alt=""> <a href="https://github.com/Lithe-IDEA/lithe-plugin-php">PHP Support</a></h3>
<p><sub>Lithe Community · v0.1.0 · API 1</sub></p>
<p>使用你自己安装的 Intelephense 提供 PHP 补全、跳转定义和错误提示,并支持运行 PHP 文件和 PHPUnit 测试。插件不内置 Intelephense(其许可证不允许再分发),请用 npm insta…</p>
<p>🏷️ 语言支持 · 💻 macOS · <img src="https://img.shields.io/github/stars/Lithe-IDEA/lithe-plugin-php?style=flat&label=stars&logo=github" alt="GitHub stars"></p>
<p><code>language</code> <code>php</code></p>
</td>
<td width="50%"></td>
</tr>
</table>

<!-- plugins:end -->

## ⬇️ 在 Lithe 中安装

## 仓库结构
需要 Lithe 0.6.1 或更新版本(目前插件市场只在 macOS 提供)。Lithe 已预置本仓库作为社区插件源,
打开 **设置 → 插件 → 插件市场** 即可浏览和安装;安装前会弹窗列出插件权限、要运行的程序和来源仓库。

```text
lithe-plugin-index.json # 唯一的数据文件,Lithe 客户端读取它
schema/plugin-index.schema.json # 索引 JSON Schema(Lithe 契约 v1 的副本)
scripts/validate-index.mjs # 与 Lithe Rust Core 同规则的校验 + 下载包校验
scripts/track-releases.mjs # 追踪已收录插件的新 Release 并生成版本条目
scripts/store.test.mjs # 校验脚本的测试(fixtures 复制自 Lithe 主仓库)
.github/workflows/ # validate(PR/推送/每周)与 track-releases(每 6 小时)
```
如果之前移除了 Lithe Store,在 **设置 → 插件 → ⚙ → 管理插件仓库…** 中重新添加
`https://github.com/Lithe-IDEA/Lithe-store` 即可。

本地校验(需要 Node.js 22+ 与 `unzip`):
## 🤝 参与贡献

```bash
node --test scripts/store.test.mjs
node scripts/validate-index.mjs --verify-archives
```
想收录自己的插件、发布新版本或报告有问题的插件,请看 [CONTRIBUTING.md](CONTRIBUTING.md)。
上方的插件总览由 `scripts/render-readme.mjs` 根据 [`lithe-plugin-index.json`](lithe-plugin-index.json) 生成,修改索引后运行一次即可。

## 许可
## 📄 许可

本仓库的脚本与文档使用 [Apache-2.0](LICENSE)。索引中每个插件的许可以该条目的 `license` 字段为准。
本仓库的脚本与文档使用 [Apache-2.0](LICENSE)。每个插件的许可以索引条目的 `license` 字段为准。
10 changes: 10 additions & 0 deletions assets/plugin-default.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading