Editor agent 右键菜单支持复制, 引用,下载 #95

Merged
kdletters merged 20 commits from editor-agent-right-click into master 2026-07-22 18:00:27 +08:00
Member
No description provided.
k88936 added 7 commits 2026-07-20 20:02:22 +08:00
Member

[P1] AttachmentPicker.tsx (line 36) 把最新 master 已修复的 PlatformToolModalShell 又退回裸 UnifiedModal,会丢失 portal 主题变量、导致弹窗透明。当前 PR 与 master 还在 PanelView 存在真实合并冲突。
[P1] useRightClickMenu.ts (line 128) 使用 <a download> 后直接报告成功;但 Tauri 壳明确拦截全部 WebView 下载请求,桌面客户端不会保存文件,菜单却会关闭。应走现有 file.exportImage/file.exportAudio HostBridge。
[P2] useConversationAttachments.ts (line 263) 引用时只在当前 layers/assets 反查,历史附件原有的 source/referenceId 已被丢弃。粘贴图片发送后,再右键该历史附件会稳定“引用失败”。
[P2] useConversationAttachments.ts (line 348) 发送附件 A、等待期间引用 B、请求失败时,只保留 B,A 被静默丢弃。
[P2] useRightClickMenu.ts (line 46) 下载名盲信展示名称已有扩展名;素材改名后可能出现 WebP 内容配 .jpg,application/octet-stream 又会下载成无扩展名文件。

[P1] [AttachmentPicker.tsx (line 36)](/home/dsk/.codex/worktrees/ce3b/Genarrative/src/components/image-editor/EditorAgentConversation/AttachmentPicker.tsx:36) 把最新 master 已修复的 PlatformToolModalShell 又退回裸 UnifiedModal,会丢失 portal 主题变量、导致弹窗透明。当前 PR 与 master 还在 PanelView 存在真实合并冲突。 [P1] [useRightClickMenu.ts (line 128)](/home/dsk/.codex/worktrees/ce3b/Genarrative/src/components/image-editor/EditorAgentConversation/useRightClickMenu.ts:128) 使用 `<a download>` 后直接报告成功;但 Tauri 壳明确拦截全部 WebView 下载请求,桌面客户端不会保存文件,菜单却会关闭。应走现有 file.exportImage/file.exportAudio HostBridge。 [P2] [useConversationAttachments.ts (line 263)](/home/dsk/.codex/worktrees/ce3b/Genarrative/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts:263) 引用时只在当前 layers/assets 反查,历史附件原有的 source/referenceId 已被丢弃。粘贴图片发送后,再右键该历史附件会稳定“引用失败”。 [P2] [useConversationAttachments.ts (line 348)](/home/dsk/.codex/worktrees/ce3b/Genarrative/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts:348) 发送附件 A、等待期间引用 B、请求失败时,只保留 B,A 被静默丢弃。 [P2] [useRightClickMenu.ts (line 46)](/home/dsk/.codex/worktrees/ce3b/Genarrative/src/components/image-editor/EditorAgentConversation/useRightClickMenu.ts:46) 下载名盲信展示名称已有扩展名;素材改名后可能出现 WebP 内容配 .jpg,application/octet-stream 又会下载成无扩展名文件。
k88936 added 4 commits 2026-07-21 13:54:24 +08:00
k88936 requested review from kdletters 2026-07-21 13:54:54 +08:00
Member

[P2] 失败恢复逻辑直接合并失败附件与当前附件,未重新执行 9 张上限。发送 9 张后,等待期间再引用 9 张,请求失败可恢复出 18 张,重试才被后端拒绝。
[P2] 同一处把失败请求的旧快照放在前面。同一 source + referenceId 已更新时,会用旧 objectKey 覆盖当前版本,随后触发后端 objectKey mismatch 校验

