github komari-monitor/komari Snapshot-2607212346

pre-release5 hours ago

主要更新内容

  • Metrics 存储重构:路由全部指标读写至专用 metrics store,首次启动自动从旧表迁移数据;支持 MySQL/PostgreSQL 后端切换与一键数据搬运
  • 指标压缩与保留策略:默认启用时分级降采样(1m/5m/1h)与原始数据保留窗口,支持下采样开关配置与保留期管理
  • Web 前端构建分离:CI 流程拆出独立 frontend 构建步骤(.github/actions/build-frontend),支持版本化主题打包与缓存
  • 安装向导:首次运行显示引导界面,指导创建管理员账号、站点元数据与数据库配置,不再依赖环境变量预设默认账户
  • 新增 loong64 架构支持:二进制产物与 Docker 镜像增加 linux/loong64 平台
  • 废弃功能移除:删除内置 Cloudflare tunnel 支持、Cloudflare Access OAuth 提供者、Nezha 兼容模块、旧 records/gpu_records 表读写与压缩逻辑
  • 主题市场管理:新增主题源管理、归档校验与路径遍历防护
  • 配置热重载管理器:统一收敛订阅逻辑,panic 隔离,各处理器互不影响
  • 数据库维护 API:支持主库与 metrics 库的空间检查与 VACUUM 回收(SQLite)
  • 低资源模式自动探测:根据物理内存自动调优 SQLite 连接池与 batch 写入窗口
  • Visitor Audit RPC 端点:新增公开访客审计事件查询接口
  • Metrics Store 配置热加载:保存前测试连接,自动推断驱动类型,支持保留期动态更新

Bug修复

  • 安全:主题路径遍历:修复 DeleteTheme/UpdateTheme/SetTheme 中文件名未校验导致的目录穿越漏洞
  • Telegram 非 200 响应:返回 API 错误描述而非仅状态码
  • Visitor Audit 日志:加固写入逻辑避免异常数据
  • Metrics 系列身份保持:聚合查询时确保系列标识不丢失
  • SQLite 表锁:避免指标写入和迁移时 database is locked 错误
  • 时间字段标准化:全部模型时间字段改为 time.Time(UTC),修复事件日志时区偏移问题
  • Metrics 保留期边界:修复零保留期定义跨操作被覆盖、内置指标默认保留期测试值不准确
  • Compaction 错误隔离:单个 metric 压缩失败不再阻塞后续指标

其他

  • CI 重构:复用 frontend/toolchain action,增加 snapshot 构建验证、重建已有 release 工作流、Docker 推送分离
  • 重构启动生命周期:将 Server 拆为 Bootstrap/InitStores/Providers/Background/Router/Run/Shutdown 显式阶段
  • 日志系统:stdlib log 替换为自定义 logger,Gin 强制 release 模式
  • 废弃代码清理:移除 KOMARI_DB_HOST/PORT/USER/PASS/NAME 环境变量、CreateDefaultAdminAccount、旧 SaveReport/RecordOne 函数
  • 文档更新:README 与日语版改为引导式安装说明

What's Changed

  • fix(security): prevent path traversal in theme name (DeleteTheme/UpdateTheme/SetTheme) by @guocn in #584
  • fix(telegram): 非 200 响应时返回 API 错误描述而非仅状态码 by @Torther in #583
  • feat(rpc): add public visitor audit event endpoint by @sanrokamlan-prog in #597
  • fix: harden visitor audit logging by @sanrokamlan-prog in #602

Commits

New Contributors

Full Changelog: 1.2.5-fix2...Snapshot-2607212346

Don't miss a new komari release

NewReleases is sending notifications on new releases.