Skip to content

fix(macos): #1599 恢复系统重开的设置窗口内容 - #1601

Merged
xiaoyumuxi merged 1 commit into
1lck:previewfrom
lin-coco:codex/1599-macos-settings-restoration
Oct 30, 2026
Merged

xiaoyumuxi merged 1 commit into
1lck:previewfrom
lin-coco:codex/1599-macos-settings-restoration

Conversation

@lin-coco

Copy link
Copy Markdown
Contributor

Fixes #1599

macOS 恢复之前打开的设置窗口时,没有经过显式设置命令建立会话绑定,导致窗口持续空白。本次在设置宿主出现时补齐绑定,保留系统窗口恢复。

改动

  • 设置宿主始终保留真实容器,在出现事件中准备会话;不在视图求值时修改状态。
  • 准备绑定是幂等操作:已有有效模型继续保留原项目上下文与绑定令牌,缺失或失效时使用当前会话。
  • 设置关闭和释放均校验本次绑定令牌,旧内容的消失回调不能清除同一会话重新打开的窗口,也不能重置新窗口的呈现状态。
  • 补充首次恢复、重复呈现、关闭后重开、失效会话替换、旧回调和真实原生宿主挂载的回归;原生测试覆盖深浅外观。原有跨窗口归属与插件页面清理测试继续覆盖。
  • 补充设置恢复生命周期的 Agent Note,并更新 application-settings 功能矩阵。没有新增持久化字段或公共契约。

验证

  • 修复前隔离测试包连续 3/3 恢复出空白 settings;修复后 3/3 恢复出完整设置,系统日志逐轮确认恢复标识。应用重开验收涵盖欢迎页、项目上下文、深浅外观、搜索、取消/确认/标题栏关闭和再次打开。没有执行额外的整机重启。
  • 运行前后比较应用包文件 SHA-256:修复前 756 个文件、修复后 766 个文件,分别保持不变。测试实例和辅助进程已关闭,临时 app 已注销并移除。
  • 相关测试 6 项通过(原生宿主测试含 2 个外观参数用例),逐项计时报告见本地 .artifacts/test-stability/settings-restoration-final.{json,html,junit.xml}。
  • 通过测试稳定性、架构边界、运行时 bundle 只读、i18n、Agent Note 和功能矩阵校验。
  • 独立只读审查未发现新增缺陷。

验证限制

本机为 macOS 27.2 / Xcode 27.1 / Swift 6.4,与仓库固定 Swift 6.3.3 不同。完整 macOS 测试记录 3802 项,其中 3801 项通过,唯一失败是未修改的 PluginUIIconTests.commandPaletteUsesSelectedTintAndPreservesBrands:4 个参数组合共 8 条禁用行鼠标点击断言失败。使用未修改的 preview 基线 f3ee7114ff713e9ddd2659c6cd6db353abef3138 重新编译并执行同一测试,也得到完全相同的 8 条失败;对照后已逐字节恢复修复源码。本 PR 保留该测试,未放宽断言或跳过检查。

完整测试报告:.artifacts/test-stability/settings-restoration-full.{json,html,junit.xml};基线对照:.artifacts/test-stability/preview-baseline-icon.{json,html,junit.xml}。固定工具链和其他平台结果以本 PR CI 为准。

@ghfind-review ghfind-review Bot added the review: medium ghfind author score; see https://ghfind.com label Oct 30, 2026
@lin-coco
lin-coco marked this pull request as ready for review October 30, 2026 08:07
@lithe-code-review

lithe-code-review Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Lithe Review

结论: ⚠️ 有建议
范围: preview ← codex/1599-macos-settings-restoration · head: 8f243d3

未发现需要阻塞合并的问题。未发现满足证据要求的新增代码缺陷。

Scope Check

  • 关联需求:[Bug] macOS 重启恢复设置窗口后持续空白 #1599 的缺失会话绑定路径已补齐;作者报告应用退出后重开连续 3/3 恢复正常,未进行额外整机重启。
  • 已完成范围:宿主出现时建立绑定、有效绑定幂等保留、旧令牌关闭与释放保护,以及对应测试、Agent Note 和功能矩阵更新。
  • 复用与架构:沿用 AppKit/SwiftUI 窗口恢复和现有会话管理;未新增持久化字段、资源路径或跨平台契约。

Suggestions

  1. 在 PR 描述或评论中补充修复前后截图,展示恢复后的完整设置内容。当前上下文仅提供 Issue 中修复前的截图链接,视觉效果尚未验证。
  2. 补充固定 Swift 6.3.3 工具链下的编译及相关测试结果。当前提供的 Swift tests 为 skipped,macOS CI gate success 不能单独证明该测试车道实际执行通过。

Summary

绑定准备与释放的职责清晰,令牌检查覆盖了同一会话重新打开时的旧回调风险。新增测试包含真实宿主挂载、深浅外观、有界等待及清理路径;静态审查未发现明确回归。

Verification

  • 已检查完整清单中的 7 个变更文件及 base 对照,并追踪 RootView → bindSettings → SettingsWindowHost → closeSettingsIfCurrent/releaseSettings,核对 TestGate 和 WorkbenchTestScope。
  • 作者报告:相关测试 6 项通过;完整测试 3802 项中 3801 项通过,唯一失败在 preview 基线得到相同结果;相关静态门禁及 bundle 哈希检查通过。这些结果未由本次审查独立复核。
  • 已提供的 Check Run 中,Agent Notes 和功能矩阵检查成功;Swift tests 显示 skipped。
  • 本次未修改文件、访问网络、运行应用、仓库代码或测试。固定工具链结果及修复后截图仍待补充,视觉效果尚未验证。

@xiaoyumuxi

Copy link
Copy Markdown
Collaborator

好的好的,这个问题我电脑上没有遇到过,我看看

@xiaoyumuxi
xiaoyumuxi merged commit 0cfab73 into 1lck:preview Oct 30, 2026
31 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: medium ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants