Skip to content

feat(dashboard): settle layout selection after resize - #534

Merged
MFSGA merged 12 commits into
masterfrom
codex/ref-dashboard-resize
Oct 27, 2026
Merged

MFSGA merged 12 commits into
masterfrom
codex/ref-dashboard-resize

Conversation

@MFSGA

@MFSGA MFSGA commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

目标与变更范围

  • 让 Dashboard 按参考实现处理窗口尺寸变化:拖动期间保留当前布局,尺寸稳定 200ms 后选择目标布局;resize projection 不写入 dashboard-widgets。
  • 修正响应式 Desktop E2E 的窄布局条件。固定宽布局测试窗口;收窄时要求真实 WebView viewport 不超过 400px,且 DndGrid 容器宽度落在四列区间 [304px, 384px),再断言 4x5 fixture。
  • E2E 诊断在 WebView 边界和 Node 侧脱敏错误;失败前清理时记录网格尺寸、widgets、存储摘要和错误原因。
  • 非目标:不改变生产窗口默认尺寸、用户保存的窗口几何、IPC 或 Dashboard 存储格式。

基线及 ref 对齐记录

  • Chimera PR 基线:6317cad35bfd94c4257bc3b0a172f331bc924853。
  • ref gitlink:9f72efe292975b13b5d9018a9f5641ffbb071c27,工作区干净。
  • Dashboard 行为映射:ref frontend/nyanpasu/src/pages/(main)/main/dashboard/index.tsx 的 SETTLED_RESIZE_MS / handleSizeChange → Chimera frontend/chimera/src/pages/(main)/main/dashboard/index.tsx;ref frontend/ui/src/dnd-grid/use-grid-layout.ts 的尺寸计算 → 同路径 Chimera DndGrid。
  • ref 的网格公式为 floor((width + gap) / (minCellSize + gap))。Chimera 保留其 64px cell、16px gap 和 200ms settling;拖拽交互的 defer 是必要的 Chimera 扩展。DIFF-061 记录在 docs/ref-alignment-progress.md。
  • 产品初始窗口尺寸当前已与 ref 一致:800×636,最小 400×600。本 PR 不修改它。

用户入口及业务调用链

主 UI Dashboard → DndGrid 的 ResizeObserver 尺寸 → handleSizeChange → 200ms settle timer → selectForSize。布局投影保持内存态,保存值保持不变。E2E 通过真实桌面窗口尺寸变化验证此路径;未覆盖同时拖动和窗口 resize。

风险等级与审批

  • 风险:L1,局部 UI 和 E2E 诊断变更;不改持久化 schema、IPC、Core、Service 或宿主设置。
  • 回滚:恢复 Dashboard settling / interaction guard 和关联 E2E 诊断及尺寸断言。

实际验证

测试/命令 环境/平台 结果 证据/限制
Commit hook:Oxlint、Prettier、pnpm typecheck:e2e 本机 pass head 683a497c6123f852c2f6184c031d337d2be55342
git diff --check 本机 pass 提交前执行
Windows Desktop E2E GitHub Actions pending run 40448048207,针对最终 head
CI lint/build matrix GitHub Actions pending run 40448048346,针对最终 head

未在本机运行完整桌面 E2E;远端 Windows run 是此用例的真实桌面验证。旧 SHA 的运行结果不代表当前 head 已通过。

失败诊断与隐私

旧 head 77f00cd6 的 Windows run 40442050131 中,测试请求 680px 后实际 WebView viewport 为 664px,网格仍可显示 8 列;测试却只检查 <800px,因此错误地期待 4x5 fixture。当前测试要求 viewport 和网格容器都处在能形成四列的实际尺寸区间。该失败没有证明产品实现偏离 ref。

同一旧 run 的 Profile auto-update main-first 回归也单次失败在 legacy 编辑框等待;该 Profile 源码/测试不属于本 PR 改动,基线 run 40424102601 的 Desktop suites 全通过,需由最终 head 的 E2E 结果确认是否复现。截图和 HTML 是隔离 E2E runtime 的原始采集文件,不要未经检查转发。

独立 Reviewer

独立只读审查没有发现 P0–P2 阻塞。复核确认 400px 最小窗口目标与 Windows WebDriver 尺寸行为兼容,并补充测量 [304px, 384px) 的 DndGrid 容器范围,避免更窄网格仍选中同一最近布局。审查未运行测试;最终 Windows E2E 仍待完成。

远端状态及合并

@MFSGA
MFSGA merged commit 5c491b2 into master Oct 27, 2026
8 checks passed
@MFSGA
MFSGA deleted the codex/ref-dashboard-resize branch October 29, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant