Releases: wb04307201/spring-ai-loom-agent
Release list
v1.1.40
新功能
- Capability统一模型(M1-M7):@ToolGroup 注解 + role_tool 表 + 统一 CapabilityService,本地工具与 MCP
同源渲染;admin bypass 移除,严格 RBAC - M6 Universal 工具:6 个工具(file/skill/time/knowledge/subtask/schedule)对所有登录用户默认可见,UI 完全隐藏
checkbox,LLM 仍可调用 - Flyway schema 一站式 init:V1.0 + V2.1~V2.4 五份合并为单一 V1.0__init.sql
- IKnowledgeTool 上线:searchKnowledge(knowledgeId, query, topK?)替代 RetrievalAugmentationAdvisor
- 文件存储增强:DB 模式 loom_file_content +
知识库市场三件套(loom_market_knowledge/loom_user_knowledge/loom_role_knowledge) - Admin UI:用户列表新增"已分配角色" badge 列;工具面板文案精简;checked + disabled 死锁态修复
- 测试:新增 26 个测试(CapabilityServiceTest 18 + DefaultRoleServiceErrorMappingTest 8)
部署必读
- 新装 admin 必须首次手动授权:admin 不再自动拥有 capability,必须先进 admin 控制台给 wb04307201 分配业务 role
- Flyway 升级:已有部署 rm -rf ~/.loom/datasource 重跑,或 flyway baseline -baselineVersion=2.4;不接受就地
schema 升级 - API 4xx 变更(附 P2 修复):
- PUT /admin/users/{u}/roles 不存在 role → 400 {"error":"角色不存在: xxx"}(原 500)
- PUT /admin/roles/{code}/tools 不存在 role → 404(原 500)
- PUT /admin/users/{u}/roles 不存在 user → 400(原 500)
- body schema 修正:{"roleCodes": [...]} 而非 raw array
修复
- P0.3.3 user_role.username FK CASCADE
- B.2.1 role 删除时 cascade 清 user_role/role_mcp/role_tool
- P3.1 overlong role code/name → 400
- P2 不存在 user/role → 4xx(TDD + lock-in)
- syncRoleSkills 移除已删的 m.version 列
- LastChunkAdvisor 流空 chunk NPE + doFinally 回归修复
- loom-*-mcp 工具改用 @mcptool + snake_case
- admin UI 所有 fetch 显式 charset=UTF-8
v1.1.39
- docs(version): 更新版本号从1.1.38到1.1.39
- chore(test): 切换 DashScope API key 到个人 token env 名
- style: HTML/CSS/JS DOM-aware 重排为 2 空格缩进 (prettier 3.9.6)
- fix(html): index.html 移除 2 处多余
- feat(yaml): MCP server 版本用 @project.version@ 资源过滤
v1.1.38
- docs(image): regenerate project-overview-{en,zh}.png — 补 Knowledge 卡 +…
- test(chat): 3 个 buildDynamicSystemPrompt 集成测试
- chore(release): bump to 1.1.38
- docs(skill): 同步 listSkills 移除到 CLAUDE / TOOLS / API
- feat(skill): 删除 listSkills 工具 — system prompt 注入全量技能
v1.1.37
Release Notes — v1.1.37
主题:Market 去审批化 · 历史对话稳定加载 · 管理控制台全面重做
🚀 Features
- V5.4 P13-P22 — Skill / Knowledge Market 去审批(submit 直接 APPROVED),admin union view 移除,pull 拒绝覆盖自建,删除/下架 UX 完整,role-kb/skill 自动同步,移除
version字段。所有 Flyway 迁移合并到V1.0__init.sql - Skill Picker —
/触发 slash picker + 标签条 UI;picker 选中 skill 全文强注入 system prompt;createOrUpdateSkill工具 +POST /skill/upsert - 管理控制台重做 — conversation.html V4.0 全量对话流(块布局 + 思考折叠 + 工具调用可视化 + 轮次分隔);user.html 5 列布局 + 搜索 / 排序 / 筛选 + 用量 bar chart
- V5.4 P1-P12 稳定性 — 自定义
LastChunkMessageChatMemoryAdvisor,统一 tool_call_log 入口,历史对话长上下文修复(JdbcTemplate直写),logicalSortSYSTEM 事件,TOOL 行去重,跨异步线程conversationId传递 - Usage 合并 — V5.0/V5.1 合并到 V4.0(
loom_chat_usage/loom_chat_reasoning)
🐛 Bug Fixes
P0: SSE 流式响应恢复 · MCP name 含 / 路由 404
P1: currentIsAdmin RBAC · 长上下文丢失 · tool_call_log 多写去重 · logicalSort 丢 SYSTEM 事件
P2: 市场 Tab 无反应 · slash picker 事件委托 · final review 3 项 · toast CSS · 上游异常中文映射 · MCP SDK 超时 · thinking 持久化 · sidebar 加载态 · bing-search 描述合并
🧪 Tests
- 5 个高风险类单元测试(LastChunkAdvisor / LoggingToolCallback / JdbcToolCallLogRepository / DefaultSkillRoleAdmin / SyncMcp)
- 36 个 B1-B5 单测
- V5.4 P12 E2E 9/10 通过(T9a 确认为测试 harness bug)
- 全功能 572 个测试 100% 通过(单测 495 + API 54 + E2E 23)
- E24 + E25 skill picker 两条路径补测
⚠️ Upgrade
- 全新库:
V1.0 → V1.1 → V2.0一次跑通 - 历史库:V12-V17 旧版本号已从磁盘移除,需全新库或
flyway baseline(本地rm -rf ~/.loom/datasource) - 破坏性变更:
market_skill.version列已移除;loom_chat_token_usage已合并到loom_chat_usage/loom_chat_reasoning
📝 Docs
CLAUDE.md · README.md 截图刷新 · TOOLS.md 同步 · 新增 skill picker 设计 + 实施计划 · 替换 6 张 chrome 截图
Tag: v1.1.37
v1.1.36
- 知识市场 — 完整的市场工作流(提交→审批→订阅)+ 角色授权
- 🆕 工具化 RAG — IKnowledgeTool 替代旧 Advisor,会话级知识库选择
- 🆕 子任务 & 定时 — LLM 可调用 + 持久化 + 会话级面板
- 🐛 45 项修复 — RBAC、MCP、认证、安全、UI 全面加固
- 99/99 E2E — 15 项全量回归测试通过
v1.1.35
feat: 新增子任务管理工具并修复定时任务越权问题
-
新增 ISubTaskTool 3个管理方法:
* list_sub_tasks() - 列出当前会话运行中的子任务
* cancel_sub_task(subTaskId) - 取消当前会话的子任务
* get_sub_task_history(limit) - 获取当前会话的子任务历史
所有新工具按 (username, conversationId) 严格隔离,防止跨会话越权 -
修复 DefaultScheduleTool.listSchedules 越权问题:
原实现只按 username 过滤,会列出同用户所有会话的定时任务
新实现按 (username, conversationId) 精确前缀过滤 -
新增 8 个测试用例,全部 322 个测试通过
-
更新文档:TOOLS.md/zh-CN、README.md/zh-CN、CLAUDE.md、project-overview-image/README.md
v1.1.34
- 子任务系统:Executor / Tool / Registry / conversation-scoped cancel + 级联删除 + 历史持久化
- 定时任务系统:flex-schedule 接入 → loom 自管 H2 + 启动恢复(10m/72h/strict)
- DB V2.0:合并 V12-V17,新增多表 + conversation 侧边栏三列
- 前端 operations-console:子任务 / 定时面板同族重设计
- RBAC 强化:SubTask / File / MCP 按 username scope;拒带 dash 用户名
- 安全修复:Markdown sanitize + innerHTML 清理 + MCP 选择持久化
- MCP admin 修复:4xx 状态码 + clear 语义 + NPE + 保存竞态
- 业务修复:删 KB 清 chat 绑定 / sidebar 重命名 / 附件静默丢图
- 配置硬编码修复:子任务 / 定时面板上限提示读真实值
- 存储统一:~/.loom/ 单根,datasource/jvector/file/knowledge/compile
- 回归测试:15 Task 设计 + 报告,99/99 E2E pass
- 升级:flex-schedule 1.0 → 1.2.2(BUG-14)
- 依赖:test 加 actuator;删未用 eventsource-parser
- 仓库清理:删 superpowers 文档/45MB 截图/52MB worktree + gitignore
- 文档同步:CLAUDE.md / README / project-overview-image skill 18 轮变更
v1.1.33
- docs: 文档审计 + 全量修复(11 项)
- feat(skill): 用 wan2.7-image 重新生成项目概览图
- config(core): 切换到阿里云通义千问模型配置
v1.1.32
chore(version): 更新项目版本号至 1.1.32 并调整配置
- 将 API 文档中的版本号从 1.1.31 更新为 1.1.32
- 更新各 MCP 模块 application.yml 中的版本号至 1.1.32
- 修改主 pom.xml 中 Spring Boot 版本至 3.5.16 和 Spring AI 版本至 1.1.8
- 调整测试模块配置,将 DashScope 替换为 OpenAI 配置
- 更新 README 中的依赖版本号至 1.1.32
- 重构 LoomAgentConfiguration 中的导入顺序并优化代码结构
- 添加聊天响应过滤以避免空结果处理异常
v1.1.31
refactor(core): 优化Tika工具使用并升级版本
- 将Tika实例统一到TikaUtils工具类中进行共享
- 修改DefaultChat中文档解析逻辑以使用共享Tika实例
- 更新DefaultFileTool中MIME类型检测为共享实例方式
- 移除直接创建Tika实例的代码,改为使用TikaUtils.TIKA
- 升级项目整体版本从1.1.30到1.1.31
- 更新file-view依赖版本至1.4.2-sb3