Repository navigation
Releases: StanlySGY/ComposeOps
Releases · StanlySGY/ComposeOps
Release list
v1.5.1
Added
- 拓扑中心与资产中心知识图谱升级为双模式关系图:分层架构按依赖深度排列,自由拓扑为力导向气泡,支持拖拽、缩放平移、悬停高亮上下游链路与依赖流向动画。
- 跨域嵌入开关 EMBED_MODE:放宽 CSP 与会话 Cookie 策略用于 iframe/Cloud Run 场景,默认保持严格安全姿态。
Changed
- 全站界面按 iOS 风格打磨:胶囊分段控制器、毛玻璃浮层材质、按压弹簧手感、连续圆角(支持的浏览器)。
- SQLite 存储迁移到 Node 22 内置 node:sqlite,移除 better-sqlite3 原生依赖,镜像构建不再需要编译器。
- 仓库切换为 npm workspaces,根 lockfile 统一管理依赖。
v1.5.0
Added
- 多个 OpenAI 兼容渠道、按优先级故障切换与冷却恢复;每渠道独立保存,管理员可按需查看已保存密钥。
- 工具调用测试区分基础工具能力与流式兼容性,支持关闭流式工具调用以适配部分上游。
- GitHub Pages 离线交互预览:服务、日志、审批修复与备份演练;示例数据不连接 Docker 或 AI。
- SQLite 在线备份与完整性校验 CLI,包含 WAL 数据,拒绝覆盖已有备份;补充停止服务后的恢复操作说明。
- 发布质量门:单测、lint、构建、桌面/移动浏览器测试,以及隔离镜像首次安装、1.4.0 升级与备份恢复验收。
Changed
- 入门指南支持重新打开,区分已发现与已纳管项目,明确 AI 可选;导航分组可折叠并记住偏好。
- 镜像成功发布后再创建 GitHub Release;提供固定版本的纯镜像安装清单。
- 收敛文档中的竞品比较、无中断升级与备份保证,明确实际验证边界。
- 更新存在公开漏洞的传递依赖。
v1.4.0
Added
- Agent 输出侧护栏: LLM 生成的命令进入容器执行前做灾难模式静态拦截(rm -rf /、mkfs、fork 炸弹、curl|sh 等);AI 端点挂进程内限流(execute-stream/approve/logs/diagnose 宽配额固定窗口),防失控循环刷爆上游
- 联网检索多后端: 内置 GitHub+DuckDuckGo 之外支持 Tavily / Brave / 自托管 SearXNG,失败自动回退内置;设置页新增检索配置区
- 运行环境快照注入: 引擎系统提示注入活跃主机与纳管项目状态(10s 缓存,只读事实),模型开局即知现状,不必每轮先 list
- 告警规则库统一: alert.configure 与 /metrics/alerts 曾写独立存储而评估引擎只读另一份,规则永不生效;收敛到单一模块,指标口径对齐,旧 restart 动作归一化 auto_restart
- Agent 工具扩容: 新增 volume.backup/restore/verify/list_backups(restore 为 critical 永远走确认门)与 event.list/update/diagnose(可读事件流、触发守护诊断、事件中心一键生成修复计划)
- 长会话自动压缩: 活跃区超阈值(默认 60 轮消息)自动压缩并向前端发提示,也可在工作台手动压缩;token 用量跨轮累计并带轮数
- Agent 可观测性: 执行历史页展示 30 天 token 用量/模型用量分布/每轮工具轨迹,新增用量与反馈接口、受限 SKILL.md 加载器与离线工具轨迹评测
- 关于页: 带版本号、作者与项目仓库链接
- MCP 端点限流: /mcp 120/min、SSE 建立 10/min,置于鉴权前防 token 穷举
Changed
- 链路稳定性专项: 日志流分片与行解码、Web 终端连接、多节点切换竞态、仪表盘/监控页自动刷新、命令面板搜索、工作流响应性与请求缓存整体重构,补一轮流/生命周期回归测试
- cron.create 枚举补齐 volume-backup/inspection,对齐调度器 7 类
Fixed
- 卷备份在 dockerode 5 下必然失败: helper 容器日志在 follow:false 时返回 Buffer 而非流,.pipe 直接报错"备份自证"不可用;改经 collectDockerOutput 统一兼容,顺带修复超限清理的错误吞没
- 工具参数解析失败污染会话历史: 模型吐出非法 JSON 参数时坏参数原样留在 tool_calls 历史,部分上游校验后整请求 400,Tool Loop 后续每轮都死在同一处;现在落历史前归位为 '{}' 并提示模型重试
- release notes 提取改用字面量状态机,根治 awk 区间起止同线恒空
- 快照缓存读写收进同步助手,消除 require-atomic-updates 告警
v1.3.1 · 拓扑图节点裁切修复
ComposeOps v1.3.1
Fixed
- 拓扑页节点被裁切: 依赖关系图的层内节点以固定 y=60 为中心展开,同层节点较多时
顶部节点纵坐标变负,整体被 SVG viewBox 上沿裁掉——用户看到"节点被面板盖住",
7 个服务只显示 5 个。现在每层以画布垂直中点居中展开,画布高度按层内最多节点数
实算(计入节点自身高度与上下边距),任何层数的首尾节点都完整可见 - 布局计算抽为纯函数
lib/topology-layout.js并补 7 例单测(含用户实测的
1 依赖 4 共 7 节点场景、12 节点单层、环依赖、单节点不放大画布)
v1.3.0 · 守护模式/部署预言/MCP 双时代协议/依赖全面升级
ComposeOps v1.3.0
Added
- 守护模式(半自动自愈): 告警入库后自动触发 AI 诊断(读容器状态/日志 → 根因假设 + 风险标注的处置建议),结果落事件中心;事件级 10 分钟冷却,AI 侧只读 fail-closed
- 部署预言:
up之前对照宿主实况推演——新建/重建/不动/孤儿容器、需拉取镜像、端口冲突、卷与 bind 路径就绪度 + AI 三句话解读 - 备份自证(还原演练): 卷备份 tar 全量完整性校验 + 解进一次性临时卷统计文件数,备份可信度随记录持久化,全程不碰原卷
- 舰队视图: 节点组页新增多宿主聚合总览卡、全节点并行探测与真实批量动作(巡检/全局镜像检查)
- 通知渠道补齐: 钉钉、飞书 webhook(与 bark/telegram/企业微信/email/通用 webhook 同一多渠道架构)
- MCP Server(三传输): 把 50 个 Agent 工具暴露给外部 MCP 客户端——Streamable HTTP(
POST /mcp)、经典 SSE(/mcp/sse)、stdio 桥(mcp/stdio-bridge.mjs);独立 token 鉴权,默认只读白名单,critical 工具任何模式不暴露 - MCP 双时代协议(2026-07-28): modern 按每请求
_meta协商版本、实现强制的server/discover、不支持的版本回-32022、头↔体一致性校验(-32020)、工具注解(readOnlyHint/destructiveHint)与structuredContent;legacyinitialize握手 2024-11-05 → 2025-11-25 全线支持 - MCP 确认门与防泄漏: 高危工具必须显式
confirm: true才执行;工具结果先值级脱敏再截断(24K 保留首尾);旧式客户端的下划线工具名别名兼容 - PWA 手机远控: manifest(standalone + 桌面快捷方式)、PWA 192/512/maskable 图标、iOS meta;手机"添加到主屏幕"即全屏 App 化
- 审批模式接入工作台: 逐次确认 / 放行非高危 / 仅极高危确认三档模式此前是后端孤岛,现工作台页头可直接切换并以
approval_mode事件同步 - 镜像手动发布工作流: Actions 手动触发产出
edge+sha-<7位>标签,不动latest(版本可追)
Changed
- 依赖全量升级到当代版本: 后端 fastify 4→5、@fastify/static 7→10、@fastify/websocket 10→11、better-sqlite3 11→13、dockerode 4→5、nodemailer 7→10、tar-stream 2→3;前端 vite 5→7、vitest 3→5、pinia 2→4、vue-router 4→5、@xterm/xterm 5→6、lucide-vue-next 0.468→1.0
- Tailwind CSS 3→4: 配置迁入 CSS-first
@theme(surface 色阶/状态光晕/字体保留),scoped style 的@apply上下文补@reference - CI actions 升级(checkout@v5 / setup-node@v5 / build-push-action@v7 / setup-qemu@v4 / action-gh-release@v3),消除 Node 20 弃用警告
- monaco-editor 刻意保持在 0.52(0.57 改了 exports 结构,编辑器为核心编辑面,待专项验证后单独升级)
Fixed
- 平滑升级回滚失效:
rollbackProject引用列表查询中不存在的content列,写入undefined被空 catch 吞掉,回滚恒 409;改经getComposeBackup取正文 - 审批门"本会话不再询问"可越过 critical: 记忆授权集合命中即放行,现在 critical 风险先于授权集合判定,任何模式都强制确认;匿名流使用独立 gateKey 防授权泄漏
- 设置导出泄露 SSH 私钥/密码:
docker.hosts整键排除出导出文件(脱敏导出再导入反而会用无凭据条目覆盖真实凭据) - 非数字会话 id 撞库: 路由允许字符串
sessionId,Number('abc')为 NaN 被 better-sqlite3 绑成 NULL,抛NOT NULL constraint failed: agent_plans.session_id;现在统一归一到匿名会话 0 - 达到 20 轮上限前端无感知:
max_loops_reached事件此前被公共事件层丢弃,前端只见流关闭;现在明确提示并可"继续"接续 - 数据库迁移扩展至 v15(备份演练字段 / 告警 AI 诊断)
v1.2.2
Release v1.2.2
- fix(release): Docker Hub 镜像名更正为 stanly1997/opsdash
v1.2.1
Release v1.2.1
- fix(static): SPA fallback 的 reply.sendFile 永远抛 TypeError + 补 favicon