Commit Graph

559 Commits

Author SHA1 Message Date
ddCat
487c34bfeb refactor(media): 资源分发 - 统一资源访问策略与云存储重定向 2026-09-22 21:41:00 +08:00
ddCat
2088cf78cc feat(canvas): 创作入口 - 突出 Agent 主入口并优化响应式交互 2026-09-22 15:48:32 +08:00
ddCat
c30393df14 feat(canvas): 画布外观 - 默认使用黑色点网格并保留自定义配置 2026-09-22 15:47:49 +08:00
ddCat
48a82ded74 feat(media): 作品保存恢复 - 按原任务重试交付并避免重复生成计费 2026-09-22 15:47:24 +08:00
ddCat
65f639aa71 fix(canvas): Live2D 外观 - 补齐随部署发布的 Cubism Core 运行库 2026-09-22 14:17:27 +08:00
ddCat
2cbe80369b Merge remote-tracking branch 'origin/pr-589' into codex/pr-557-589-security-integration
# Conflicts:
#	docs/content/docs/backend/http-api.mdx
2026-09-22 11:20:54 +08:00
ddCat
6f4bc29524 Merge remote-tracking branch 'origin/pr-585' into codex/pr-557-589-security-integration 2026-09-22 11:10:48 +08:00
ddCat
5ea9466bb4 fix(agent): 画布助手 - 恢复 Skills 引用提示 2026-09-22 09:35:11 +08:00
AetherNo2332
1637bb9536 fix(cloud-agent): 布局工具参数错误按字段归类,审批卡补整理徽标
- canvas_arrange_nodes 的参数契约错误改用上游既有的 cloudAgentFieldError:
  snapshotHash 缺失按 required、mode/align/gap/nodeIds/groups 非法按 invalid_value、
  nodeIds/groups 超限按 item_count。原先一律 BadAuthRequest(*AppError),按上游运行期的
  errors.As 顺序会走 failCloudAgentAdmission 把整轮判死,模型拿不到可纠正回执。
- 审批卡补 .canvas-agent-approval-operation-arrange_nodes 徽标配色(与新增/修改/连线同一组),
  并补一条前端用例:arrange_nodes 预览项不得被 operation() 当成未知值丢掉。
2026-09-22 01:40:43 +08:00
AetherNo2332
56598108d4 feat(canvas): 云端 Agent 画布布局 - 新增 canvas_arrange_nodes 与新增节点自动落位
云端 Agent 此前只能新建节点与连线,既不会排版也不能移动已有节点:模型只能用几十个
update_node 手算坐标,或者让用户自己拖。

- 新增 backend/internal/canvas/layout:把前端既有的画布布局算法(web/src/lib/canvas/
  canvas-layout.ts,本 PR 不改该文件)按同一套常量移植到服务端,提供 Kahn 拓扑分层 flow、
  媒体泳道 byType、row/column/grid、对齐与等距、分组分带、AABB 重叠检测与空位搜索。
- 新增写工具 canvas_arrange_nodes:snapshotHash 必需,mode∈{auto,flow,byType,row,column,
  grid},可传 nodeIds、groups(只做横向位置分带,不建容器、不改层级)、align、gap、dryRun。
  只改坐标,不改内容、不建连线、不增删节点;一次最多 50 个节点 / 12 组。锁定节点、背板等
  容器、隐藏批次子节点与已归属背板的子节点保持不动并在回执里说明;整批复用现有 mutation
  记录与事件管线,审批与撤销走同一条路径。
- add_node 省略坐标时不再落到 (0,0):优先贴合本批连线的对端(输入在左、输出在右),否则
  追加到同泳道同类节点之后,冲突则扫描空位;只给一个轴时保留该轴。agentCanvasOp.X/Y 改为
  指针以区分"没给坐标"与"坐标 0"。
- update_node 的 patch 新增 x/y(PatchField.Limit 校验 ±1e6),供模型微调单个节点。
- 系统行为策略新增「布局与整理」一节并升版到 8;docs 补工具说明与工具全集;前端同步审批
  预览联合类型、面板文案与徽标。
- 工具 schema 预算按实测从 24000 上调到 25000(21 个工具 24788 字节),并改正注释里
  "上游约 23.4 KB"的说法(上游 20 个工具实测 22777 字节)。
2026-09-22 01:32:20 +08:00
AetherNo2332
4e2df72eeb fix(cloud-agent): 工具失败归类与可行动字段
工具失败此前只有一句自然语言(tool_failed + text),无法区分"模型自己出的错"和真实的
权限/状态/上游问题:模型拿不到可自纠的反馈,排查时分不清该改提示词、改权限还是等上游。

