最后更新:2026-06-25
用途:本文件是 TagLauncher 的长期工程地图。修改用户可见行为、状态模型、构建/发布入口、核心源码或 QA 入口前,应先读本文件,再读指向的真实源码。若本文件与源码不一致,以源码为准,并在同一任务内更新本文件。
/Users/ar/Projects/Taglauncher/Users/ar/Projects/Taglauncher/srcsrc/Apptag/src/build.shsrc/make_dmg.shsrc/Release/src/Scripts/src/Apptag/ApptagApp.swiftTagLauncherApp:SwiftUI App 入口。AppDelegate:菜单栏状态项、Dock 显示策略、热键注册、窗口打开、Quick Search 触发、App 生命周期。src/Apptag/OverlayWindowController.swiftOverlayPanel / OverlayWindowController:AppGrid 浮层窗口与显示/隐藏控制。src/Apptag/ContentView.swiftContentView:AppGrid 主界面、标签导航、编辑模式、拖拽处理、Quick Search 数据刷新、使用技巧浮层入口。appGridThemeID 并负责 AppGrid 全屏主题背景渲染。AppLibrarySnapshot 先渲染 AppGrid,再后台刷新,避免启动/重开时立刻显示转圈。ContentView 统一弹 modal 并写入 hideUsageTips / skipUsageTipsCloseReminder。src/Apptag/PreferencesView.swiftPreferencesView:设置窗口、语言、通用、主题、快捷键、标签、数据、关于等设置页。appGridThemeID,不得改变标签、排序、备注或分类数据。src/Apptag/AppGridCollectionView.swiftAppGridCollectionView:SwiftUI 到 AppKit NSCollectionView 的桥接。AppGridCollectionHostView:滚动容器、背景/使用技巧层、空白拖放处理。AppGridGroupCollectionItem / AppGridGroupCardView:分组容器、图标布局、分组标题、hover/高亮、容器内拖放。AppGridIconNSView:应用图标单元、点击、hover 气泡、拖拽起点。src/Apptag/AppGridTheme.swiftappGridThemeID。src/Apptag/AppGridSupport.swiftsrc/Apptag/TagNavigationView.swiftsrc/Apptag/AppDragCoordinator.swiftsrc/Apptag/DataLayer.swiftAppInfo:应用模型。AppDisplayNameResolver:多语言应用显示名解析。AppIndexer:扫描 /Applications 等应用来源,处理 bundle / wrapper / localized display name。TagGroup / TagColor:标签分组与颜色。TagDatabase:标签、备注、隐藏状态、分类方案、导入导出、备份和持久化。TagEditor:把数据库中的标签/备注/隐藏状态标注回扫描到的 App 列表。src/Apptag/AppLibraryController.swiftAppLibrarySnapshot,供新建 overlay 立即复用。src/Apptag/AppDefaults.swiftuseDarkAppGrid=true 在没有新 theme key 时迁移到 appGridThemeID=deepBlue。hideUsageTips 默认 false;skipUsageTipsCloseReminder 默认 false。src/Apptag/QuickSearch.swiftLauncherHotkey / LauncherHotkeyKind:主面板和 Quick Search 快捷键定义。LauncherHotkeyRegistrationStore:快捷键注册状态持久化。QuickSearchDocument / QuickSearchEngine:搜索索引与排序。QuickSearchPanelPresentationView / QuickSearchOverlayView / QuickSearchResultListHostView:Quick Search 浮层 UI 与结果列表。src/Apptag/SmartCategorization/SmartCategory.swiftsrc/Apptag/SmartCategorization/SmartCategorizationDraft.swiftsrc/Apptag/SmartCategorization/SmartStartService.swiftsrc/Apptag/AppleDefaultAppCatalog.swiftsrc/Apptag/SmartStartNoticeOverlay.swiftsrc/Apptag/L10n.swiftsrc/Apptag/Localization/*.jsonsrc/Apptag/Resources/src/Docs/Requirements/src/Apptag/Info.plistsrc/Apptag/TagLauncher.entitlementssrc/build.sh.app 的主入口。src/make_dmg.shsrc/Release/src/Scripts/macos14_availability_typecheck_qa.shsrc/Scripts/macos14_build_metadata_qa.shsrc/Scripts/apple_default_apps_resource_qa.shsrc/Scripts/apple_default_note_policy_qa.shsrc/Scripts/apple_default_note_migration_qa.shsrc/Scripts/smartstart_catalog_resource_qa.shsrc/Scripts/quick_search_app_name_qa.shsrc/Scripts/quick_search_system_app_qa.shsrc/Scripts/tag_navigation_hover_scroll_qa.shsrc/Scripts/tag_double_click_preferences_qa.shsrc/Scripts/theme_settings_qa.shsrc/Scripts/appgrid_startup_loading_qa.shsrc/Scripts/usage_tips_qa.shsrc/Scripts/usage_tips_close_reminder_qa.shsrc/Scripts/window_logic_qa.shsrc/Scripts/app_ordering_data_qa.shsrc/ 下维护。TagDatabase 的分类/标签业务数据。useDarkAppGrid=true 必须迁移到 deepBlue 主题。ContentView 初始 allApps.isEmpty 立刻显示转圈;应先复用最近一次完整快照,并延迟显示 loading。AppInfo.displayName,内部 bundle 名只作为搜索字段。ContentView.swift 通常会影响 AppGrid 主流程、编辑模式、Quick Search 数据刷新或浮层层级,必须做对应 smoke。AppGridCollectionView.swift 通常会影响 AppGrid 布局、拖拽、hover、使用技巧、容器显示和性能,必须扩大视觉/交互回归。AppGridTheme.swift 必须验证全部主题、编辑模式 override、亮/暗玻璃可读性和设置页文案。DataLayer.swift 通常会影响应用扫描、显示名、标签数据、导入导出和迁移,必须补数据 QA。PreferencesView.swift 通常需要检查 29 个本地化 JSON、设置持久化和 macOS 14 UI 表现。ApptagApp.swift 或 OverlayWindowController.swift 必须回归菜单栏、Dock 图标策略、热键、窗口层级、全屏/Split View 行为。