软件中心 v1.0.0
这是 Software Manager for Halo 的首个稳定版本,为 Halo 提供独立、主题中立的软件内容管理、公开查询和安全下载能力。主题可以通过 Finder、Theme Router 或版本化 REST API 接入,插件本身不依赖任何特定主题。
版本亮点
- 完整的软件领域模型:支持软件、版本、下载源、分类、标签和专题的创建与管理,并覆盖发布状态、排序、统计、SEO 及关联内容。
- Console 管理界面:提供软件编辑器,以及分类、标签、专题、版本和下载源管理;下载源支持类型、优先级、健康状态和门禁配置。
- 主题中立的公开集成:提供
softwareFinder、公共主题路由和v1alpha1REST API,公开 VO 与 Console/原始 Extension 分离,方便不同主题或客户端消费。 - 安全下载授权:下载详情不直接暴露最终 URL、
storageKey、提取码或密码等敏感字段;通过短期download-grants授权获取下载信息,并支持 Cloudflare Turnstile 验证。 - 权限与安全边界:新增软件查看、软件管理和敏感下载配置等角色模板;下载目标执行 HTTP(S)/站内路径校验,验证码异常、Secret 缺失或目标不安全时按 fail-closed 处理,敏感响应使用
no-store。 - 评论与可选 AI:将
SoftwareApp注册为 Halo 评论资源;可选接入 AI Foundation,为软件摘要、详情和 SEO 提供 Console 编辑建议,不影响核心软件管理功能。 - 开发者契约与工程化:提供主题 API、REST API 和 OpenAPI 文档,并配套 Java、Vue、公共 VO、Router、RBAC、下载安全和 AI 能力契约测试。
兼容性
- Halo
>= 2.25.0 - Java 21(仅从源码构建插件时需要)
- AI Foundation
>= 1.0.0-SNAPSHOT且< 2.0.0(可选,仅用于 AI 编辑辅助)
安装
- 从 GitHub Releases 下载
software插件 JAR。 - 在 Halo Console 的“插件”页面上传并启用。
- 在“软件”菜单中配置选项、分类、标签、专题、软件、版本和下载源。
- 如使用验证码下载,在 Halo 中创建保存 Turnstile Secret Key 的 Secret,再完成插件“下载安全”设置。
- 使用主题或其他客户端时,仅调用公开 Finder/Router/REST API,不要读取原始 Extension 或 Console API 中的敏感字段。
升级注意
- 主题接入应使用
GET /download-options和POST /download-grants获取下载授权,不应继续依赖详情接口中的最终下载 URL。 - 公开详情中的下载源 URL 为空是预期行为;提取码、密码和存储键只在完成授权后返回,并且只应保存在当前下载流程的内存中。
v1alpha1公共契约、getHome()/SoftwareHomeVo和主题 Router 均属于跨项目接口,升级主题或自定义客户端时请同步查看 主题 API 文档 与 REST API 文档。- AI Foundation 缺失、禁用或未配置模型时,软件管理、公开 API、Finder 和主题路由仍应正常工作。
已知边界
- 插件只负责软件数据、查询、授权和权限;网格/列表布局、颜色、动画等展示逻辑由主题负责。
- 应用市场发布当前未启用,本版本通过 GitHub Release 分发。