- 新增 backend/internal/app/cloud_agent_tool_error_class.go:把失败归成
  invalid_model_output(幻觉工具名;本轮契约之外、只被 contextScope 挡掉的调用)、
  schema_error(缺必填字段/类型错/未知字段/非法 JSON)、state_conflict(画布在读取之后被改动)、
  permission_violation(只读轮发起写入等真实授权边界)、upstream_failure(上游 4xx/5xx、
  超时、媒体上游拒绝),其余归 tool_error。
- 每类附 retryable 与稳定的 requiredAction(fix_arguments / reread_canvas /
  use_advertised_tools / ask_user / report_to_user),写进 tool_failed 的回执与载荷顶层。
  只加标注:没有任何放行或拒绝逻辑读它。
- 缺必填字段的通用判定:各工具的校验点抛的多是普通 AppError,从错误类型看不出"模型漏了字段"。
  现在用本轮实际暴露的 schema 的 required 与参数比对,命中即按参数契约错误处理(回传 schema 与
  guidance 供模型自纠);只在业务侧确实按参数问题拒绝(400/422)时套用,已分类的参数错误不套壳。
- 幻觉工具名的拒绝文案更具体:过去一律"工具未获本轮权限授权",现在指向"不存在的工具 + 只使用
  本轮工具表里列出的工具"。
