修复 AGC 画布生成、卡片展示与布局交互 #412

Open
suzmii wants to merge 33 commits from feat/agc-canvas-acceptance into master
Member

Closes #411

交付范围与分支

feat/agc-canvas-acceptancemaster;汇总提交 20b1fd63d,已合入 master 195b7dd5d;批量标签实现提交 105591bac

对应 2026-09-17《AGC 画布验收报告》的原六项问题(生成参考、生成占位、资源名称、文档卡、整理画布、多选移动),并追加多选素材批量标签需求。实现及独立 review 均使用 deepseek-flash,主 Agent 核对报告后多轮返修并统一集成。

不包含拖入对话批量 @、复制聊天引用、历史素材替换交互;不修改数据库 schema,不新增远程公开 API。

前后变化、修复方案与落地位置

问题/原行为 修复后行为 主要落地模块
生图表单与本地生成命令没有用户参考链路 复用素材引用输入组件,真实资产 ID 经当前项目/账号绑定进入生成请求 ResourceCanvasAssetGenerationPanelViewresourceCanvasAssetGenerationQueue、原生 canvas_generation
点击直接弹窗、无画布占位,部分工具在入口被禁用 先建临时占位,再打开关联浮层;提交时检查前置。关闭保留草稿,失败可重试,结果接管最新位置 useResourceCanvasGenerationPlaceholdersResourceCanvasGenerationPlaceholderCardViewProjectDevelopmentView
卡面缺少资源名 所有类型统一显示正式 label,单行省略,完整名称提示放在实际命中指针的卡片入口 ResourceCard、卡片样式
文档卡铺正文摘要 居中文档图标与名称;独立预览保留完整正文、JSON/UI 设计能力 ResourceCard、资源预览模型
整理保留手动坐标,看起来无效 显式整理当前栏目全部素材,包含手动及筛选隐藏资源;其他栏目逐值保留,一次撤销恢复坐标和手动标记 useProjectResourceCanvasLayoutresourceCanvasLayoutModel
多选拖动仍按单卡提交 可见选择集按统一缩放位移移动;一次批量 CAS 写、一次历史;取消/失焦回滚,撤销按项目和排序模式隔离 工作台拖动处理、布局模型、resourceCanvasHistoryModel

关键边界与防回归

  • 原生新增可选 referenceAssetIdstargetCategory:真实参考与入口栏目落盘各有明确职责,正式素材分类不由前端伪造。
  • 普通生成最多 5 张参考(含必要规范图),有规范前置时用户最多选 4 张;图集拒绝额外参考,SVG 不进入候选。
  • 任一参考的归属、受控路径、文件、格式或解码失败,在整组预检阶段拒绝;不能先上传前一张再发现后一张本就无效。
  • 复用现有账号 binding、durable 请求快照和计费幂等;不将历史账号远端 ID 直接用于本次请求。
  • 图片任务与音频 operation 分别绑定占位;音频失败重试复用 operation/idempotency 身份,避免新建一次付费意图。
  • 多个生成结果按草稿身份分别登记落点,在真正落点时读取最新占位坐标。
  • GUI 同路径重新生成时,主产物分类按本次入口栏目更新(包括此前手动分类);图集附属切片沿用现有独立分类规则。
  • 资源卡名称沿用正式落盘文件名,可能含时间戳前缀及扩展名,不新增第二套显示名状态。
  • 浮层复用公共外观;正常空间贴占位下沿,高缩放或空间不足时使用占位附近的覆盖布局,内部滚动保证输入/提交可达。

Review 发现及已修复

  1. 参考选择器 portal 被生成弹窗焦点限制阻断、定位超出视口:改为非模态关联浮层,并约束选择器可用空间。
  2. 音频占位未绑定在途身份、结果未接管占位:补提交/失败/重试/成功生命周期。
  3. 入口栏目与正式结果分类不一致导致落点被跳过:原生登记接收 targetCategory,前端按正式投影分类写布局。
  4. 显式整理被系统重算覆盖、在途手动写入吞掉整理:拆分队列意图,按持久化基线与排队意图判定变化。
  5. 撤销跨排序模式写入另一 sidecar:历史作用域隔离。
  6. 长名提示挂在 pointer-events:none 文本上、面板被底栏遮挡:修正实际交互入口及画布安全带几何。
  7. appSurface 跨用例轮询泄漏:仅修用例等待阶段合并和任务终态/轮询退出,不修改生产逻辑或全局 harness。

