修复 UI 编辑器返回后资源画布平移 #356

Merged
k88936 merged 5 commits from fix/cant-pan-after-ui-editor into master 2026-09-14 20:13:28 +08:00
Member

资源管理卸载重挂时重新绑定画布 wheel 监听

closes #349

资源管理卸载重挂时重新绑定画布 wheel 监听 closes #349
k88936 self-assigned this 2026-09-14 18:42:32 +08:00
k88936 added this to the 陶泥儿gameAgent project 2026-09-14 18:42:32 +08:00
k88936 added 1 commit 2026-09-14 18:42:32 +08:00
修复 UI 编辑器返回后资源画布平移
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
c485ce94a1
资源管理卸载重挂时重新绑定画布 wheel 监听

补充 UI 编辑器返回后的资源画布平移回归用例

记录资源画布事件监听重挂排障经验
k88936 requested review from lhk229 2026-09-14 18:48:44 +08:00
k88936 requested review from suzmii 2026-09-14 18:48:54 +08:00
k88936 removed review request for lhk229 2026-09-14 18:48:59 +08:00
k88936 added 1 commit 2026-09-14 19:00:39 +08:00
修正资源画布回归测试 IPC 桩
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
a8aacb27bd
使用 manifest projectId 匹配真实布局读取契约

补充初始化布局更新命令回执
k88936 added 1 commit 2026-09-14 19:00:48 +08:00
Merge branch 'master' into fix/cant-pan-after-ui-editor
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
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
a0b5a84d61
k88936 marked the pull request as ready for review 2026-09-14 19:01:09 +08:00
k88936 added 1 commit 2026-09-14 19:39:27 +08:00
抽取共享 ResizeObserver 测试桩
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m59s
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
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
174b6dd347
让项目开发测试复用统一 observer 安装 helper

保留 observer 创建与断开计数断言
lhk229 approved these changes 2026-09-14 19:43:18 +08:00
lhk229 left a comment
Owner

修复方向正确,已验证:

验证过程

  • 根因确认:uiEditorRoute 非空时(7125 行分支)整个资源 manager 子树卸载,返回后 resourceBookManagerRef 指向新 DOM 节点,而 wheel effect 原依赖只有 handleResourceBookWheelmode,不会重跑,监听滞留在已脱离文档的旧节点上。把 uiEditorRoute 加入依赖后,进出编辑器都会先清理旧节点再绑定新节点;effect 在 commit 之后运行,ref 已就位,修复成立。
  • 与既有模式一致:2539 行的 effect 本就把 uiEditorRoute 作为依赖,这次只是补齐遗漏的一处。
  • 回归用例有效:本地 npx vitest run apps/ai-game-creator-shell/tests/appSurface.test.ts -t "restores resource canvas panning" 在 PR 分支通过;把 uiEditorRoute 从依赖里临时去掉后用例如期失败(defaultPrevented 为 false),说明用例确实钉住了这个回归。
  • pitfalls.md 记录符合共享记忆规范。

一个非阻塞的后续项
同一文件中 3526 行的 effect 把 wheel/gesturestart/gesturechange/gestureend 绑在 resourceCanvasRef.current(同在 manager 子树内,7143 行之下),依赖数组同样没有 uiEditorRoute。进出一次 UI 编辑器后,这些监听同样滞留在旧节点上:ctrl/⌘+滚轮的板块缩放与 macOS Safari 的捏合手势(gesture* 只在 canvas 层登记)会在返回后失效,且该 effect 的依赖不会因平移/缩放自愈。不属于本 PR 报告范围(#349 只提平移),不阻塞合并;建议顺手补一行依赖或记为后续 issue。

修复方向正确,已验证: **验证过程** - 根因确认:`uiEditorRoute` 非空时(7125 行分支)整个资源 manager 子树卸载,返回后 `resourceBookManagerRef` 指向新 DOM 节点,而 wheel effect 原依赖只有 `handleResourceBookWheel` 与 `mode`,不会重跑,监听滞留在已脱离文档的旧节点上。把 `uiEditorRoute` 加入依赖后,进出编辑器都会先清理旧节点再绑定新节点;effect 在 commit 之后运行,ref 已就位,修复成立。 - 与既有模式一致:2539 行的 effect 本就把 `uiEditorRoute` 作为依赖,这次只是补齐遗漏的一处。 - 回归用例有效:本地 `npx vitest run apps/ai-game-creator-shell/tests/appSurface.test.ts -t "restores resource canvas panning"` 在 PR 分支通过;把 `uiEditorRoute` 从依赖里临时去掉后用例如期失败(`defaultPrevented` 为 false),说明用例确实钉住了这个回归。 - pitfalls.md 记录符合共享记忆规范。 **一个非阻塞的后续项** 同一文件中 3526 行的 effect 把 `wheel`/`gesturestart`/`gesturechange`/`gestureend` 绑在 `resourceCanvasRef.current`(同在 manager 子树内,7143 行之下),依赖数组同样没有 `uiEditorRoute`。进出一次 UI 编辑器后,这些监听同样滞留在旧节点上:ctrl/⌘+滚轮的板块缩放与 macOS Safari 的捏合手势(gesture* 只在 canvas 层登记)会在返回后失效,且该 effect 的依赖不会因平移/缩放自愈。不属于本 PR 报告范围(#349 只提平移),不阻塞合并;建议顺手补一行依赖或记为后续 issue。
lhk229 added 1 commit 2026-09-14 19:56:43 +08:00
Merge branch 'master' into fix/cant-pan-after-ui-editor
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 5m12s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 5m18s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 5m22s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 5m23s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m39s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m21s
Project CI / Frontend tests (pull_request) Successful in 4m18s
Project CI / Native shell tests (pull_request) Successful in 6m7s
Project CI / Repository checks (pull_request) Successful in 3m1s
Project CI / Backend tests (pull_request) Successful in 7m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m4s
a5dfa322cb
k88936 merged commit 279a5e8e0e into master 2026-09-14 20:13:28 +08:00
lhk229 deleted branch fix/cant-pan-after-ui-editor 2026-09-14 20:14:22 +08:00
Author
Member

经过测ctrl+ scoll正常

经过测ctrl+ scoll正常
Sign in to join this conversation.