edit | blame | history | raw

CODEGRAPH

Stable Modules

  • App entry and overlay state: src/Apptag/ContentView.swift
  • Reads user defaults for AppGrid display, theme, tag navigation, usage tips, and hotkeys.
  • Owns the AppGrid full-window background rendering.
  • Reuses the last complete AppLibrary snapshot before showing startup loading UI.
  • Calls AppGridCollectionView for AppKit grid rendering.
  • App library snapshot assembly: src/Apptag/AppLibraryController.swift

  • Scans apps, reconciles tags, runs SmartStart when needed, and assembles AppGrid/Quick Search snapshots.
  • Keeps the most recent in-process AppLibrarySnapshot so newly-created overlay views can render immediately while background refresh catches up.
  • AppGrid collection renderer: src/Apptag/AppGridCollectionView.swift

  • AppKit NSCollectionView implementation for grouped app layout, drag/drop, app ordering, bubbles, and the native split teaching-banner usage tips overlay.
  • Should not own full-screen AppGrid theme gradients; it receives theme only for derived glass readability.
  • AppGrid theme model: src/Apptag/AppGridTheme.swift

  • Central source for theme IDs, localization keys, preview swatches, full-screen background gradients, derived glass tone, and edit-mode contrast tokens.
  • Persistent key: appGridThemeID.
  • Settings surface: src/Apptag/PreferencesView.swift

  • Custom SwiftUI settings tabs.
  • Theme tab writes only appGridThemeID; it must not mutate tags, app ordering, or category data.
  • Can be opened with an initial target tab from AppKit/overlay notifications.
  • Defaults and migrations: src/Apptag/AppDefaults.swift

  • Registers first-run defaults.
  • Migrates legacy useDarkAppGrid=true to appGridThemeID=deepBlue when no new theme key exists.
  • Localization: src/Apptag/Localization/*.json

  • 29 language JSON files.
  • New user-visible settings keys must be present in all files.

QA Entrypoints

  • src/Scripts/theme_settings_qa.sh
  • Verifies 8 theme cases, Theme tab, legacy dark-grid UI removal, AppGrid-only rendering boundary, edit-mode default-theme override, migration path, and 29-language keys.
  • src/Scripts/appgrid_startup_loading_qa.sh
  • Verifies AppGrid startup loading uses last-snapshot reuse and delayed spinner instead of immediately exposing empty-state loading.
  • src/Scripts/macos14_availability_typecheck_qa.sh
  • Typechecks for macOS 14.0 compatibility.
  • src/Scripts/macos14_build_metadata_qa.sh
  • Verifies build metadata and deployment target.
  • src/Scripts/usage_tips_qa.sh
  • Verifies native usage tips overlay, split teaching-banner layout, theme-aware accent/readability, click-through protection, close action, ordered-list details, and 29-language coverage.
  • src/Scripts/tag_navigation_hover_scroll_qa.sh
  • Verifies tag hover scroll semantics remain guarded.
  • src/Scripts/tag_double_click_preferences_qa.sh
  • Verifies double-clicking a tag navigation item opens Preferences on the Tags tab while preserving single-click activation, hover scroll, and long-press reorder wiring.

Protected Behavior

  • Theme changes are visual preferences and must not change tag data, app ordering, notes, SmartStart/category scheme, quick search, drag/drop behavior, or import/export data.
  • AppGrid startup and repeated overlay creation must not immediately show a spinner just because a new ContentView starts with allApps.isEmpty; it should first reuse the last complete in-process snapshot and only show loading after a short delay if no snapshot is available.
  • Editing mode uses a temporary runtime theme override: regardless of the stored appGridThemeID, editing renders as the default light glass AppGrid and restores the stored theme when edit mode exits.
  • Individual AppGrid containers must remain a consistent translucent glass surface. They may use a derived light/dark glass tone for readability, but must not receive per-theme internal gradients.
  • Edit mode controls must use the runtime rendered theme, not the stored theme, so editing stays visually identical to the default light AppGrid.
  • Deep Blue and Black use dark glass. Bright Pink, Purple, Green, Blue, and Colorful themes use light glass to keep the theme bright and readable.
  • The default theme preserves the original light AppGrid background.
  • Legacy users with useDarkAppGrid=true must land on the deepBlue theme.
  • Tag navigation single-click must keep immediate scroll behavior. Hover must keep guarded auto-scroll. Long-press must keep tag reorder behavior. Double-click may open Preferences on the Tags tab but must not replace those existing behaviors.
  • Usage tips must remain a native AppKit overlay, not SwiftUI. The bottom teaching banner must consume its own click region so it never opens underlying apps; only arrow hit regions change pages.
  • Usage tips title/detail text must remain readable across the default, dark, and bright App Grid themes; all visible usage-tip copy must stay complete across 29 localization files.

Last updated: 2026-06-25, usage tips teaching banner visual optimization.