验证证据

  • 集成工作树:画布/引用/布局等 37 文件,424 项通过。
  • appSurface 全量:450 项通过,20 项跳过,0 失败(修复上述异步测试泄漏后复验)。
  • 集成工作树:原生 reference_ 17 项通过;cargo check --all-targets --offline 通过。
  • 原生实现工作树另完成生成、登记、任务账本与 Direct 专项回归。
  • AGC typecheck、编码检查、文档索引及 diff check 通过。
  • 模拟原生接口的真实浏览器已验证:参考选择与两个引用插入、文档图标/名称/完整正文、141% 缩放下多选同位移与一次撤销。

尚未验证 / 合并前注意

  • 真实付费 Provider 生成及完整 Tauri IPC 联调未执行。
  • 最后一版浮层高度与横向居中尚待真实客户端复验:浏览器连接中断后,末版只有真实矩形宿主测试和独立代码复核。
  • 原生测试已有 background_agent_runtime_can_start_local_preview 的 LLM mock 超时,已在无本批改动基线重复复现;不将其宣称为通过。
  • 极窄窗口、在途布局保存失败后的空撤销步骤等低优边界记录在里程碑文档。
  • 已按用户要求再次合入 master 195b7dd5d,自动合并无冲突;本轮合并态验证结果见下方。远端 master 此后若继续前进,不将本轮结果冒充后续合并态验证。
  • 远程 CI 和合并冲突情况以本 PR 实际状态为准;本次仅提交 PR,不合并。

文档

已同步工作台 PRD、AGC 技术方案、规范驱动里程碑/实施计划及 worktree 测试解析约定。运行时验收尚未完成,因此临时计划保留明确的待验入口。

本次更新:批量标签与最新主线合并

用户可见变化

  • 多选已登记素材,在画布“编辑标签”或资源面板“批量标签”中一次追加标签,显示实际目标数量;单素材编辑仍保留既有增删行为。
  • 不覆盖原标签,不修改素材类型;不支持批量删除标签、批量改类型或 AI 自动分类。
  • 混合选择、目标失效、超限或 CAS 冲突明确拒绝整批,不能只修改首项或静默部分保存。

实现落点

文件/模块 责任
面板 ResourceClassificationPanel.tsx 单/批量模式共用组件与标签 pill,批量只提交待追加草稿;保存锁、错误保留
入口与选择 ResourceCanvasPanelView.tsxresourceBatchTagTargetModel.ts、工作台 index.tsx 复用完整选择集;打开冻结资产 ID;两个入口接线;项目代次与迟到回包拦截
原生 project/manifest.rscommands.rsmain.rs 注册 add_local_project_resource_tags;项目权限/身份/写锁/CAS;全批预检、一次写盘和 revision
验证 classification_tests.rsresourceBatchTagsIntegration 等新测试 保留分类/原标签、no-op、任一目标失败零写、200 项边界、双入口和跨项目异步行为

接口为 input: { projectPath, expectedProjectId, expectedProjectRevision, assetIds, tags },返回 { assets, committedProjectRevision };不修改 manifest schema、数据库或远程 API。原生已写入后若审计/revision 异常会明确说明“已写入”;成功后刷新失败说明“标签已保存,但刷新失败”,不伪报回滚。

新增 review 返修

  • 空白资产 ID 不再静默跳过,整批拒绝。
  • 合并后标签超限指出具体素材 ID/路径及整批未写入。
  • 保存中锁住输入与草稿删除,避免未提交的新输入被成功回包清空。
  • 回读前后均核对项目代次,防止 A→B→A 的迟到回包覆盖当前状态。
  • 首项为版本卡时仍展示禁用的批量入口和原因,两种选择顺序结果一致。

