feat: Phase O Windows-native integration + settings search

- Taskbar progress bar: renderer pushes summarizeQueue aggregate over a new
  taskbar:progress channel (App store subscription); setProgressBar normal/error
- System tray (src/main/tray.ts) + minimize-to-tray (Settings.minimizeToTray);
  close hides to tray, isQuitting guards real exits; icon via getAppIconPath()
  (build/icon.ico added to extraResources)
- Jump list: app.setUserTasks "Open AeroFetch" (thumbnail toolbar deferred)
- Settings search: filters the ~11 SettingsView cards live by text match

Overlay badge deferred (needs a drawn NativeImage). typecheck + test (192) +
build all clean. Roadmap: Phase O COMPLETE.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 11:20:28 -04:00
parent da37690b42
commit 20ee913394
12 changed files with 222 additions and 25 deletions
+13 -1
View File
@@ -76,7 +76,9 @@ export const IpcChannels = {
terminalRun: 'terminal:run',
terminalCancel: 'terminal:cancel',
/** main → renderer push channel for live terminal output lines */
terminalOutput: 'terminal:output'
terminalOutput: 'terminal:output',
/** renderer → main: reflect overall queue progress on the Windows taskbar (Phase O) */
taskbarProgress: 'taskbar:progress'
} as const
/** Sentinel format id meaning "let yt-dlp pick the best video+audio". */
@@ -510,6 +512,8 @@ export interface Settings {
autoDownloadNew: boolean
/** false until the first-run welcome screen has been dismissed */
hasCompletedOnboarding: boolean
/** keep AeroFetch running in the system tray when its window is closed (Phase O) */
minimizeToTray: boolean
}
/**
@@ -709,3 +713,11 @@ export interface TerminalRunResult {
ok: boolean
error?: string
}
/** Overall queue state for the Windows taskbar progress bar (Phase O). */
export interface TaskbarProgress {
/** 0..1 overall fraction; ignored when mode is 'none' */
fraction: number
/** taskbar bar mode: hidden, normal, or red (some failed) */
mode: 'none' | 'normal' | 'error'
}