edit | blame | history | raw

8.0.0 App Grid 主题系统工作日志

2026-06-24

起点

  • 分支:codex/dark-glass-8.0.0
  • 基线:v7.9.4-build20260619.2221
  • 目标:基于已认可方案实现 8 个高级渐变背景主题,并保留原浅色毛玻璃主题。
  • 关键约束:主题切换只改 UI;不动标签、拖拽、排序、搜索、数据和 SmartStart 功能语义。

方案决策

  • 8.0.0 先做“8 个高级渐变背景主题 + 自动玻璃适配”。
  • 不做容器玻璃深浅的独立开关,降低设置复杂度和 QA 面。
  • 默认主题使用浅色玻璃容器;深蓝和黑色使用深色半透明玻璃容器;粉色、紫色、绿色、蓝色、炫彩使用浅色玻璃容器,避免亮色主题被压成暗黑系。
  • 渐变只在 App Grid 全屏背景层实现,单个容器内部不做独立渐变,避免视觉噪声。
  • 炫彩主题取样自用户提供的 Meilang logo,使用青蓝、浅青、淡紫和粉色作为背景渐变来源,并降低饱和度保证可读性。

已完成实现

  • 新增 Apptag/AppGridTheme.swift
  • 主题枚举、存储 key、标题 key、背景渐变 token、预览色、玻璃适配策略。
  • 修改 AppDefaults.swift
  • 新增 appGridThemeID 默认值。
  • 将旧 useDarkAppGrid=true 迁移到 deepBlue
  • 修改 ContentView.swift
  • App Grid 背景读取当前主题。
  • 默认主题保持原浅色视觉。
  • 黑色主题跳过毛玻璃背板,使用 100% 纯黑全屏背景。
  • 深蓝主题保留暗色渐变和轻暗化层。
  • 粉色、紫色、绿色、蓝色、炫彩使用更明亮的全屏渐变,不叠加暗化层。
  • 修改 AppGridCollectionView.swift
  • 容器、标题、分隔线按主题自动选择浅色/深色玻璃适配。
  • 深蓝和黑色为暗玻璃;亮色主题为浅玻璃。
  • 移除 AppKit 层旧的全屏背景渐变,避免 SwiftUI/AppKit 双背景叠加。
  • 修改 PreferencesView.swift
  • 新增“主题”tab。
  • 新增 8 个主题选择卡片和主题说明。
  • 移除 General 页旧“启用深色视图”入口。
  • 更新 29 个 Localization/*.json
  • 新增主题 tab、说明和 8 个主题名称。
  • 删除旧深色视图设置文案。
  • 新增 Scripts/theme_settings_qa.sh
  • 新增根 CODEGRAPH.md,记录主题系统相关模块依赖。

2026-06-24 视觉反馈二次调色

  • 用户反馈:默认和深蓝可接受;黑色需要纯黑;粉色和炫彩需要明亮、年轻;绿色需要像明亮草坪/绿树后的毛玻璃;紫色和蓝色需要与深蓝拉开差异。
  • 调整结论:
  • 黑色:全屏背景为纯黑,不使用系统毛玻璃背板、不叠加渐变或暗化层。
  • 粉色:改为明亮粉、蜜桃和柔白高光,面向更年轻/少女取向。
  • 绿色:改为草坪绿、嫩绿和明亮高光,保持喜人而不沉闷。
  • 紫色:改为浅薰衣草到高饱和紫,和深蓝明显区分。
  • 蓝色:改为天空蓝、电光蓝和青色,和深蓝明显区分。
  • 炫彩:回到 Meilang logo 的青蓝、浅青、淡紫、亮粉取色方向,整体变亮。
  • 亮色主题统一改回浅色玻璃容器;深色玻璃仅保留给深蓝和黑色。

QA 记录

  • bash build.sh:PASS,生成 src/build/TagLauncher.app
  • codesign --verify --deep --strict --verbose=2 src/build/TagLauncher.app:PASS。
  • 29 个 localization JSON 解析:PASS。
  • bash src/Scripts/theme_settings_qa.sh:PASS,覆盖 8 主题、主题 tab、偏好迁移、纯黑策略、亮色主题浅玻璃策略和 29 语种文案。
  • bash src/Scripts/macos14_availability_typecheck_qa.sh:PASS。
  • bash src/Scripts/macos14_build_metadata_qa.sh:PASS。
  • bash src/Scripts/tag_navigation_hover_scroll_qa.sh:PASS。
  • bash src/Scripts/usage_tips_qa.sh:PASS。
  • bash src/Scripts/app_ordering_data_qa.sh:PASS。
  • bash src/Scripts/quick_search_system_app_qa.sh:PASS。
  • bash src/Scripts/quick_search_app_name_qa.sh:SKIP,本机未安装 QA fixture /Applications/贝锐向日葵被控.app

2026-06-24 15:06 二次调色 QA 与预览包

  • Build:20260624.1506
  • bash Scripts/theme_settings_qa.sh:PASS。
  • bash Scripts/macos14_build_metadata_qa.sh:PASS。
  • bash Scripts/macos14_availability_typecheck_qa.sh:PASS。
  • APP_BUILD=20260624.1506 bash build.sh:PASS。
  • codesign --verify --deep --strict --verbose=2 build/TagLauncher.app:PASS。
  • 构建产物版本:8.0.0 (20260624.1506)LSMinimumSystemVersion=14.0
  • bash Scripts/usage_tips_qa.sh:PASS。
  • bash Scripts/tag_navigation_hover_scroll_qa.sh:PASS。
  • bash Scripts/app_ordering_data_qa.sh:PASS。
  • bash Scripts/quick_search_system_app_qa.sh:PASS。
  • bash Scripts/apple_default_apps_resource_qa.sh:PASS。
  • hdiutil verify build/TagLauncher-8.0.0-theme-preview-build20260624.1506.dmg:PASS。
  • DMG:
  • src/build/TagLauncher-8.0.0-theme-preview-build20260624.1506.dmg
  • SHA256:
  • c2704c435ef0b0ba8e3ea17824cbd3ffe89c118f34a966547b98ab6db96ebac5

QA 基础设施备注

  • Scripts/window_logic_qa.sh 在本机 GUI 自动化环境中出现间歇性失败:
  • Dock 点击或全局热键偶发未触发 overlay。
  • Codex/输入法类 App 偶发抢前台,导致旧的 frontmost app 名断言误报。
  • 已对该脚本做两类非产品逻辑加固:
  • Quick Search 结果坐标识别不再依赖固定窗口宽度,并在失败时输出窗口列表。
  • 前台 app 名断言降级为诊断信息,核心仍由窗口层级断言覆盖。
  • 启动与热键触发增加重试等待。
  • 该脚本仍建议后续单独作为 QA 基础设施任务继续稳定化;本轮主题功能不依赖其失败点。

当前结论

  • 8.0.0 主题系统代码已实现。
  • 确定性 QA 已覆盖主题模型、设置入口、偏好迁移、多语种文案、构建签名、macOS 14 元数据、标签 hover、使用技巧、App 排序数据和系统 Quick Search 名称回归。
  • 下一步需要用户实际体验 8 个主题的视觉效果,再决定是否冻结和打包。

2026-06-24 15:53 编辑模式主题对比度修正

  • 用户反馈:亮色主题和黑色主题进入编辑模式后,顶部按钮、说明文字、确认按钮、标签列表和页面文字可读性不足。
  • 第一版修正策略:
  • 编辑层控件接入主题高对比 token,深色主题白字、亮色主题深字。
  • Build 更新为:20260624.1553

2026-06-24 15:53 QA 与预览包

  • bash Scripts/theme_settings_qa.sh:PASS。
  • bash Scripts/macos14_build_metadata_qa.sh:PASS。
  • bash Scripts/macos14_availability_typecheck_qa.sh:PASS。
  • APP_BUILD=20260624.1553 bash build.sh:PASS。
  • codesign --verify --deep --strict --verbose=2 build/TagLauncher.app:PASS。
  • bash Scripts/usage_tips_qa.sh:PASS。
  • bash Scripts/tag_navigation_hover_scroll_qa.sh:PASS。
  • bash Scripts/app_ordering_data_qa.sh:PASS。
  • bash Scripts/apple_default_apps_resource_qa.sh:PASS。
  • bash Scripts/quick_search_system_app_qa.sh:PASS。
  • 包内版本:8.0.0 (20260624.1553)LSMinimumSystemVersion=14.0
  • hdiutil verify build/TagLauncher-8.0.0-theme-preview-build20260624.1553.dmg:PASS。
  • DMG:
  • src/build/TagLauncher-8.0.0-theme-preview-build20260624.1553.dmg
  • SHA256:
  • 543a2f26676f3e57aac0edb26353a8f90d38d3e0290dfd1c951e62b1f3e409ea

2026-06-24 16:32 编辑模式主题策略简化

  • 用户反馈:继续按主题适配编辑态仍然复杂,要求做减法。
  • 新策略:
  • 用户进入编辑模式时,不管当前选择深蓝、黑色、粉色、绿色、炫彩或其他主题,App Grid 运行态渲染主题都临时切换为默认浅色毛玻璃。
  • 不写入 appGridThemeID,不改变设置页选择;退出编辑模式后自动恢复用户原主题。
  • App Grid 背景、AppKit collection renderer、编辑页顶部、标签列表、应用选择项都读取 renderedAppGridTheme
  • theme_settings_qa.sh 增加运行态主题 override 检查,防止编辑态重新跟随用户主题。
  • Build 更新为:20260624.1632

2026-06-24 16:32 QA 与预览包

  • bash Scripts/theme_settings_qa.sh:PASS。
  • bash Scripts/macos14_availability_typecheck_qa.sh:PASS。
  • APP_BUILD=20260624.1632 bash build.sh:PASS。
  • bash Scripts/macos14_build_metadata_qa.sh:PASS。
  • codesign --verify --deep --strict --verbose=2 build/TagLauncher.app:PASS。
  • bash Scripts/usage_tips_qa.sh:PASS。
  • bash Scripts/tag_navigation_hover_scroll_qa.sh:PASS。
  • bash Scripts/app_ordering_data_qa.sh:PASS。
  • bash Scripts/quick_search_system_app_qa.sh:PASS。
  • bash Scripts/apple_default_apps_resource_qa.sh:PASS。
  • 包内版本:8.0.0 (20260624.1632)LSMinimumSystemVersion=14.0
  • hdiutil verify build/TagLauncher-8.0.0-theme-preview-build20260624.1632.dmg:PASS。
  • DMG:
  • src/build/TagLauncher-8.0.0-theme-preview-build20260624.1632.dmg
  • SHA256:
  • 34962ce1f3114a0b4979125fa92cd788833593ac19173365434c717bd8f159bc

2026-06-24 17:31 App Grid 启动加载体验修复

  • 用户反馈:每次启动/打开 App Grid 都出现转圈等待,观感不好,且此前类似问题曾修过。
  • 根因结论:
  • App 启动时只预热 AppIndexer 的进程内扫描缓存。
  • 每次显示 App Grid 都会新建 OverlayWindow + ContentView,新的 ContentView.allApps 初始为空。
  • 在后台 AppLibraryController.refresh() 返回前,空态直接显示 ProgressView,因此用户能看到转圈。
  • 旧修复解决的是“缓存已热但新 ContentView 跳过 hydrate 导致 spinner 不消失”,没有解决冷启动或新面板首屏空态可见。
  • 本轮修复:
  • AppLibraryController 保存最近一次完整 AppLibrarySnapshot
  • ContentView.refreshAppsForOverlay() / refreshAppsForQuickSearch() 先复用最近快照,再后台刷新。
  • AppGrid 和编辑 AppGrid 的空态 spinner 改成 250ms 延迟显示;如果快照或扫描快速返回,不再闪现转圈。
  • 新增 Scripts/appgrid_startup_loading_qa.sh 锁住快照复用与延迟 spinner 规则。

2026-06-24 18:15 QA 与验收候选包

  • 包类型:验收候选包,仅供用户安装验证;本轮未做源码冻结、commit 或 tag。
  • Build 更新为:20260624.1815
  • bash Scripts/theme_settings_qa.sh:PASS。
  • bash Scripts/appgrid_startup_loading_qa.sh:PASS。
  • bash Scripts/macos14_availability_typecheck_qa.sh:PASS。
  • APP_BUILD=20260624.1815 bash build.sh:PASS。
  • /usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' build/TagLauncher.app/Contents/Info.plist8.0.0
  • /usr/libexec/PlistBuddy -c 'Print :CFBundleVersion' build/TagLauncher.app/Contents/Info.plist20260624.1815
  • codesign --verify --deep --strict --verbose=2 build/TagLauncher.app:PASS。
  • bash Scripts/macos14_build_metadata_qa.sh:PASS,LSMinimumSystemVersion=14.0minos=14.0arches=arm64
  • hdiutil verify build/TagLauncher-8.0.0-build20260624.1815.dmg:PASS。
  • DMG:
  • src/build/TagLauncher-8.0.0-build20260624.1815.dmg
  • SHA256:
  • 373355c87055680cb13e873bc5909abd84817d9ac2eaa98cc1ec2748be64bc80