Rust Core
Downloads, disk scans, ffmpeg jobs, and SponsorBlock fetches run in Rust. The React layer invokes and renders.
Command modules under src-tauri/src/commands/ own IO-heavy work. downloader.rs spawns yt-dlp children, parses stdout into download-progress events, and cleans up on pause or cancel. gallery.rs walks configured folders, merges playlist stacks, dedupes by yt-dlp id, and normalizes chapter arrays from sidecars.
media.rs runs ffmpeg/ffprobe sidecars with per-video async locks (with_per_video_ffmpeg_lock). That fixed a past deadlock where nested locks on the same file blocked sprite generation during playback. Auto scrub previews enqueue sprite sheets when a video download finishes (unless audio-only or the setting is off).
explorer_embed.rs positions the embedded browser: in-window child on Windows, parented surface on Linux dev builds. Bounds sync coalesces through explorerBoundsSync.ts during sidebar animation so IPC does not fire on every frame.
Windows-only niceties live here too: windows_audio_brand.rs renames WebView2 audio sessions in the volume mixer to "RuForge" with the app icon. Linux dev builds get broader asset scopes and platform path hydration from Tauri APIs.
In the repo
Where it shows up
-
src-tauri/src/lib.rscommand registration -
downloader.rs,gallery.rs,media.rs,sponsorblock.rs -
explorer_embed.rsfor Explorer bounds and visibility - Sidecar resolution for yt-dlp, ffmpeg, ffprobe under
binaries/