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。
- 若后续要完全消除首次冷启动扫描等待,可以再评估持久化轻量快照;本轮未做,以控制风险。