Feat: 完善 Game Agent 资源画板与图片精修链路 #176

Merged
kdletters merged 33 commits from codex/game-agent-resource-workbench into master 2026-08-24 16:27:33 +08:00
Member

摘要

本 PR 将 Game Agent 资源管理页升级为真实自由画板,并打通图片资源的快速编辑、候选生成、导入、失败归档与正式图提交流程。

同时补齐图片精修的事务恢复、候选身份校验、生成中任务恢复、鉴权重试,以及“设为最终图”后游戏运行资源的稳定刷新链路。

主要变更

1. 资源管理页自由画板

  • “按依赖”视图改为统一自由画板:
    • 支持指针拖拽平移
    • 滚轮平移
    • Ctrl / Meta + wheel 以指针为锚点缩放
    • 支持复位和全量资源适配
  • 增加隐藏导航边界:
    • 边界由全量资源世界范围加安全留白决定
    • 搜索过滤不会缩小边界
    • 用户不能把全部资源拖出可视区域
  • 图片资源卡按真实宽高比展示:
    • 预览读取真实 pixelWidth / pixelHeight
    • 布局碰撞、世界范围、依赖连线共同消费同一资源矩形
    • 非图片资源保持固定卡片尺寸
  • 点击资源改为非模态详情卡:
    • 背景画板不卸载
    • 顶部工具栏、搜索、排序、缩放状态不重置
    • 图片详情不再进入全屏页

2. 图片资源快速编辑与精修画布

  • 点击图片资源后直接显示快速编辑卡。
  • 图片精修顶栏收敛为紧凑操作:
    • 返回
    • 导入
    • 定位当前最终图
    • 撤销 / 重做
  • 删除、修改、设为最终图进入选中图片的上下文卡片。
  • 快速编辑生成不再阻塞整张画布:
    • 立即创建生成占位卡
    • 占位卡可拖动并持久化位置
    • 右上任务列表显示排队 / 生成中 / 完成 / 失败状态
    • 任务列表可折叠
  • 生成失败只影响当前任务:
    • 保留失败占位
    • 可显式归档失败任务
    • reconciliation-required 任务不允许删除
  • 原生多选图片导入:
    • 使用 Tauri 原生文件选择
    • 后端批量安全读取
    • 一次推进草稿 revision
    • 失败不留下半导入状态

3. 候选图与正式图事务

  • 生成成功只加入草稿私有候选层,不直接修改 manifest。

  • “设为最终图”是唯一正式资源切换入口。

  • refine 保持原 asset ID 和来源身份,不追加新的业务资产身份。

  • 正式文件使用不可变路径:

    assets/canvas/<name>--<commitId>.png
    
## 摘要 本 PR 将 Game Agent 资源管理页升级为真实自由画板,并打通图片资源的快速编辑、候选生成、导入、失败归档与正式图提交流程。 同时补齐图片精修的事务恢复、候选身份校验、生成中任务恢复、鉴权重试,以及“设为最终图”后游戏运行资源的稳定刷新链路。 ## 主要变更 ### 1. 资源管理页自由画板 - “按依赖”视图改为统一自由画板: - 支持指针拖拽平移 - 滚轮平移 - `Ctrl / Meta + wheel` 以指针为锚点缩放 - 支持复位和全量资源适配 - 增加隐藏导航边界: - 边界由全量资源世界范围加安全留白决定 - 搜索过滤不会缩小边界 - 用户不能把全部资源拖出可视区域 - 图片资源卡按真实宽高比展示: - 预览读取真实 `pixelWidth / pixelHeight` - 布局碰撞、世界范围、依赖连线共同消费同一资源矩形 - 非图片资源保持固定卡片尺寸 - 点击资源改为非模态详情卡: - 背景画板不卸载 - 顶部工具栏、搜索、排序、缩放状态不重置 - 图片详情不再进入全屏页 ### 2. 图片资源快速编辑与精修画布 - 点击图片资源后直接显示快速编辑卡。 - 图片精修顶栏收敛为紧凑操作: - 返回 - 导入 - 定位当前最终图 - 撤销 / 重做 - 删除、修改、设为最终图进入选中图片的上下文卡片。 - 快速编辑生成不再阻塞整张画布: - 立即创建生成占位卡 - 占位卡可拖动并持久化位置 - 右上任务列表显示排队 / 生成中 / 完成 / 失败状态 - 任务列表可折叠 - 生成失败只影响当前任务: - 保留失败占位 - 可显式归档失败任务 - `reconciliation-required` 任务不允许删除 - 原生多选图片导入: - 使用 Tauri 原生文件选择 - 后端批量安全读取 - 一次推进草稿 revision - 失败不留下半导入状态 ### 3. 候选图与正式图事务 - 生成成功只加入草稿私有候选层,不直接修改 manifest。 - “设为最终图”是唯一正式资源切换入口。 - refine 保持原 asset ID 和来源身份,不追加新的业务资产身份。 - 正式文件使用不可变路径: ```text assets/canvas/<name>--<commitId>.png
suzmii added 14 commits 2026-08-22 18:14:25 +08:00
新增 AssetCanvasSurface 点击重构前备份。

