修复资源管理滚轮翻页偶发失效 #197

Merged
kdletters merged 2 commits from codex/fix-asset-manager-wheel-pagination into master 2026-08-26 15:29:36 +08:00
Member

变更背景

资源管理画布在连续滚轮翻页时,可能出现偶发失效或中间栏目被逐页渲染,导致后续滚轮输入被资源渲染阻塞;同时,缩放、手动切页、排序和拖拽过程中还可能执行已经过期的翻页任务。

本 PR 将翻页意图与资源渲染提交解耦,并补齐交互取消边界,让连续输入始终基于最新逻辑目标栏目计算。

主要修改

  • 滚轮分页改为同步维护逻辑目标栏目,可见栏目通过 React transition 异步提交;渲染尚未完成时,新滚轮事件仍基于最新逻辑目标继续计算,不逐页加载中间栏目。
  • 待执行翻页队列改为有界合并与延迟 flush,修复旧定时器清理不完整的问题。
  • Ctrl/Meta 缩放、触控板缩放手势、手动点击切页、切换排序、开始画布空白拖拽或资源卡拖拽时,取消尚未执行的过期翻页任务。
  • viewport 更新显式携带目标栏目,画布拖拽记录发起时的栏目,避免过渡渲染期间把旧栏目 viewport 写入新栏目。
  • 每个排序模式和栏目继续保留独立 viewport,复位、首次 fit 与保留用户当前平移缩放的路径统一使用同一套数据流。
  • 依赖浮层的 ResizeObserver、scroll 和 resize 监听只在挂载时建立一次;viewport / 几何 revision 变化时通过 ref 合并调度一帧测量,避免连续输入时重复重建观察器。
  • 更新资源自由画板技术方案,并补充回归测试覆盖连续滚轮、缩放取消、大步跳转、切页边界和依赖浮层观察器生命周期。

验证

  • npm run test -- apps/ai-game-creator-shell/tests/ResourceDependencyOverlay.test.ts apps/ai-game-creator-shell/tests/appSurface.test.ts --run
    • 2 个测试文件通过
    • 393 / 393 tests passed
  • npm run agc:typecheck
  • npm run lint:eslint -- apps/ai-game-creator-shell/src/view/project-development/index.tsx apps/ai-game-creator-shell/src/view/project-development/ResourceDependencyOverlay.tsx apps/ai-game-creator-shell/tests/ResourceDependencyOverlay.test.ts apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts
  • npm run check:encoding
  • git diff --check

以上均为合并 origin/master@2f3c578db 后在 b5c98af42 上执行。

## 变更背景 资源管理画布在连续滚轮翻页时,可能出现偶发失效或中间栏目被逐页渲染,导致后续滚轮输入被资源渲染阻塞;同时,缩放、手动切页、排序和拖拽过程中还可能执行已经过期的翻页任务。 本 PR 将翻页意图与资源渲染提交解耦,并补齐交互取消边界,让连续输入始终基于最新逻辑目标栏目计算。 ## 主要修改 - 滚轮分页改为同步维护逻辑目标栏目,可见栏目通过 React transition 异步提交;渲染尚未完成时,新滚轮事件仍基于最新逻辑目标继续计算,不逐页加载中间栏目。 - 待执行翻页队列改为有界合并与延迟 flush,修复旧定时器清理不完整的问题。 - Ctrl/Meta 缩放、触控板缩放手势、手动点击切页、切换排序、开始画布空白拖拽或资源卡拖拽时,取消尚未执行的过期翻页任务。 - viewport 更新显式携带目标栏目,画布拖拽记录发起时的栏目,避免过渡渲染期间把旧栏目 viewport 写入新栏目。 - 每个排序模式和栏目继续保留独立 viewport,复位、首次 fit 与保留用户当前平移缩放的路径统一使用同一套数据流。 - 依赖浮层的 ResizeObserver、scroll 和 resize 监听只在挂载时建立一次;viewport / 几何 revision 变化时通过 ref 合并调度一帧测量,避免连续输入时重复重建观察器。 - 更新资源自由画板技术方案,并补充回归测试覆盖连续滚轮、缩放取消、大步跳转、切页边界和依赖浮层观察器生命周期。 ## 验证 - `npm run test -- apps/ai-game-creator-shell/tests/ResourceDependencyOverlay.test.ts apps/ai-game-creator-shell/tests/appSurface.test.ts --run` - 2 个测试文件通过 - 393 / 393 tests passed - `npm run agc:typecheck` - `npm run lint:eslint -- apps/ai-game-creator-shell/src/view/project-development/index.tsx apps/ai-game-creator-shell/src/view/project-development/ResourceDependencyOverlay.tsx apps/ai-game-creator-shell/tests/ResourceDependencyOverlay.test.ts apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts` - `npm run check:encoding` - `git diff --check` 以上均为合并 `origin/master@2f3c578db` 后在 `b5c98af42` 上执行。
suzmii added 2 commits 2026-08-26 11:11:38 +08:00
将滚轮分页意图与资源渲染解耦,避免重渲染阻塞连续滚动。

在缩放、手动切页、排序和拖拽时取消过期分页任务。

合并依赖浮层测量调度并补充边界与回归测试。

同步更新资源自由画板技术方案。
Merge remote-tracking branch 'origin/master' into codex/fix-asset-manager-wheel-pagination
Project CI / Repository checks (pull_request) Successful in 3m32s
Project CI / Frontend tests (pull_request) Successful in 5m2s
Project CI / Backend tests (pull_request) Successful in 14m41s
Project CI / Native shell tests (pull_request) Failing after 10m36s
b5c98af428
suzmii requested review from kdletters 2026-08-26 11:11:47 +08:00
kdletters merged commit 2407295363 into master 2026-08-26 15:29:36 +08:00
kdletters deleted branch codex/fix-asset-manager-wheel-pagination 2026-08-26 15:29:36 +08:00
Sign in to join this conversation.