github komari-monitor/komari Snapshot-2610231657

pre-release3 hours ago

主要更新内容

  • JS 运行时迁移至 moejs:插件引擎从 dop251/goja + goja_nodejs 全面迁移到 Calcium-Ion/moejs,涉及插件路由、RPC、Hook、WebSocket Hook、通知通道、定时任务及所有 Node.js 兼容模块(buffer、child_process、console、crypto、events、fetch、fs、http、url、require)的重写。
  • 新增统一指标查询层(internal/metricstore/query.go):支持 points / series / latest_before 三种查询模式、raw / rollup 数据源选择、实体范围限定、点数预算与自适应降采样,替代原先分散的查询路径。
  • 查询性能优化:新增 LoadProjection 按 load_type 仅选取所需字段;RecordQueryOptions 支持按指标名过滤和总点数预算,减少全量物化;查询路径减少对象分配,降低 CPU 开销。
  • Ping 汇总一次性聚合(database/tasks/ping_summary.go):单次遍历同时计算客户端与任务维度的 min/max/avg/p50/p99/loss 等统计,供 legacy 与 public ping 接口共用。
  • 新增确定性比例降采样包(internal/sampling):按组长度比例分配点数目标,用于历史响应。
  • 插件可修改自身内建对象:运行时启用 MutableIntrinsics,各插件实例的内建对象修改互不泄漏(新增隔离回归测试)。
  • 新增原生 Buffer 模块(pkg/jsruntime/buffer):基于 TypedArray 实现 Node.js Buffer 兼容层,含完整编解码与大小端读写。
  • 新增事件循环封装(pkg/jsruntime/loop):包装 moejs eventloop,提供宿主侧定时器、终止与错误上报。
  • 新增 native 辅助包(pkg/jsruntime/native):提供类型安全的 JS 值读写、函数绑定与脚本执行入口。

Bug修复

  • Ping 队列独立容量:ping 写入队列容量从与 report 队列共享的 512 提升至独立的 4096,避免高并发 ping 上报时阻塞常规指标写入(PR #695)。

其他

  • 数据库层代码精简:accounts、clients、tasks、oauth 等模块移除冗余错误分支与注释,统一返回风格。
  • 2FA 校验逻辑简化为单行表达式。
  • Store 迁移与 Restructure 流程重构:提取 openWithoutMigration 辅助函数,迁移停止逻辑统一为 awaitStoreMigrationStop。
  • Report batcher 改用通用 drainQueue 替代原先两个专用 drain 函数。
  • 移除 cmd/flags/config_test.go 与 internal/sqlitetune/connector_test.go。
  • go.mod 更新:移除 goja / goja_nodejs 依赖,引入 moejs;stretchr/testify 升级至 v1.12.1。
  • .gitignore 新增 .gocache/。
  • README 新增 MooProxy 赞助商条目。

What's Changed

Commits

New Contributors

Full Changelog: 1.6.0...Snapshot-2610231657

Don't miss a new komari release

NewReleases is sending notifications on new releases.