edit | blame | history | raw

2026-06-24 主题系统启动加载修复

用户目标

  • 修复 App 启动或打开 App Grid 时可见转圈等待的问题。
  • 用户认可低风险方案:延迟显示 spinner,并复用最近一次 AppLibrary 快照。

当前起点

  • 工作区:/Users/ar/Projects/Taglauncher/.codex-worktrees/dark-glass-8.0.0
  • 分支:codex/dark-glass-8.0.0
  • 当前分支已有 8.0.0 主题系统实验改动,未冻结、未 commit、未 tag。

根因结论

  • OverlayWindowController 每次显示 App Grid 都会新建 overlay window 和 ContentView
  • ContentView.allApps 初始为空。
  • ContentView.onAppear 调用 refreshAppsForOverlay() 后,后台刷新未返回前,空态直接显示 ProgressView
  • 旧修复解决的是“缓存已热但新 ContentView 跳过 hydrate 导致 spinner 不消失”,没有覆盖冷启动或新面板首屏空态可见。

已完成改动

  • src/Apptag/AppLibraryController.swift
  • 新增进程内最近一次 AppLibrarySnapshot 缓存。
  • refresh、SmartStart 应用、系统初始化、重置未分类后都会更新该快照。
  • src/Apptag/ContentView.swift
  • App Grid / Quick Search 刷新前先尝试从最近快照 hydrate。
  • AppGrid 和编辑 AppGrid 空态 spinner 改为 250ms 延迟显示。
  • 刷新结束后清除延迟 spinner 状态。
  • src/Scripts/appgrid_startup_loading_qa.sh
  • 新增静态 QA,锁定快照复用和延迟 spinner。
  • CODEGRAPH.md
  • 增加 AppLibraryController 节点、启动加载 QA 和保护行为。
  • src/CHANGELOG.md
  • 记录 8.0.0 启动/重开 App Grid 加载体验优化。
  • src/Docs/Requirements/2026-06-24-app-grid-theme-system-worklog.md
  • 记录根因、修复策略和 QA 结果。

QA 结果

  • bash Scripts/appgrid_startup_loading_qa.sh:PASS。
  • bash Scripts/theme_settings_qa.sh:PASS。
  • bash Scripts/macos14_availability_typecheck_qa.sh:PASS。

未决事项

  • 本轮没有构建 DMG。
  • 本轮没有冻结、commit 或 tag。
  • 若后续要完全消除首次冷启动扫描等待,可以再评估持久化轻量快照;本轮未做,以控制风险。