- 前端工具卡失败时显示归类标签,比统一的"执行失败"更能说明下一步该做什么。
2026-09-22 00:53:32 +08:00
ddCat
dc1ad68015 fix(*): 素材库与画布 - 修复批量删除刷新、选择布局及工具引用 2026-09-21 20:14:05 +08:00
ddCat
c5b81f696c feat(*): 画布助手 - 新增 Live2D 配置导入与模型渲染支持 2026-09-21 14:11:29 +08:00
ddCat
b8eefdad70 feat(canvas): 模型选择 - 支持彩色展示标签并优化目录与积分交互 2026-09-21 11:11:10 +08:00
ddCat
4ab43ca6f9 fix(ui): 提示浮层 - 修复键盘触发并补真实交互回归
Original-Commit: ff42bb969a037f3271e3da59b752f513c3112b2d
2026-09-21 09:55:26 +08:00
Rou
19c9a207c9 fix(model-picker): 模型选择 - 修复候选报价显示与同渠道模型跳回 (#556)
Original-Commit: 7a5e17e2112c3c23e081a1ecf3c33a654cf1e907
fix(model-picker): 模型选择 - 修复候选报价显示与同渠道模型跳回
2026-09-21 09:37:51 +08:00
AetherNo2332
22d65d0192 fix(web): 基础控件 FloatingDock - 宿主没有 matchMedia 时不再渲染失败 (#563)
Original-Commit: 3da77b3931a675de06b02c1bba93f112d253041b
fix(web): 基础控件 FloatingDock - 宿主没有 matchMedia 时不再渲染失败

`window` 存在不代表 `matchMedia` 存在(SSR 垫片、嵌入式 webview、部分 DOM polyfill),
而 FloatingDock 在渲染期直接取 `window.matchMedia("(pointer: coarse)").matches`,
取不到就抛 TypeError,整个 dock(画布工具栏/素材托盘/缩放控件)渲染失败。
仓库里同一模式已有先例:canvas-workspace-tool-panel 用 typeof 守卫。

抽 coarsePointerQuery():两个都探测,取不到按"非触屏"处理,useEffect 也提前返回;
能取到时行为不变。新增源码级守卫用例(上游原态失败、补丁后通过)。
2026-09-21 09:37:19 +08:00
AetherNo2332
6c92c3be7a chore(web): 前端格式 - 统一十个文件的 Prettier 格式 (#561)
Original-Commit: ade0049c0b80733dfea563bac2aae9260e373cf0
style(web): 前端格式 - 补 Prettier 格式(10 个文件)

这 10 个文件(3 个组件/样式与设置页、4 个 admin 主题与控件、1 个 lib、2 个测试)
用仓库自带 Prettier 检查会 warn,`bun scripts/check-changed-formatting.mjs` 在改动到它们时
会直接判红。本次只做格式化,不改任何行为:合并的 CSS 声明、去掉多余换行与括号、
统一链式调用换行。

验证:prettier --write 后 `check-changed-formatting.mjs` 通过、typecheck 通过、
1940 条前端测试全过、eslint 通过。
2026-09-21 09:37:19 +08:00
AetherNo2332
5e3bc01161 fix(web): 基础控件 Tooltip - 子元素可触发并保留键盘可达性 (#560)
Original-Commit: 38b5909fa78902048345ad8d8e00248660830ad5
fix(web): 基础控件 Tooltip - 子元素可触发并保留键盘可达性

react-aria-components 的 TooltipTrigger 通过 context 下发 hover/focus 处理与 triggerRef,
只有消费该上下文的组件才会真正挂上;原来包一层普通 span,既不读 context 也拿不到 ref,
所以悬停/聚焦都不弹气泡(有定位也无基准)。

包装层改为 Focusable + excludeFromTabOrder:悬停与聚焦都能触发、气泡有定位基准,
外层不占 Tab 位,键盘焦点仍落在内层控件上,导航顺序不变。
2026-09-21 09:37:19 +08:00
ddCat
85de99071d fix(canvas): 云端 Agent - 参数错误有限重试并折叠中间失败 2026-09-21 09:30:38 +08:00
ddCat
a3bf0bd801 feat(canvas): 多模态表格 - 合并 PR #549 并保留本地交互与校验 2026-09-20 17:18:46 +08:00
ddCat
9148ceab66 feat(canvas): 画布工作区 - 整合侧栏与风格预设并修复提示词回填
选择性整合 #547,保留主分支节点与工具条设计。新增默认折叠的节点、资产、任务和历史面板,风格与预设保留在节点内,移除重复入口。

补齐工具权限、提示词解析、资源引用保护及数据库迁移,修复提示词清空和连续编辑后的生成配置同步。

验证:前端全量 1925 项测试、构建、类型检查及 lint 通过;后端 go test ./... 通过。真实模型、PostgreSQL 实库与登录态页面验收仍待进行。

Refs #547

Co-authored-by: bensharp <bensharp@qq.com>
2026-09-20 16:40:08 +08:00
Codex
d87c3944b7 merge: official v1.5.6 with multimodal storyboard enhancements 2026-09-20 13:05:42 +08:00
Codex
6d355380cb feat(canvas): support multimodal video storyboard tables 2026-09-20 12:59:23 +08:00
ddCat
8d94bde1f4 feat(*): 系统渠道与画布 - 支持多规格批量调价及 Agent 入口拖动 2026-09-20 11:18:19 +08:00
ddCat
1be8ffce3b fix(web): 导演台检查 - 隔离开发复现入口的外观初始化请求 2026-09-20 09:35:07 +08:00
ddCat
cfcc53a904 fix(workspace): 创作工作台 - 修复线上样式层级并优化 Agent、菜单与素材密度 2026-09-20 05:29:52 +08:00
ddCat
33908ed117 feat(canvas): 交互可读性 - 优化连线、字号与工作条 2026-09-19 22:29:41 +08:00
ddCat
04a1e19def fix(canvas): 远程媒体 - 统一资源地址并校验视频缓存 2026-09-19 22:29:09 +08:00
ddCat
cb68476e36 fix(canvas): 打光效果 - 保留主干四列预设布局 2026-09-19 21:04:12 +08:00
cn-derekdu
d8e9928ce3 fix(ci): 质量检查 - 同步格式、前端断言与存储降级 2026-09-19 21:04:03 +08:00
libiao320-cmd
6edd8b1e8b fix(canvas): 打光效果 - 修复预设文字重叠 2026-09-19 21:03:54 +08:00
ddCat
16bd4b923b feat(canvas): 生成合同 - 统一节点参数并补充模型上下文能力 2026-09-19 20:32:05 +08:00
ddCat
5eab81261a refactor(web): 样式体系 - 拆分模型选择、滚动条与编辑器样式 2026-09-19 20:28:16 +08:00
Codex
5843d489c6 fix: restore list mode entry in text composer 2026-09-19 20:25:53 +08:00
Codex
f9dc1c561b merge: preserve batch canvas enhancements on v1.5.4 2026-09-19 15:48:07 +08:00
Codex
0e5fb27f06 merge: official v1.5.4 release 2026-09-19 15:36:02 +08:00
Codex
af96824011 fix: harden list mode and batch generation flow 2026-09-19 15:35:11 +08:00
Codex
e94eab883e fix: replace custom context menu with hover X button, restore native right-click 2026-09-19 14:55:41 +08:00
Codex
cf4d2ab10c feat: add right-click and keyboard delete for batch table reference thumbnails
- Right-click on reference thumbnail shows context menu with 删除素材
- Delete/Backspace key removes the hovered reference cell
- Both actions only work within the batch table, on the specific thumbnail
2026-09-19 14:36:20 +08:00
Codex
e921deac74 feat: add list mode for AI-powered batch table generation
- Add text/list toggle in prompt panel
- List mode: AI analyzes connected images + prompt, outputs structured JSON table
- Batch table node renders AI-generated text columns as read-only content
- Column names and row count determined by AI (3-6 columns, N rows)
2026-09-19 14:25:24 +08:00
Codex
27bcca625a feat: 批量创作表增加完整生成设置对话框,参考图上限提升到10
- 新增 BatchGenerationSettingsDialog 组件:模型选择 + 图像质量/尺寸/宽高比/透明背景/生成张数
- 替换原简单确认框为完整设置面板,用户可在生成前调整参数
- 参考图列上限从 6 提升到 10,列宽调整为 72px 以适配
2026-09-19 13:35:15 +08:00
ddCat
237f2e2a6e feat(models): 模型目录与计费 - 按展示名分组并隔离管理员积分成本 2026-09-19 09:54:27 +08:00
ddCat
2682c950c0 fix(canvas): Agent 面板 - 移除 PR #539 QAyong 提交中的无效 hover 背景
PR #539 作者:QAyong
2026-09-19 08:29:58 +08:00
ddCat
dc62109d0d feat(payment): PR #538 支付FM插件 - 合并 Danborad 的支付插件实现 2026-09-19 08:17:47 +08:00
ddCat
39920ec970 feat(canvas): PR #539 Agent 面板 - 合并 QAyong 的回车发送与中文 Skills 触发改进 2026-09-19 08:17:36 +08:00
ddCat
0a06783f44 fix(*): 视频计费与结果解析 - 按 Token 预估展示并解析数组媒体结果 2026-09-19 07:48:08 +08:00
ddCat
2e5092285a fix(canvas): 模型选择 - 按系统渠道聚合模型一级菜单
Co-authored-by: lmj15657306288-ui <lmj15657306288-ui@users.noreply.github.com>

Co-authored-by: ZW-Hao <ZW-Hao@users.noreply.github.com>
2026-09-19 07:18:01 +08:00
QAyong
a07539d458 feat(canvas): Agent 面板 - 支持回车发送并让技能菜单接受中文顿号
画布 Agent 面板的输入框此前有两个中文用户的体验问题:Enter 不发送(只换行),
且技能候选菜单只认 "/" 触发,中文标点状态下按 "/" 打出的是 "、",必须先切回英文。

回车发送:

- canvas-resource-mention-textarea.tsx:sendOnEnter 由 boolean 扩展为 boolean | "both",
  新增 shouldSubmitOnEnter() 统一判定;原来 contentEditable 与 textarea 两处各写一份表达式。
  false 仅 ⌘/Ctrl+Enter 提交(原行为),"both" 两者都提交,Shift+Enter 始终换行。默认仍为 true,
  首页智能创作、批量创作表、短剧工作台三个调用方键位不变。
- canvas-cloud-agent-chat-ui.tsx:改传 sendOnEnter={canSubmit ? "both" : false},
  运行中 Enter 保持换行、不误发;提示文案改为「Enter 发送 · Shift+Enter 换行」,发送按钮 tooltip 同步。
- canvas-cloud-agent.css:快捷键提示原本在 @container (max-width: 520px) 下整条 display: none,
  而默认面板宽度 448px 正落在该区间,等于开箱即用时看不到任何发送键说明;
  改为 .agent-composer-send-hint-full / -compact 两段,窄态降级为短文案「Enter 发送」。

中文顿号触发技能菜单:

- canvas-cloud-agent-chat-ui.tsx:handlePromptChange 的检测正则由 /(^|\s)\/([^\s/]*)$/
  改为 /(^|\s)[/、]([^\s/、]*)$/。保留「行首或紧跟空白」前置条件,
  中文正文里的顿号(如「苹果、香蕉」)不会误触发;applySlashSkill 的替换长度仍为 1,两个触发符都是单字符。
- canvas-cloud-agent-panel.tsx:placeholder 改为「用 / 或 、 引用 Skills」,让两种触发方式可发现。
- canvas-resource-mention-editor.test.ts:同步源码断言(键位、两段提示类名、触发正则、placeholder)。

验证:

- cd web && bun run typecheck 通过。
- bun run lint(改动文件)通过;改动文件按 prettier 校验通过(其余四个文件基线即未格式化,CI 会跳过)。
- bun test test/canvas-resource-mention-editor.test.ts:10 通过 / 1 失败。失败项是同文件既有断言
  expect(css).not.toContain(".agent-tool-row:hover"),而 main 上 canvas-cloud-agent.css 本就含该选择器,
  属于基线既有失败,与本次改动无关(未在本 PR 内顺手修改,避免扩大范围)。
- 触发正则边界用独立脚本实测:、夜景 / 、夜景(前置空白)/ abc /夜 / a\n、x / " @节点 /夜景" 均正确给出
  start 与 query;苹果、香蕉 / abc、夜景 / 、a、 不触发。
- 未启动开发服务,浏览器键位与实际菜单行为待人工验收。
2026-09-19 03:31:41 +08:00
Danborad
11a4320ad8 feat(payment): 支付插件 - 接入支付FM官方标准插件 official-payment-zhifufm 2026-09-19 00:42:57 +08:00