主线整合与验证分层

  • 已合入菜单 PR #410(复用常用操作+更多、卡片信息/类型角标)、引擎预览,以及最新 master 的抠图 #394、开发监听 #382 等更新;不将这些主线功能记作本 PR 新开发。
  • 批量标签阶段:前端 68 项、原生分类 22 项通过;实现者 appSurface 全量 450 项通过、20 项跳过。类型、ESLint、编码/文档索引通过。
  • 本轮 master 合并态:11 文件、137 项定向测试通过,覆盖批量标签、单素材编辑、生成落点、布局、活动回合、项目资源刷新及版本替换;标准 AGC typecheck(含 skill-pack/config)和 Rust all-targets offline check 通过。
  • 自动合并交叉区域经 deepseek-flash 独立只读复核,无阻断发现。真实客户端、实际抠图/Provider 服务联调本轮未运行;历史验证数字不冒充本轮全量测试。
  • 之前 CI 2439 失败项的过期 fixture/契约守卫/空快照断言/EOF 修复已保留;本次新 SHA 的远程 CI 尚未确认,不宣称已通过。
  • 用户要求先完成需求再看 CI,CI 定时任务已删除,本次不恢复监视、不合并 PR、不写飞书。
Closes #411 ## 交付范围与分支 `feat/agc-canvas-acceptance` → `master`;汇总提交 `20b1fd63d`,已合入 master `195b7dd5d`;批量标签实现提交 `105591bac`。 对应 2026-09-17《AGC 画布验收报告》的原六项问题(生成参考、生成占位、资源名称、文档卡、整理画布、多选移动),并追加多选素材批量标签需求。实现及独立 review 均使用 deepseek-flash,主 Agent 核对报告后多轮返修并统一集成。 不包含拖入对话批量 @、复制聊天引用、历史素材替换交互;不修改数据库 schema,不新增远程公开 API。 ## 前后变化、修复方案与落地位置 | 问题/原行为 | 修复后行为 | 主要落地模块 | | --- | --- | --- | | 生图表单与本地生成命令没有用户参考链路 | 复用素材引用输入组件,真实资产 ID 经当前项目/账号绑定进入生成请求 | `ResourceCanvasAssetGenerationPanelView`、`resourceCanvasAssetGenerationQueue`、原生 `canvas_generation` | | 点击直接弹窗、无画布占位,部分工具在入口被禁用 | 先建临时占位,再打开关联浮层;提交时检查前置。关闭保留草稿,失败可重试,结果接管最新位置 | `useResourceCanvasGenerationPlaceholders`、`ResourceCanvasGenerationPlaceholderCardView`、`ProjectDevelopmentView` | | 卡面缺少资源名 | 所有类型统一显示正式 label,单行省略,完整名称提示放在实际命中指针的卡片入口 | `ResourceCard`、卡片样式 | | 文档卡铺正文摘要 | 居中文档图标与名称;独立预览保留完整正文、JSON/UI 设计能力 | `ResourceCard`、资源预览模型 | | 整理保留手动坐标,看起来无效 | 显式整理当前栏目全部素材,包含手动及筛选隐藏资源;其他栏目逐值保留,一次撤销恢复坐标和手动标记 | `useProjectResourceCanvasLayout`、`resourceCanvasLayoutModel` | | 多选拖动仍按单卡提交 | 可见选择集按统一缩放位移移动;一次批量 CAS 写、一次历史;取消/失焦回滚,撤销按项目和排序模式隔离 | 工作台拖动处理、布局模型、`resourceCanvasHistoryModel` | ## 关键边界与防回归 - 原生新增可选 `referenceAssetIds` 与 `targetCategory`:真实参考与入口栏目落盘各有明确职责,正式素材分类不由前端伪造。 - 普通生成最多 5 张参考(含必要规范图),有规范前置时用户最多选 4 张;图集拒绝额外参考,SVG 不进入候选。 - 任一参考的归属、受控路径、文件、格式或解码失败,在整组预检阶段拒绝;不能先上传前一张再发现后一张本就无效。 - 复用现有账号 binding、durable 请求快照和计费幂等;不将历史账号远端 ID 直接用于本次请求。 - 图片任务与音频 operation 分别绑定占位;音频失败重试复用 operation/idempotency 身份,避免新建一次付费意图。 - 多个生成结果按草稿身份分别登记落点,在真正落点时读取最新占位坐标。 - GUI 同路径重新生成时,主产物分类按本次入口栏目更新(包括此前手动分类);图集附属切片沿用现有独立分类规则。 - 资源卡名称沿用正式落盘文件名,可能含时间戳前缀及扩展名,不新增第二套显示名状态。 - 浮层复用公共外观;正常空间贴占位下沿,高缩放或空间不足时使用占位附近的覆盖布局,内部滚动保证输入/提交可达。 ## Review 发现及已修复 1. 参考选择器 portal 被生成弹窗焦点限制阻断、定位超出视口:改为非模态关联浮层,并约束选择器可用空间。 2. 音频占位未绑定在途身份、结果未接管占位:补提交/失败/重试/成功生命周期。 3. 入口栏目与正式结果分类不一致导致落点被跳过:原生登记接收 targetCategory,前端按正式投影分类写布局。 4. 显式整理被系统重算覆盖、在途手动写入吞掉整理:拆分队列意图,按持久化基线与排队意图判定变化。 5. 撤销跨排序模式写入另一 sidecar:历史作用域隔离。 6. 长名提示挂在 pointer-events:none 文本上、面板被底栏遮挡:修正实际交互入口及画布安全带几何。 7. appSurface 跨用例轮询泄漏:仅修用例等待阶段合并和任务终态/轮询退出,不修改生产逻辑或全局 harness。 ## 验证证据 - 集成工作树:画布/引用/布局等 37 文件,424 项通过。 - appSurface 全量:450 项通过,20 项跳过,0 失败(修复上述异步测试泄漏后复验)。 - 集成工作树:原生 `reference_` 17 项通过;`cargo check --all-targets --offline` 通过。 - 原生实现工作树另完成生成、登记、任务账本与 Direct 专项回归。 - AGC typecheck、编码检查、文档索引及 diff check 通过。 - 模拟原生接口的真实浏览器已验证:参考选择与两个引用插入、文档图标/名称/完整正文、141% 缩放下多选同位移与一次撤销。 ## 尚未验证 / 合并前注意 - 真实付费 Provider 生成及完整 Tauri IPC 联调未执行。 - 最后一版浮层高度与横向居中尚待真实客户端复验:浏览器连接中断后,末版只有真实矩形宿主测试和独立代码复核。 - 原生测试已有 `background_agent_runtime_can_start_local_preview` 的 LLM mock 超时,已在无本批改动基线重复复现;不将其宣称为通过。 - 极窄窗口、在途布局保存失败后的空撤销步骤等低优边界记录在里程碑文档。 - 已按用户要求再次合入 master `195b7dd5d`,自动合并无冲突;本轮合并态验证结果见下方。远端 master 此后若继续前进,不将本轮结果冒充后续合并态验证。 - 远程 CI 和合并冲突情况以本 PR 实际状态为准;本次仅提交 PR,不合并。 ## 文档 已同步工作台 PRD、AGC 技术方案、规范驱动里程碑/实施计划及 worktree 测试解析约定。运行时验收尚未完成,因此临时计划保留明确的待验入口。 ## 本次更新:批量标签与最新主线合并 ### 用户可见变化 - 多选已登记素材,在画布“编辑标签”或资源面板“批量标签”中一次追加标签,显示实际目标数量;单素材编辑仍保留既有增删行为。 - 不覆盖原标签,不修改素材类型;不支持批量删除标签、批量改类型或 AI 自动分类。 - 混合选择、目标失效、超限或 CAS 冲突明确拒绝整批,不能只修改首项或静默部分保存。 ### 实现落点 | 层 | 文件/模块 | 责任 | | --- | --- | --- | | 面板 | `ResourceClassificationPanel.tsx` | 单/批量模式共用组件与标签 pill,批量只提交待追加草稿;保存锁、错误保留 | | 入口与选择 | `ResourceCanvasPanelView.tsx`、`resourceBatchTagTargetModel.ts`、工作台 `index.tsx` | 复用完整选择集;打开冻结资产 ID;两个入口接线;项目代次与迟到回包拦截 | | 原生 | `project/manifest.rs`、`commands.rs`、`main.rs` | 注册 `add_local_project_resource_tags`;项目权限/身份/写锁/CAS;全批预检、一次写盘和 revision | | 验证 | `classification_tests.rs`、`resourceBatchTagsIntegration` 等新测试 | 保留分类/原标签、no-op、任一目标失败零写、200 项边界、双入口和跨项目异步行为 | 接口为 `input: { projectPath, expectedProjectId, expectedProjectRevision, assetIds, tags }`,返回 `{ assets, committedProjectRevision }`;不修改 manifest schema、数据库或远程 API。原生已写入后若审计/revision 异常会明确说明“已写入”;成功后刷新失败说明“标签已保存,但刷新失败”,不伪报回滚。 ### 新增 review 返修 - 空白资产 ID 不再静默跳过,整批拒绝。 - 合并后标签超限指出具体素材 ID/路径及整批未写入。 - 保存中锁住输入与草稿删除,避免未提交的新输入被成功回包清空。 - 回读前后均核对项目代次,防止 A→B→A 的迟到回包覆盖当前状态。 - 首项为版本卡时仍展示禁用的批量入口和原因,两种选择顺序结果一致。 ### 主线整合与验证分层 - 已合入菜单 PR #410(复用常用操作+更多、卡片信息/类型角标)、引擎预览,以及最新 master 的抠图 #394、开发监听 #382 等更新;不将这些主线功能记作本 PR 新开发。 - 批量标签阶段:前端 68 项、原生分类 22 项通过;实现者 appSurface 全量 450 项通过、20 项跳过。类型、ESLint、编码/文档索引通过。 - 本轮 master 合并态:11 文件、137 项定向测试通过,覆盖批量标签、单素材编辑、生成落点、布局、活动回合、项目资源刷新及版本替换;标准 AGC typecheck(含 skill-pack/config)和 Rust all-targets offline check 通过。 - 自动合并交叉区域经 deepseek-flash 独立只读复核,无阻断发现。真实客户端、实际抠图/Provider 服务联调本轮未运行;历史验证数字不冒充本轮全量测试。 - 之前 CI 2439 失败项的过期 fixture/契约守卫/空快照断言/EOF 修复已保留;本次新 SHA 的远程 CI 尚未确认,不宣称已通过。 - 用户要求先完成需求再看 CI,CI 定时任务已删除,本次不恢复监视、不合并 PR、不写飞书。
suzmii added 26 commits 2026-09-17 20:04:43 +08:00
统一生成占位与参考、资源卡展示和布局交互的验收要求

