主题系统
当前生产版本只开放主题包。管理员在后台 主题 页面上传 ZIP;系统验证整个包后写入主题存储,新包默认停用。插件上传 API、插件管理页面与插件运行时均未开放。
官方内置主题
生产版本内置两个官方主题(无需上传,随部署分发):NIE-SLA 原版(默认启用)与 NodeGet 交互画布主题(默认停用)。两者都会出现在后台 主题 页,与第三方主题一样支持启用、停用与设置:
- NIE-SLA 原版的「设置 · 外观与文案」就是原先系统设置页里的外观配置(品牌、页头、文案、配色与显示区域),入口已移动到主题页统一管理。
- NodeGet 交互画布主题是官方移植的 Canvas 主题:启用后公开页切换为交互画布界面,停用立即恢复原版;其设置与第三方 Canvas 主题使用同一套配置存储与校验。
- 第三方主题的上传、SHA-256 校验与手动启用流程保持不变;内置主题 ID 为保留名称,不能通过上传覆盖。
选择扩展类型
| 类型 | 适用场景 | JavaScript | 数据能力 | 高度范围 |
|---|---|---|---|---|
| CSS 主题 | 保留原功能,只调整配色、字体、间距与视觉 | 不允许 | 使用宿主已有 DOM | 页面自身 |
| Canvas 主题 | 完全重写公开页面布局、交互与图表 | sandbox iframe | 状态快照 + 受限历史请求 | 400–12000 |
完整页面定制用 Canvas 主题;只调整视觉样式优先用 CSS 主题。独立面板基于公开 v1 API 构建并部署到独立域名。
安装与启用流程
- 作者从源码构建干净的
dist/。 manifest.json位于 ZIP 根目录。- 作者计算并发布 ZIP SHA-256。
- 管理员从主题入口上传。
- 浏览器与 Worker 分别校验 SHA-256。
- 校验通过后默认停用,管理员核对后手动启用。
- 停用主题立即恢复原版界面。
权限边界
CSS 主题不执行脚本。Canvas 主题运行在 sandbox="allow-scripts" 且没有 allow-same-origin 的 iframe 中,CSP 禁止直接联网、表单与顶层导航;数据通过受限消息协议由宿主提供,只能声明 status:read。管理员 Session、密码、TOTP、Agent 主 Token 与节点 scoped Token 一律不进入主题。
主题 ZIP 有大小、文件数、路径、类型、Manifest 与 SHA-256 校验。具体限制见安全与发布规范。