Skip to content

fix: 图标新鲜度账本与叠放配对、传输引擎统一、自动整理重启灭杀修复(#553) - #535

Merged
Tianyu199509 merged 3 commits into
mainfrom
fix/icon-ledger-engine-unification
Oct 14, 2026
Merged

Tianyu199509 merged 3 commits into
mainfrom
fix/icon-ledger-engine-unification

Conversation

@Tianyu199509

Copy link
Copy Markdown
Owner

概要

本 PR 收拢 1.5.7 后的全部工作区批次:图标管线两线、传输引擎统一、自动整理重启灭杀修复,以及随之的复审收口。全量测试 5416 通过 / 0 失败(-p:Platform=x64)。

图标管线

  • 切组后叠放成员图标丢失:释放/获取配对不变式——keep-set 纳入折叠叠放预览前 4 成员,空闲幂等治愈漏斗接入渲染窗口调和,弹层打开/停靠成员复用/窗口再现三个显示转换触发点补齐获取半边。
  • 映射格子图标反复重载:生命周期触发的整格图标全清退役为逐项新鲜度账本(提取时记 size+mtime,刷新合并时版本失配才单项失效);九处全清调用点改为按需;唤醒路径保留负缓存重置维持超时重试能力。
  • 子文件夹计数按目录时间戳保留(消灭每次激活对账的串行全量子目录枚举);快捷方式目标 loaded 三件套(修复「合并拷贝无条件抹空 × 每代全量重读」两缺陷互掩对);GetIconAsync 遍历解析移出 UI 线程(UNC 每段网络往返不再卡 UI)。

传输引擎

  • 子目录剪切→返回主目录→粘贴永久卡死:AOT 同卷 legacy SHFileOperation 桥退役(MTA 无泵无看门狗形态),全部交互传输统一走现代 IFileOperation STA 引擎(45s 不活动看门狗 + 有界准入 + 原生进度/冲突/取消)。
  • 取消语义收口:取消带完成集按部分成功收尾(移回桌面 N>0 成功 / 0 提示、导入短成功);用户取消不再记失败历史条目。
  • 粘贴通道补齐与拖放相同的三道防线(源在传输中/已在目标目录/不安全目录),各有专属反馈。
  • 撤销权决策钉入契约:不设 FOF_ALLOWUNDO/FOFX_ADDUNDORECORD,应用独占撤销(防 Explorer Ctrl+Z 与应用内 undo 竞态)。
  • 冒烟矩阵重定向至现代引擎(Late 模式重定义为「看门狗判死但盘面已完成」);审计模式表/冒烟日志闸门/主控日志过滤器三层镜像同步。

自动整理(#553)

  • 每次重启规则被自动关闭:organizer 归一化从加载前置块移到 widget-layout 合并之后(Authoritative 门内、Deletion 之前)——此前规则灭杀判定跑在合并前,空格子列表把每条启用规则当「目标已删」灭掉并关闭总开关。
  • _widgetLayoutMerged 标志封堵 layout-await 窗口的启动保存竞态;布局提交/剥键双门加固;catch 重收养显式置标志。
  • 稳态/迁移首启/布局不可信会话三钉闭环。已灭规则不自动复活(与人工禁用不可区分),需在规则 UI 重选目标重启用。

复审收口

ReleasedEstimatedBytes 度量回退(前会话遗留量纲错乱);契约钉按比例纪律清理(计数钉降级、两个测试文件合并);folder-count 求值顺序钉。

验证状态

  • 已完成:全量测试 5416 绿;canonical Debug 重启验证;四域只读对抗审查(传输/图标/叠放/设置加载,零确认问题)。
  • 发版前欠:publish-aot-audit.ps1 AOT 审计构建(fixture 大改的唯一机器编译门);三进程持久化冒烟重定向后首跑;真机矩阵(叠放三态/取消反馈/自动整理重启复验)。

已登记债务

  • 文件夹拖入两通道取消路径靠 watcher 兜底源格子收敛(与表面通道契约不一致,low)。
  • 通知中心 undo 对 Public Desktop 项静默不可恢复(预存在,low)。
  • audit 受审源清单不含 FileService.ShellTransfer.cs(引擎本体仅两层镜像,low)。
  • ext: 关联图标变化无失效监听(SHCNE_ASSOCCHANGED 立项候选)。
  • layout 双文件损坏时「桌面清空一整个会话」独立边角。

图标管线:切组后叠放成员图标丢失修复(keep-set 含预览前 4 成员+空闲治愈
漏斗+调和/弹层/复用/再现触发点);生命周期全清退役为逐项版本账本(九处
调用点去全清,唤醒路径保留负缓存重置);子文件夹计数按时间戳保留;快捷
方式目标 loaded 三件套(修两缺陷互掩对);GetIconAsync 遍历解析移出 UI
线程。
传输引擎:AOT 同卷 legacy SHFileOperation 桥退役,交互传输统一现代
IFileOperation STA 引擎(修复子目录剪切回主目录粘贴永久卡死);取消
语义适配三处+用户取消不记失败历史;粘贴通道补齐三道防线;撤销权独占
决策钉入契约;冒烟矩阵/审计模式表/主控日志过滤器镜像同步。
复审收口:ReleasedEstimatedBytes 度量回退、契约钉比例清理、folder
count 求值顺序钉。
organizer 归一化移到 widget-layout 合并之后(Authoritative 门内、Deletion
之前),规则灭杀判定从此基于真实拓扑;_widgetLayoutMerged 标志封堵
layout-await 窗口内的启动保存竞态;布局提交/剥键双门加固;catch 重收养
显式置标志。稳态/迁移首启/布局不可信会话三钉闭环。已灭规则不自动复活,
需在规则 UI 重选目标重启用。
@Tianyu199509
Tianyu199509 merged commit fcd40ba into main Oct 14, 2026
1 check passed
@Tianyu199509
Tianyu199509 deleted the fix/icon-ledger-engine-unification branch October 14, 2026 09:12
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