补充单里程碑并行实现计划和独立评审门禁
明确参考图片入参、账号绑定与恢复校验

固定栏目整理撤销、多选范围与素材名称来源
普通生成最多五张参考,图集拒绝额外参考

复用现有引用快照并核验恢复校验,明确里程碑验收边界
补齐共享包测试别名以避免复用依赖指向其他工作树

记录工作树依赖复用的解析检查要求
使用独立工作树处理原生引用,固定引用资产ID接缝
新增参考图模型:候选为当前项目已登记图片,用户参考上限普通生成 5 张、带规范前置 4 张、图集为 0
生成浮层复用资源引用输入组件,提示词里的 @ 引用直接产出当前 manifest 资产 ID 作为参考
生成任务与队列新增 referenceAssetIds,派发时以 referenceAssetIds 交给原生侧解析账号绑定
图集入口不呈现参考选择器,超限在提交前给出原因并挡住提交,不做静默截断
补充参考模型、面板接线与队列派发的定向测试
- 资源卡新增卡面名称条,所有类型卡统一显示正式资源 label,长名单行省略、完整名进 title

- 文档卡卡面改为居中图标,不再把正文前几行铺在卡面上,正文只在独立详情浮层读取

- 删除卡面正文摘要的取文本 helper 与行数/长度常量,移除对应 CSS 规则不留墓碑