新增素材画布样式点击重构前备份。
图片预览返回并透传像素宽高。

统一计算图片卡边界并让布局碰撞、自动位置和分区范围消费实际尺寸。

依赖连线按逐资源矩形计算端点并补充模型与预览测试。
将资源依赖视图改为统一自由画板,并增加真实比例卡片和隐藏导航边界。

复用素材画布实现图片快速编辑、候选生成、导入、失败任务归档和正式图提交。

补齐原生事务恢复、服务身份确认、全屏失败遮罩及任务列表交互。

同步资源投影、布局、预览、前后端测试和技术文档。
保留资源自由画板、详情卡与图片精修交互。

接入主分支UI设计资源创建与编辑入口。

合并主分支凭据目录权限和画布相关更新。
美术资源与恢复结果提交后发送manifest失效事件。

直连回合失败或超时后仍对账已提交资源。

完善UI编辑器与资源工作台的返回和布局边界。

补充实时刷新回归测试与技术决策文档。
在资源画板根节点禁用文本选择,覆盖依赖与类型视图。

保留详情卡与资源编辑表单的文本交互。

补充资源工作台样式回归测试。
将上下文、参考图和首次提交阶段的401账本保留为可恢复状态。

区分401鉴权失效与403权限拒绝,刷新后复用原生成身份和幂等请求。

补充持久化账本重放回归测试与登录刷新验收合同。
统一解析精修素材名并剥离历史提交后缀

将候选提交参数校验前移到零副作用阶段

严格识别被后续提交取代的旧事务并增加并发提交门禁

支持生成占位卡拖动和精修候选唯一提交

补充素材画布回归测试与合同文档
合入master的直连Codex、受控Skill、工具桥与首页创作入口改造

保留资源画布精修、生成占位拖动与失败任务归档链路

修正三项内置AGC Skill内容指纹并保持审核包版本

对齐master合入后的Rust格式与项目开发前端测试
为生成账本增加候选层首次确认修订记录

未确认候选在普通草稿保存中被后端合并保留

恢复画布时从私有账本重建未确认候选层

前端水合后同步运行时引用并立即确认保存
提交精修后刷新游戏引用的稳定入口字节

记录运行入口并在幂等重放与恢复中修复

补充稳定入口回归测试与技术合同
保留master的npm workspaces与内置Skill指纹修复

恢复并保留双方项目决策记录

补记精修最终图稳定运行入口决策
用Prettier忽略保持根锁路径声明单行

恢复check-native-shells精确源码守卫匹配
修复旧精修事务稳定入口迁移
Project CI / Frontend tests (pull_request) Successful in 4m36s
Project CI / Repository checks (pull_request) Successful in 4m57s
Project CI / Backend tests (pull_request) Successful in 5m43s
Project CI / Native shell tests (pull_request) Successful in 16m22s
52a58f7514
从已校验旧事务快照推导原稳定入口路径

允许稳定入口缺失时在下一次提交重建

补充旧事务连续精修回归测试与文档
suzmii requested review from kdletters 2026-08-22 18:48:12 +08:00
kdletters requested changes 2026-08-22 21:14:13 +08:00
kdletters left a comment
Member

当前 head 仍有 5 个由 PR 176 直接引入的阻塞项:生成请求失败后会遗留永久 running 的公开记录;候选完成态和失败归档态都在对应草稿事实落盘前写成终态,崩溃恢复会跳过未完成事务;新增 Host Port 方法被声明为可选,违反冻结的结构化 unsupported 契约;快速编辑卡未按 viewport 边界钳制。请按行内建议修复,并补齐失败注入/重启恢复、宿主能力合同和四边 viewport 回归。master 既有旧债未混入本次请求更改,将单独在 master 修复。

