主要更新内容
- 新增插件系统:支持从插件市场或本地 ZIP 安装、卸载、启用/禁用,并提供配置、日志查看与版本约束校验;插件加载失败会自动禁用并保留错误信息
- 插件通过
komari-plugin.json声明能力,新增权限门禁:系统 RPC 调用、HTTP 路由、请求/响应钩子、进程执行等需声明并经管理员审批,未授权能力默认不授予 - 插件可注册路由、调用/注册 RPC 方法,并支持注入管理员页面;从
data/plugin目录加载,状态持久化于state.json - 插件市场默认使用官方源,新增
plugin_market_sources配置项 - 重构并模块化 JavaScript 运行时,新增
node:crypto、node:stream以及child_process、fs、events等 Node.js 兼容模块,并对文件访问、进程执行等能力实施权限控制 - 请求/响应钩子对 WebSocket 升级请求与超大响应体直接透传,避免影响流式传输(如 MJPEG 实时画面)和占满内存
Bug修复
- 修复
process.exit(0)被误判为脚本异常终止的问题,并改进错误报告 - 修复插件重装时未先卸载运行实例、安装失败后残留目录的问题
- 修复响应钩子缓冲无上限问题,超过 32MB 的响应体不再缓冲改写
其他
database/metricstore迁移至internal/metricstore并按功能拆分模块- 移除旧版本兼容代码及未使用的数据库辅助函数
- 新增插件配置数据表,启动时自动创建
data/plugin目录 .gitignore新增/dist/忽略规则
Commits
- style: 移除没有使用的旧版本兼容代码,移动 database/metricstore 到 internal/metricstore 并拆分组件 (4077201) @Akizon77
- refactor: javascript runtime (df6ffba) @Akizon77
- refactor(jsruntime): modularize built-ins (3c58382) @Akizon77
- docs(jsruntime): add API and compatibility documentation (54851bd) @Akizon77
- docs(jsruntime): clarify unsupported methods throw instead of no-op (91ae9ed) @Akizon77
- fix(jsruntime): treat process.exit(0) as normal termination and improve error reporting (91cbeb3) @Akizon77
- feat: add plugin system and refactor jsruntime deadline handling (8985adc) @Akizon77
- feat(plugin): enforce server module permission gates (68bf4ed) @Akizon77
- feat(jsruntime): add node:stream module and embed nexttick JS (965afb3) @Akizon77
- feat: crypto module support (91d5f92) @Akizon77
- feat(plugin): set official plugin market as default source (f967ba0) @Akizon77
- fix(plugin): limit response hook buffering and safely reinstall (c27c21d) @Akizon77
Full Changelog: 1.3.2...Snapshot-2608012241