- 名称条按媒体卡让出右下播放钮位置,替换血缘角标上移避免遮住名称

- 新增资源卡名称与文档卡卡面用例,并同步重命名链路与卡面正文的既有断言
统一卡面名称和文档图标展示要求

明确当前栏目整理与多选移动的撤销边界
- 完整资源名改挂在覆盖整卡、真正命中指针的选中按钮 title 上,名称条自身不再挂悬停不到的 title

- 无障碍名保持原有 aria-label 不变,长名仍是 CSS 单行省略

- 断言改为校验选中按钮 title,并钉住名称条不挂 title

- 文档卡分支注释只写当前行为,去掉旧实现说明
- 整理画布重排目标栏目内全部素材(含手动坐标与被筛选隐藏的卡),「所有资源」页覆盖全部栏目
- 栏外坐标逐值保留:不再把其他栏目的自动坐标丢给重算,避免被顺带规整成规范槽位
- 手动标记纳入历史快照与相等判定,撤销整理恢复原坐标与原手动标记
- 新增批量坐标写入入口:多选拖动与撤销都只排一笔 CAS、只压一条历史
- 多选拖动按同一位移整批跟随,取消 / 捕获丢失 / 失焦回滚,切项目丢弃进行中的位移
- 补测试:栏外自动坐标保留、all 页整理范围、批量撤销与取消边界
新增 referenceAssetIds 原生入参:start_local_project_asset_generation 与 generate_local_project_asset 经 prepare_local_project_asset_generation 统一收口当前项目 manifest 图片素材 id
PlatformArtAssetGenerationOptions 增加 reference_asset_ids,GUI、agent 桥、media 观察与 Direct 运行时构造点显式传空
参考解析固定规范图前置在前、用户参考按给出顺序随后,按远端资源 ID 去重,普通生成总量 5 张、有规范前置 4 张用户参考,图集拒绝额外参考而非静默丢弃
参考素材复用 manifest 到本地文件、图片解码、内容 hash、当前账号 binding 上传的既有通道,历史账号遗留远端 ID 不再复用
retained 阶段与清单校验改为与提交同一套请求合同:icon-spec、ui-prototype、game-background 允许正确引用,art-spritesheet 仍只接受唯一规范引用
修复 Part::file_name 的生命周期错误与 4 处测试构造点少传参考参数
排除不可解码SVG参考并约束上传权限与账号归属判据
- 显式整理与「关系图首次就绪」各占一个队列槽,系统重算不再改写用户已按下的那笔整理
- 资源签名同步覆盖排队中的每一笔资源意图,先落盘的那笔不会把后一笔留成过期签名
- 撤销栈按「项目 + 排序模式」隔离:切模式后不会把另一份 sidecar 的坐标写过去
- 整理的「有没有变化」判据与落盘同源,目标栏目还有在途/排队手动落点时也算一次真实变化
- 删除本次改动退役且已无调用方的 resourceBookAllBandLocalPoint 与布局 dragX/dragY
- 补回归:排队中整理不被覆盖、切模式撤销不跨写、在途拖动后整理照常生效、分类变更后拖动按新栏目落盘
工具点击先在当前栏目创建临时占位卡,生成浮层挂在占位下沿;图片、音效、背景音乐入口一致
占位按项目与草稿 ID 归属宿主临时状态:可拖动、提交绑定任务 ID、成功结果落到占位最新位置
删除占位只隐藏展示,关闭浮层不冒充取消后台任务;失败保留占位与输入引用供重试
生成面板改为非模态浮层:ThemedModal 焦点陷阱曾阻断 portal 到 body 的引用选择器,点选不生效
引用选择器定位加顶边钳制,搜索收窄与键盘选择可用;不再越出视口
参考候选与陈旧引用校验排除 SVG(原生解码不支持),其余 image 类型不额外收窄
任务创建处对参考资产 ID 去重;补浮层真实组件整合、占位模型与拖动、参考模型回归测试
参考解析前增加纯本地预检:清单归属、受控路径与文件、媒体类型、可解码位图全部通过后才允许产生任何上传副作用,避免第一张参考已上传、第二张坏图才失败
明确拒绝 SVG 等矢量参考,媒体类型或文件扩展名任一命中即拒,本次不做矢量转换,坏图同样在本地失败关闭
asset.upload 门禁提前到预检阶段,显式拒绝该命令的项目连第一个上传凭证都不会签发
预检与实际上传共用同一份本地判据 helper,不新建平行流程,上传侧仍按同一判据重新读取与解码
补参考合同与恢复的账本用例:icon-spec 带用户参考、game-background 规范图加用户参考、图集超限、空白引用写入失败
补提交侧用例:拒绝路径、未登记、非图片、缺失文件、超限、SVG 与坏图,并断言零上传凭证与零生成 POST,反向验证同一张合格参考单独提交确实会签发凭证
补 asset.upload 拒绝用例,以及清单校验与 Direct 身份校验接受用户参考、拒绝用户参考顶替规范引用的覆盖
明确切模式后新操作会替换旧撤销栈但不会跨写布局
生成浮层的草稿、错误与占位归属统一按 draftId 判等,动作 ID 已无读取方,删掉避免留下死状态
打开生成浮层时把占位与浮层整块带进安全区(避开顶栏底栏),只做最小视口平移不改缩放
落点意图改为按草稿 ID 的 Map,避免并发完成互相覆盖;坐标在落点时刻取占位最新位置
落点 section 改用资源正式归类后的 category,修复图片落待归类、规范落文档时静默跳过
音频与背景音乐提交绑定占位与 operationId:在途时拒绝再次提交,失败保留输入并可同 operation 重试
宿主记录收起浮层时的草稿与音频提交身份,重开占位接着编辑而不是回到空表单
生成任务新增入口栏目 targetCategory 走原生可选入参,前端不据此伪分类
补可见性平移的定向测试
GUI 生成命令新增可选 targetCategory:generate_local_project_asset 与 start_local_project_asset_generation 经 options 传入完成登记
PlatformArtAssetGenerationOptions 增加 target_category,Agent 与 Direct 路径保持 None,仍按 kind 派生默认分类
新建条目与同 kind 重登记都按显式目标分类写入 manifest 既有 category 字段,不新增字段、不改数据结构
目标分类只接受 GameCreationAppAssetCategory 的六个合法值,version 与 all 等栏目伪值在提交前失败关闭
target_category 刻意不进 standalone 指纹与 durable 请求快照,分类只影响本地 manifest 落点,避免在途账本换槽重复 POST,同任务幂等恢复由调用方继续用同一栏目提交
补用例:kind=image 带 targetCategory=character 落到 character 而不是 unclassified、非法栏目值不产生生成请求、登记入口的显式分类与不传时的原 kind 派生行为
appSurface 图集/图标规范入口的提示词仍是 textarea,helper 不能只走 Lexical 编辑器 API
两种字段分别用原生 change 与编辑器 update,读回同样两种口径
补 targetCategory 随任务保存与恢复的断言
明确原生目标分类、音频幂等及画布浮层可见性
浮层复用模态的面板类:边框圆角底色内边距与 header 排布不再缺失
高度上界按真实画布可用底边算(画布高减退底栏安全区与顶边),空间紧时收紧并内部滚动
提交动作行固定在浮层底部,避免长表单把提交按钮顶到底栏下面
新增浮层高度模型测试、结构 CSS 钉子与浮层 chrome 断言
新增宿主级整合用例:图片按正式归类落点并用占位最新位置、音频失败保留与幂等重试
- 新增测试文件 resourceCanvasGenerationHostLifecycle.test.tsx,渲染真实 ProjectDevelopmentView
- 覆盖音频入口:点工具出占位、提交后占位进入 submitted(后台仍在跑时的中间态)
- 覆盖失败后原请求重试:复用同一 operationId 与幂等键,不会变成新的付费生成
- 覆盖成功后落点:结果卡按占位位置落盘(手动接管),占位随之被撤掉
- 原生命令全部走假实现,不触发任何真实 Provider 调用
补回 transform translateX(-50%):锚点给的是占位卡中心,少了它浮层整体右偏半个面板宽
高度只按画布安全带分配:装得下时挂在卡下面,装不下时与卡顶边对齐盖住占位,不再压成一百多像素
reveal 的面板高度按当前缩放从屏幕 px 折回世界坐标,占位与浮层并集参与可见性
浮层宽度并入可见性并集,靠边卡片不再把浮层切掉一半
新增真实矩形模拟用例(画布高 568)核对浮层高度与落点不越出安全带
- 阶段文案与徽标改用 waitFor:本地队列的「排队中。」先于后端记录合并,同步断言在整套连跑时抢跑
- 用例收尾连等两个 poll 周期(2s)并断言账本读计数不再增长,确认这条轮询链在本用例内退出
- 留在线上的轮询醒来会打进下一个用例的 spy(宿主按调用时读 __TAURI__),故排空放在用例内,未动全局 harness
- 未改生产:后台任务跨面板保活保持原样
记录画布验收修复的验证证据与待验边界
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
45c3780bf5
登记自动化回归和独立评审结论

