Initial commit: AeroFetch — yt-dlp/YouTube downloader for Windows

Electron + React (Fluent UI) desktop frontend for yt-dlp:
- Download queue with live progress, concurrency cap, cancel/retry
- Format/quality picker via yt-dlp probe; audio extraction to MP3
- Settings + history persistence (electron-store / JSON)
- Clipboard link auto-detect; persisted light/dark theme
- NSIS + portable packaging (binaries bundled at build time, not in git)

UI: "Studio" sidebar layout with a toffee-brown theme (light + neutral dark).
Dropdowns use a native <select> and tooltips a CSS-only Hint, to avoid a
dev-machine GPU overlay flicker/blank issue.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 18:17:41 -04:00
commit 1a2270c95e
39 changed files with 11351 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
import { app } from 'electron'
import { join } from 'path'
import { is } from '@electron-toolkit/utils'
/**
* Resolves the directory holding the bundled binaries (yt-dlp.exe, ffmpeg.exe).
*
* In dev they live in the repo at resources/bin/.
* In a packaged build, electron-builder's extraResources copies them to
* <resources>/bin (see electron-builder.yml), reachable via process.resourcesPath.
*/
export function getBinDir(): string {
return is.dev ? join(app.getAppPath(), 'resources', 'bin') : join(process.resourcesPath, 'bin')
}
export function getYtdlpPath(): string {
return join(getBinDir(), 'yt-dlp.exe')
}
export function getFfmpegPath(): string {
return join(getBinDir(), 'ffmpeg.exe')
}