当前 head 仍有 5 个由 PR 176 直接引入的阻塞项:生成请求失败后会遗留永久 running 的公开记录;候选完成态和失败归档态都在对应草稿事实落盘前写成终态,崩溃恢复会跳过未完成事务;新增 Host Port 方法被声明为可选,违反冻结的结构化 unsupported 契约;快速编辑卡未按 viewport 边界钳制。请按行内建议修复,并补齐失败注入/重启恢复、宿主能力合同和四边 viewport 回归。master 既有旧债未混入本次请求更改,将单独在 master 修复。
@@ -2261,0 +3254,4 @@
set_private_phase(
root,
&mut ledger,
GenerationLedgerPhase::CandidateReady,
Member

[P1] CandidateReady 不能早于候选事实落盘。这里先把私有 ledger 写成恢复逻辑会直接视为终态的 CandidateReady,下一行 persist_generation_candidate_at 仍可能因草稿写入、revision 或 I/O 失败退出;重启后恢复入口会跳过重放/直接读取尚不存在的候选,形成无法自动收敛的终态账本。请先以幂等方式持久化候选草稿/图层并回读成功,再推进终态,或增加可重放的中间 phase;补在两次写之间故障注入并重启恢复的测试。

[P1] `CandidateReady` 不能早于候选事实落盘。这里先把私有 ledger 写成恢复逻辑会直接视为终态的 `CandidateReady`,下一行 `persist_generation_candidate_at` 仍可能因草稿写入、revision 或 I/O 失败退出;重启后恢复入口会跳过重放/直接读取尚不存在的候选,形成无法自动收敛的终态账本。请先以幂等方式持久化候选草稿/图层并回读成功,再推进终态,或增加可重放的中间 phase;补在两次写之间故障注入并重启恢复的测试。
@@ -2459,0 +3537,4 @@
}
ledger.phase = GenerationLedgerPhase::Archived;
ledger.archived_at = Some(asset_canvas_now());
write_generation_ledger(root, &mut ledger)?;
Member

[P1] 归档终态写在草稿删除之前会留下永久半归档。此处 ledger 已写成 Archived 后,草稿移除 generation 的写入仍可能失败;恢复扫描会跳过 Archived,而再次归档又受调用方持有的旧 revision/公开记录状态影响,导致任务在草稿中残留且无法可靠收敛。请使用可恢复的中间 phase/事务 journal,确保草稿删除成功并回读后才发布 Archived,且重放保持幂等;补 ledger 写成功、draft 写失败后的重启恢复测试。