保留真实客户端与付费生成待验项及远程写入确认边界
suzmii added 1 commit 2026-09-17 20:15:42 +08:00
合并最新主分支并修复画布静态检查问题
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 7m19s
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Failing after 7m30s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 7m28s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Failing after 7m41s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m11s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m10s
Project CI / Native shell tests (pull_request) Failing after 4m28s
Project CI / Frontend tests (pull_request) Failing after 5m12s
Project CI / Backend tests (pull_request) Successful in 7m17s
Project CI / Repository checks (pull_request) Failing after 5m43s
Project CI / AI game creator shell web tests (pull_request) Failing after 4m34s
db5edc948c
合入master的更新摘要、策划运行边界及图集契约调整

保留画布生成引用占位、资源卡展示与批量布局功能

修正导入顺序、未使用项和稳定回调依赖
suzmii added 5 commits 2026-09-17 22:20:30 +08:00
补齐图集切分声明与工具目录字段边界断言

更新原生HTTP权限守卫及稳定空快照发布次数期望

修正末尾空行并记录CI排查证据,保留待远程验证状态
合入PR410的常用操作收纳与卡片信息类型入口

保留本分支资源名称、文档图标、占位生成与批量移动能力

整合引擎结构摘要与当前图集测试契约
限定追加语义、冻结对象、原子保存与类型保留边界

