Files
curios/docs/development.md
T

61 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Curio 开发与验收
此仓库承载 Trove 正式插件与生产软件源。当前包含用于首批验收的简单插件;生产发布以 `source/index.json` 为准,本地测试材料位于 `dist/`。
## 底座测试套件
15 个插件工程(14 个插件 ID,其中升级插件有两个版本),覆盖 UI、Host 服务、Rust 原生后端、跨插件服务、可选/必需依赖、版本约束、生命周期、故障恢复和升级回滚。另有 22 个故意无效的安装包和 4 个异常软件源。
```sh
pnpm install --frozen-lockfile
# 已安装 trove 命令时可省略此变量;也可指向本机 app 仓库构建产物。
export TROVE_BIN=/absolute/path/to/app/target/debug/trove
pnpm run pack
# 可选:使用真实底座组件在临时目录自动验证。
export TROVE_APP_DIR=/absolute/path/to/app
pnpm run verify
```
打包需要 macOS、Rust/Cargo、Node.js 22+、pnpm、Python 3 和 Trove CLI。原生包只面向当前构建机器的架构;安装后的插件无需 Node.js、Python 或 Cargo。SDK 使用仓库内的版本化 `@trove/plugin-sdk@0.1.0` 包,离线复制到 UI 中。
生成结果:
- `dist/packages/`:15 个可安装 `.curio` 包。
- `dist/index.json`:常规测试源,8 个插件 ID / 9 个版本包。
- `dist/faults-index.json`:6 个故障/异常依赖插件,按需安装。
- `dist/invalid/`:22 个无效包、4 个异常源及预期错误码。
- `dist/verification.json`:自动验证的逐项结果、环境和观察项。
在 Trove 添加**本地软件源**,选择 `dist/index.json` 的绝对路径,即可安装常规测试插件。若要测试 HTTP 下载:
```sh
pnpm run serve
# 在底座添加 HTTP 软件源:http://127.0.0.1:8765/index.json
# 用 QA_HTTP_PORT 环境变量更换端口,Ctrl-C 停止。
```
完整步骤、覆盖矩阵与当前限制见 [测试指南](testing.md)。
插件各自通过 `curio.json.version` 管理版本;公开服务契约版本与底座兼容范围分别维护。历史发布索引只追加版本、禁止覆盖同版本产物,详见 [版本与发布](versioning.md)。`pnpm run release:prepare --base-url <HTTPS 分发目录>` 可准备保留历史的发布材料,`pnpm run test:release` 验证这些约束。
## 目录
- `curios/<name>/`:各插件独立 Manifest 与公共服务契约。
- `shared/ui/`、`shared/backend/`:测试面板和原生后端源码;构建时复制到各插件。
- `source/index.json`:生产软件源与历史版本索引。
- `tools/`:构建、打包、测试源和真实底座验证适配器。
- `vendor/`:版本化 SDK 分发包与来源说明。
项目依赖使用 pnpm;插件通过版本化的 `@trove/plugin-sdk` 引用 SDK,不通过 `../app` 引用源文件。仅自动验证适配器通过显式的 `TROVE_APP_DIR` 编译待测底座组件,插件构建与运行不依赖该路径。App 仓库保留协议规范和教学模板。
## 发布约定
1. 各插件独立声明版本、平台、依赖与权限。
2. 构建并执行 trove curio check / pack。macOS 原生后端使用 Mac Runner 构建。
3. 先上传不可变的版本包,再更新索引中的下载 URL、大小和 SHA-256。
4. 最后原子发布 index.json。私有 Git 仓库不等于私有下载源;下载地址应符合分发对象的访问权限。
官网:https://trove.render.ink