[P2] [失败恢复逻辑](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/791493db/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts#L371)直接合并失败附件与当前附件,未重新执行 9 张上限。发送 9 张后,等待期间再引用 9 张,请求失败可恢复出 18 张,重试才被后端拒绝。 [P2] 同一处把失败请求的旧快照放在前面。同一 source + referenceId 已更新时,会用旧 objectKey 覆盖当前版本,随后触发后端 [objectKey mismatch 校验](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/791493db/server-rs/crates/api-server/src/editor_agent/utils.rs#L511)。
k88936 added 1 commit 2026-07-21 15:53:29 +08:00
Author
Member

Q: 2 同一个 source + referenceId 对应的objectKey 是不变的吧, 画布里包括快速编辑都不是原地修改的都是增加一个新素材

Q: 2 同一个 source + referenceId 对应的objectKey 是不变的吧, 画布里包括快速编辑都不是原地修改的都是增加一个新素材
Member

[阻塞] 最新 master 48c9ee2f 与 PR 有 4 个内容冲突:专题文档、EditorAgentConversationPanelView.test.tsx、MessageBubble.test.tsx、MessageBubble.tsx。必须逐块合并,整文件选择任一侧都会丢 master 的长等待提示或 PR 的右键/附件功能。
[P2] 失败恢复仍以旧快照优先。同一 source + referenceId 在请求期间更新后,旧 objectKey/imageSrc 会覆盖当前版本,重试仍可能触发后端 objectKey mismatch。
[门禁] useRightClickMenu.ts 的 import 排序错误仍在,npm run lint:eslint 失败。

[阻塞] 最新 master 48c9ee2f 与 PR 有 4 个内容冲突:专题文档、EditorAgentConversationPanelView.test.tsx、MessageBubble.test.tsx、MessageBubble.tsx。必须逐块合并,整文件选择任一侧都会丢 master 的长等待提示或 PR 的右键/附件功能。 [P2] [失败恢复仍以旧快照优先](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/632d05cf/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts#L371)。同一 source + referenceId 在请求期间更新后,旧 objectKey/imageSrc 会覆盖当前版本,重试仍可能触发后端 objectKey mismatch。 [门禁] [useRightClickMenu.ts](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/632d05cf/src/components/image-editor/EditorAgentConversation/useRightClickMenu.ts#L1) 的 import 排序错误仍在,npm run lint:eslint 失败。
k88936 added 4 commits 2026-07-21 17:29:51 +08:00
# Conflicts:
#	docs/【编辑器】画布Agent对话面板-2026-07-03.md
#	src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.test.tsx
#	src/components/image-editor/EditorAgentConversation/MessageBubble.test.tsx
#	src/components/image-editor/EditorAgentConversation/MessageBubble.tsx
Merge branch 'master' into editor-agent-right-click
Project CI / Repository checks (pull_request) Successful in 2m27s
Project CI / Backend checks (pull_request) Successful in 3m23s
Project CI / Native shell checks (pull_request) Successful in 4m11s
26f91060b6
k88936 added 1 commit 2026-07-21 19:28:23 +08:00
Merge branch 'master' into editor-agent-right-click
Project CI / Repository checks (pull_request) Failing after 5s
Project CI / Frontend tests (pull_request) Successful in 1m31s
Project CI / Backend tests (pull_request) Successful in 5m3s
Project CI / Native shell tests (pull_request) Successful in 4m9s
c6e7512a0d
k88936 added 1 commit 2026-07-22 10:22:13 +08:00
Merge branch 'master' into editor-agent-right-click
Project CI / Frontend tests (pull_request) Successful in 1m28s
Project CI / Repository checks (pull_request) Successful in 2m39s
Project CI / Native shell tests (pull_request) Successful in 6m46s
Project CI / Backend tests (pull_request) Successful in 7m58s
62fc761c16
Member

失败恢复同 identity 附件仍可能被旧快照覆盖
useConversationAttachments.ts (line 375) 这里还是 mergeAttachments(failedAttachments, currentAttachments),而 mergeAttachments 对同 source + referenceId 保留前数组项。
已修的是“发送时刷新旧附件”的场景,但没完全覆盖“请求 pending 期间同一个 resource 又更新/重新引用,随后请求失败恢复”的场景:

失败恢复同 identity 附件仍可能被旧快照覆盖 [useConversationAttachments.ts (line 375)](/data/dsk/.codex/worktrees/pr95-rereview-62fc-132737/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts:375) 这里还是 mergeAttachments(failedAttachments, currentAttachments),而 mergeAttachments 对同 source + referenceId 保留前数组项。 已修的是“发送时刷新旧附件”的场景,但没完全覆盖“请求 pending 期间同一个 resource 又更新/重新引用,随后请求失败恢复”的场景:
Member

Q: 2 同一个 source + referenceId 对应的objectKey 是不变的吧, 画布里包括快速编辑都不是原地修改的都是增加一个新素材

source + referenceId 是资源身份,但 objectKey 是当前文件版本,不一定永远不变。同一个画布资源被编辑/替换/生成回填后,referenceId 可能不变,objectKey 可能从 old.png 变成 new.png。
如果失败恢复把旧快照放前面,去重时就保留旧 objectKey,后端再校验“这个 referenceId 当前应该对应哪个 objectKey”时,就可能报 objectKey mismatch。

> Q: 2 同一个 source + referenceId 对应的objectKey 是不变的吧, 画布里包括快速编辑都不是原地修改的都是增加一个新素材 source + referenceId 是资源身份,但 objectKey 是当前文件版本,不一定永远不变。同一个画布资源被编辑/替换/生成回填后,referenceId 可能不变,objectKey 可能从 old.png 变成 new.png。 如果失败恢复把旧快照放前面,去重时就保留旧 objectKey,后端再校验“这个 referenceId 当前应该对应哪个 objectKey”时,就可能报 objectKey mismatch。
k88936 added 1 commit 2026-07-22 15:34:50 +08:00
fix: editor agent ensure failed attachment recovery respects current attachment states
Project CI / Repository checks (pull_request) Successful in 3m12s
Project CI / Frontend tests (pull_request) Successful in 1m26s
Project CI / Backend tests (pull_request) Successful in 11m58s
Project CI / Native shell tests (pull_request) Successful in 10m8s
718dc5d09c
k88936 added 1 commit 2026-07-22 17:53:50 +08:00
Merge branch 'master' into editor-agent-right-click
Project CI / Repository checks (pull_request) Successful in 59s
Project CI / Frontend tests (pull_request) Successful in 1m25s
Project CI / Backend tests (pull_request) Successful in 3m18s
Project CI / Native shell tests (pull_request) Successful in 2m26s
bb5703a19a
kdletters scheduled this pull request to auto merge when all checks succeed 2026-07-22 17:56:50 +08:00
kdletters approved these changes 2026-07-22 17:57:06 +08:00
kdletters merged commit 9bb4942ae7 into master 2026-07-22 18:00:27 +08:00
kdletters deleted branch editor-agent-right-click 2026-07-22 18:00:27 +08:00
Sign in to join this conversation.