记录已评审里程碑及前后端并行实现计划
复用标签编辑器并冻结整组选中素材,保留原标签与素材类型

原生批量校验后一次保存,覆盖权限、版本冲突与无变化边界

修复保存输入锁和切项目迟到回包,补齐混合选择入口原因

新增前后端回归并记录本地验证及待真实客户端验收事项
合并最新主线抠图链路与开发监听修复
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 6m44s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 6m55s
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 7m3s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m9s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m30s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 4m41s
Project CI / Native shell tests (pull_request) Successful in 15m5s
Project CI / Repository checks (pull_request) Successful in 16m54s
Project CI / Backend tests (pull_request) Successful in 19m49s
Project CI / Frontend tests (pull_request) Successful in 23m33s
Project CI / AI game creator shell web tests (pull_request) Successful in 11m6s
20b1fd63de
合入master的抠图账本链路、Vite监听边界及窗口测试更新

保留画布占位参考生成、资源展示与批量标签追加功能

合并态通过137项定向测试、AGC类型检查及Rust全目标编译
lhk229 added 1 commit 2026-09-18 01:04:06 +08:00
Merge branch 'master' into feat/agc-canvas-acceptance
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
f5a333b839
Some checks are pending
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
This pull request has changes conflicting with the target branch.
  • apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs
  • apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs
  • apps/ai-game-creator-shell/src-tauri/src/agent/generation/canvas_generation.rs
  • apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/media.rs
  • apps/ai-game-creator-shell/src-tauri/src/commands.rs
  • apps/ai-game-creator-shell/src-tauri/src/tests/project.rs
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/agc-canvas-acceptance:feat/agc-canvas-acceptance
git checkout feat/agc-canvas-acceptance
Sign in to join this conversation.