[P1] 归档终态写在草稿删除之前会留下永久半归档。此处 ledger 已写成 `Archived` 后,草稿移除 generation 的写入仍可能失败;恢复扫描会跳过 Archived,而再次归档又受调用方持有的旧 revision/公开记录状态影响,导致任务在草稿中残留且无法可靠收敛。请使用可恢复的中间 phase/事务 journal,确保草稿删除成功并回读后才发布 Archived,且重放保持幂等;补 ledger 写成功、draft 写失败后的重启恢复测试。
@@ -1727,0 +2337,4 @@
createdAt: Date.now(),
updatedAt: Date.now(),
};
const initialGenerationRecord: ImageCanvasGenerationRecord = {
Member

[P1] 不要在宿主接受生成前持久化无法收敛的 running 记录。这里把 generation-running 先塞进 draft 并由后续 persistDraft() 落盘;如果 generateImage 在创建私有 ledger 前失败或抛错,下面只更新内存 task/lifecycle,没有移除或持久化失败后的 generation。刷新后公开记录会永久显示运行中,恢复又找不到对应私有账本。请让占位与宿主创建生成形成可恢复事务:失败时以当前 revision CAS 删除/终结该记录并持久化,或由后端原子创建权威记录后再 hydrate;补“草稿保存成功、生成调用失败/抛错、刷新恢复后无幽灵 running 任务”的回归。

[P1] 不要在宿主接受生成前持久化无法收敛的 running 记录。这里把 `generation-running` 先塞进 draft 并由后续 `persistDraft()` 落盘;如果 `generateImage` 在创建私有 ledger 前失败或抛错,下面只更新内存 task/lifecycle,没有移除或持久化失败后的 generation。刷新后公开记录会永久显示运行中,恢复又找不到对应私有账本。请让占位与宿主创建生成形成可恢复事务:失败时以当前 revision CAS 删除/终结该记录并持久化,或由后端原子创建权威记录后再 hydrate;补“草稿保存成功、生成调用失败/抛错、刷新恢复后无幽灵 running 任务”的回归。
@@ -1899,0 +2685,4 @@
: null;
const quickEditPanelStyle: CSSProperties | null = quickEditSourceLayer
? {
left:
Member

[P2] 快速编辑卡位置需要按 viewport 四边钳制或自动翻转。当前直接用图层底部中心作为 left/top,卡片自身宽高没有参与计算;图片靠近右侧/底部(移动端也包括左侧)时,卡片会被 viewport 的 overflow 裁掉,输入框和操作按钮不可达。请在测得/约束卡片尺寸后选择上/下方并 clamp 到可视区域,滚动/缩放/resize 时同步更新;补四边及窄 viewport 的交互回归。

[P2] 快速编辑卡位置需要按 viewport 四边钳制或自动翻转。当前直接用图层底部中心作为 `left/top`,卡片自身宽高没有参与计算;图片靠近右侧/底部(移动端也包括左侧)时,卡片会被 viewport 的 overflow 裁掉,输入框和操作按钮不可达。请在测得/约束卡片尺寸后选择上/下方并 clamp 到可视区域,滚动/缩放/resize 时同步更新;补四边及窄 viewport 的交互回归。
@@ -193,6 +200,11 @@ export interface ImageCanvasProjectPort {
}
export interface ImageCanvasAssetPort {
importLocalImages?(input: {
Member

[P1] 保持冻结 Host Port 的“方法始终存在”合同。把 importLocalImages(以及下方 archiveFailedGeneration)声明成可选后,共享 UI 开始靠方法是否缺失分支能力,和合同规定的“能力不可用时返回结构化 unsupported-capability”冲突,也会让不同 adapter 静默漂移。请把两个方法都改为必选,由不支持的宿主返回 unsupportedImageCanvasCapability(...),并增加对所有 Host adapter 的方法存在性与 unsupported 结果测试。

[P1] 保持冻结 Host Port 的“方法始终存在”合同。把 `importLocalImages`(以及下方 `archiveFailedGeneration`)声明成可选后,共享 UI 开始靠方法是否缺失分支能力,和合同规定的“能力不可用时返回结构化 `unsupported-capability`”冲突,也会让不同 adapter 静默漂移。请把两个方法都改为必选,由不支持的宿主返回 `unsupportedImageCanvasCapability(...)`,并增加对所有 Host adapter 的方法存在性与 unsupported 结果测试。
suzmii added 1 commit 2026-08-23 15:16:34 +08:00
合并master并解决资源画布冲突
Project CI / Repository checks (pull_request) Successful in 4m9s
Project CI / Frontend tests (pull_request) Successful in 4m20s
Project CI / Backend tests (pull_request) Successful in 5m21s
Project CI / Native shell tests (pull_request) Failing after 11m27s
9cc3f4ce5c
合并 origin/master 最新提交

保留精修事务、候选图层与失败门户逻辑

同步生成恢复、Direct Codex 清理和资源画布删除交互
suzmii marked the pull request as work in progress 2026-08-23 15:17:12 +08:00
suzmii added 1 commit 2026-08-23 16:22:27 +08:00
修复资源画板生成事务与快速编辑边界
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 9s
Project CI / Frontend tests (pull_request) Successful in 4m14s
Project CI / Native shell tests (pull_request) Successful in 16m17s
ba105767ae
生成失败时持久化失败或对账状态,避免遗留 running 任务

增加候选落盘与 archive-pending 可恢复事务阶段

收紧 Host Port 必选方法并统一 unsupported-capability 合同

钳制快速编辑卡 viewport 定位并补齐回归测试与技术合同

修正认证恢复和候选生成测试断言
suzmii added 1 commit 2026-08-23 16:35:43 +08:00
合并最新master基线
Project CI / Repository checks (pull_request) Successful in 3m31s
Project CI / Frontend tests (pull_request) Successful in 4m21s
Project CI / Backend tests (pull_request) Successful in 4m53s
Project CI / Native shell tests (pull_request) Successful in 14m32s
ea1eae1a3b
同步 origin/master 最新提交

保留资源画布事务与快速编辑修复
suzmii marked the pull request as ready for review 2026-08-23 16:37:05 +08:00
suzmii requested review from kdletters 2026-08-23 16:54:08 +08:00
kdletters requested changes 2026-08-23 17:11:37 +08:00
kdletters left a comment
Member

当前 head ea1eae1a3 仍有 2 个 P1 阻塞:失败结果没有进入后端权威 generation 生命周期,常见前置失败仍会在重启后恢复成 generation-running,且无私有 ledger 的失败卡无法归档;候选成功回包又会用后端快照全量 hydrate,覆盖生成期间尚未 autosave 的画布修改。请按两条行内建议修复,并补真实 Tauri/backend 失败恢复测试与 deferred generation 并发编辑回归。上一轮候选落盘顺序、archive-pending、Host Port 必选合同和快速编辑卡四边钳制已基本修复;当前 4 项 CI 全绿,但未覆盖这两个边界。

当前 head `ea1eae1a3` 仍有 2 个 P1 阻塞:失败结果没有进入后端权威 generation 生命周期,常见前置失败仍会在重启后恢复成 `generation-running`,且无私有 ledger 的失败卡无法归档;候选成功回包又会用后端快照全量 hydrate,覆盖生成期间尚未 autosave 的画布修改。请按两条行内建议修复,并补真实 Tauri/backend 失败恢复测试与 deferred generation 并发编辑回归。上一轮候选落盘顺序、archive-pending、Host Port 必选合同和快速编辑卡四边钳制已基本修复;当前 4 项 CI 全绿,但未覆盖这两个边界。
@@ -1762,0 +2561,4 @@
}
if (result.status !== 'ok') {
const code = result.status === 'failed' ? result.code : result.status;
await persistGenerationFailure(
Member

[P1] 不要依靠前端 updateDraft 发布 generation 失败终态。这里虽然调用 persistGenerationFailure,但 Rust update_asset_canvas_draft_at 对已有 generation 只合并 placeholder,明确忽略传入的 phase/errorCode;例如 configuration-missing 只让私有 ledger 停在 ContextPreparing + errorCode 后返回,权威草稿仍保留 optimistic generation-running,重启后幽灵任务会复活。若 invoke/listener 在 ledger 创建前失败,则会留下没有私有 ledger 的公开 failed 卡,后续归档必然报“账本不存在”。此外这里忽略失败持久化的返回值,后面又无条件切回 canvas.editing/dirty:false,会覆盖 CAS/IO 保存失败。请让 Rust 所有退出路径明确落为 FailedReconciliationRequired 或结构化 not-startednot-started 原子移除占位,前端只消费权威结果并在保存失败时保持阻断态。补真实 Tauri/backend 回归:缺配置后刷新、pre-ledger invoke 失败后归档,以及失败态 updateDraft conflict/IO failure。

[P1] 不要依靠前端 `updateDraft` 发布 generation 失败终态。这里虽然调用 `persistGenerationFailure`,但 Rust `update_asset_canvas_draft_at` 对已有 generation 只合并 `placeholder`,明确忽略传入的 `phase/errorCode`;例如 `configuration-missing` 只让私有 ledger 停在 `ContextPreparing + errorCode` 后返回,权威草稿仍保留 optimistic `generation-running`,重启后幽灵任务会复活。若 invoke/listener 在 ledger 创建前失败,则会留下没有私有 ledger 的公开 `failed` 卡,后续归档必然报“账本不存在”。此外这里忽略失败持久化的返回值,后面又无条件切回 `canvas.editing/dirty:false`,会覆盖 CAS/IO 保存失败。请让 Rust 所有退出路径明确落为 `Failed`、`ReconciliationRequired` 或结构化 `not-started`;`not-started` 原子移除占位,前端只消费权威结果并在保存失败时保持阻断态。补真实 Tauri/backend 回归:缺配置后刷新、pre-ledger invoke 失败后归档,以及失败态 updateDraft conflict/IO failure。
@@ -1769,0 +2593,4 @@
result.value.images.forEach((image) =>
URL.revokeObjectURL(image.previewUrl),
);
await hydrateDraft(result.value.draft, epoch);
Member

[P1] 应在应用候选快照前保护生成期间的本地 dirty 画布。PR 明确让生成期间继续拖图、平移和选择,而 autosave 有 180ms debounce/在途 saveQueue;候选恰在这段窗口完成时,result.value.draft 不包含刚发生的本地修改。这里直接 hydrateDraft 会全量替换 layers、viewport、selection,清空 history,并把 documentVersion 重置为 0,随后保存的是旧快照,用户修改被静默丢失。请把权威候选层和 generation 状态重基/合并到当前本地 dirty canvas 后以新 revision 保存,或建立能覆盖在途保存的屏障并重放本地修改。补 deferred generation 回归:完成前拖动图层、平移 viewport、改变选择,完成后逐项验证仍保留。

[P1] 应在应用候选快照前保护生成期间的本地 dirty 画布。PR 明确让生成期间继续拖图、平移和选择,而 autosave 有 180ms debounce/在途 saveQueue;候选恰在这段窗口完成时,`result.value.draft` 不包含刚发生的本地修改。这里直接 `hydrateDraft` 会全量替换 layers、viewport、selection,清空 history,并把 documentVersion 重置为 0,随后保存的是旧快照,用户修改被静默丢失。请把权威候选层和 generation 状态重基/合并到当前本地 dirty canvas 后以新 revision 保存,或建立能覆盖在途保存的屏障并重放本地修改。补 deferred generation 回归:完成前拖动图层、平移 viewport、改变选择,完成后逐项验证仍保留。
suzmii added 1 commit 2026-08-23 17:51:54 +08:00
修复生成失败结算与候选并发编辑
Project CI / Repository checks (pull_request) Failing after 12s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / Native shell tests (pull_request) Successful in 12m48s
Project CI / Frontend tests (pull_request) Successful in 3m36s
0efcf809d9
生成失败统一通过宿主权威接口结算并清理早期公开占位

为失败结算补充 revision CAS、幂等和无账本回归测试

候选完成合并本地画布状态,避免覆盖未 autosave 的编辑

同步 PR 176 事务与宿主合同文档
suzmii added 1 commit 2026-08-23 18:05:10 +08:00
Merge branch 'master' into codex/game-agent-resource-workbench
Project CI / Frontend tests (pull_request) Successful in 4m35s
Project CI / Repository checks (pull_request) Successful in 4m38s
Project CI / Backend tests (pull_request) Successful in 5m37s
Project CI / Native shell tests (pull_request) Successful in 14m12s
d93fc2fc4b
suzmii marked the pull request as work in progress 2026-08-23 18:21:29 +08:00
suzmii added 1 commit 2026-08-23 18:30:47 +08:00
修复失败结算竞态与对账阻断状态
Project CI / Frontend tests (pull_request) Successful in 4m38s
Project CI / Repository checks (pull_request) Successful in 5m53s
Project CI / Backend tests (pull_request) Successful in 6m37s
Project CI / Native shell tests (pull_request) Successful in 16m9s
f0ea23978d
将失败结算的 revision 校验、公开投影和 staging 更新收敛到同一草稿锁内。

对账失败结算后保持安全恢复阻断态,避免误恢复为可编辑状态。

补充过期 revision 不改写账本及前端对账阻断回归测试。
suzmii added 1 commit 2026-08-23 18:53:27 +08:00
修复失败结算半事务恢复
Project CI / Repository checks (pull_request) Successful in 3m8s
Project CI / Frontend tests (pull_request) Successful in 4m7s
Project CI / Backend tests (pull_request) Successful in 4m11s
Project CI / Native shell tests (pull_request) Successful in 14m55s
155052752f
为失败与对账结算增加可重放 pending ledger。
在无平台凭据时优先恢复公开草稿、staging revision 与终态账本。
覆盖公开投影前后两个持久化故障切点。
同步更新素材画布技术合同与共享决策记录。
suzmii added 1 commit 2026-08-23 19:10:33 +08:00
统一生成失败的可重放结算
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 11s
Project CI / Frontend tests (pull_request) Successful in 3m29s
Project CI / Native shell tests (pull_request) Successful in 16m46s
fb12ef27c6
生成流程内部错误统一先写 pending ledger,再更新公开草稿、staging revision 与终态账本。
增加 pending 写入后故障注入恢复回归。
补齐公开草稿、staging 与终态账本之间三个持久化切点测试。
同步更新失败结算技术合同与共享决策记录。
Member

该 PR 暴露的“同一本地项目切换账号后丢失画布项目、无法继续编辑历史本地资源”问题,已拆到 #182 从 master 统一修复。

请先等待 #182 合并并 rebase 最新 master;rebase 后删除或接入 #182 的 account-scoped External Editor binding,不能保留本 PR 当前的局部 canonical cache 或第二套账号身份系统。manifest 中的远端 ID 只能作为来源信息,当前账号没有 binding 时必须从本地正式资源重新上传、confirm、登记,任何 B 账号请求都不能携带 A 的 project/resource/object ID。

#176 已提交的 REQUEST_CHANGES 及其他阻塞项仍然有效,当前不可合并。

该 PR 暴露的“同一本地项目切换账号后丢失画布项目、无法继续编辑历史本地资源”问题,已拆到 #182 从 master 统一修复。 请先等待 #182 合并并 rebase 最新 master;rebase 后删除或接入 #182 的 account-scoped External Editor binding,不能保留本 PR 当前的局部 canonical cache 或第二套账号身份系统。manifest 中的远端 ID 只能作为来源信息,当前账号没有 binding 时必须从本地正式资源重新上传、confirm、登记,任何 B 账号请求都不能携带 A 的 project/resource/object ID。 #176 已提交的 REQUEST_CHANGES 及其他阻塞项仍然有效,当前不可合并。
suzmii added 5 commits 2026-08-24 13:19:17 +08:00
合入Agent对话用户消息气泡优化。

保留资源画板与生成结算的当前工作区修改。
整合主线 Agent Runtime、预览自适应与资源生成改动

保留素材画布精修事务、自由画布布局与恢复边界

补齐序列帧字段测试夹具并合并共享决策记录
合并账号隔离的 External Editor 项目与资源绑定

保留素材画布失败结算、归档恢复和候选落盘顺序

整合 Direct 图集恢复绑定与 manifest 失效通知

同步项目决策记录中的账号绑定与失败恢复约束
删除独立 canonical 参考缓存并统一使用账号资源 binding

配置缺失时保留可恢复私有账本并允许登录后绑定

失效精修引用仅失效当前主体对应的资源 binding

更新生成恢复测试以锁定 CandidateReady 和切号边界
完善素材画布失败事务恢复
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Frontend tests (pull_request) Failing after 2m26s
Project CI / Native shell tests (pull_request) Failing after 2m3s
2e16b8cdee
补齐失败结算和归档中间态的崩溃恢复切点

保证候选事实落盘回读后再发布 CandidateReady

同步无限画布合同和共享决策记录
suzmii added 2 commits 2026-08-24 13:53:07 +08:00
修复资源工作台合并回归
Project CI / Repository checks (pull_request) Successful in 4m30s
Project CI / Frontend tests (pull_request) Successful in 5m15s
Project CI / Backend tests (pull_request) Successful in 5m46s
Project CI / Native shell tests (pull_request) Successful in 15m59s
d707deef4e
恢复 UI 编辑器钱包入口和创建资源语义

恢复资源详情关闭后的滚动位置

更新资源生成入口测试断言

锁定缺失登录时生成失败的公开投影
suzmii marked the pull request as ready for review 2026-08-24 13:54:47 +08:00
suzmii requested review from kdletters 2026-08-24 14:14:27 +08:00
kdletters added 1 commit 2026-08-24 16:05:02 +08:00
合并最新主分支并保留素材画布事务
Project CI / Repository checks (pull_request) Successful in 4m26s
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
2dafe7cc40
合入 External v1 抠图工具与客户端契约更新
保留资源画布账号绑定和生成恢复实现
解决共享 decision-log 冲突并同步文档决策
suzmii added 3 commits 2026-08-24 16:06:33 +08:00
统一窄屏快速编辑卡的 viewport 留白并补齐 320×480 回归测试

为 GIF、AVIF、BMP 和安全 SVG 媒体预览返回受限真实尺寸

补充 deferred generation 与 pre-ledger 失败前端回归并同步技术方案
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
Merge remote-tracking branch 'origin/codex/game-agent-resource-workbench' into codex/game-agent-resource-workbench
Project CI / Repository checks (pull_request) Successful in 4m22s
Project CI / Frontend tests (pull_request) Successful in 4m45s
Project CI / Backend tests (pull_request) Successful in 5m40s
Project CI / Native shell tests (pull_request) Successful in 13m36s
992e1adb68
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
kdletters merged commit 15a524e6e0 into master 2026-08-24 16:27:33 +08:00
kdletters deleted branch codex/game-agent-resource-workbench 2026-08-24 16:27:33 +08:00
Sign in to join this conversation.