How marcr11/jasd works
JASD is an Electron desktop downloader. The main workflow is entering a media URL, fetching its available media or playlist information, choosing download options, then managing queued downloads and their progress until files are saved. The README also documents parallel downloads, audio-only and video formats, cookies, output-folder controls, localization, and update support. Some renderer services and IPC handlers were only partially sampled, so the graph shows documented capabilities but omits uncertain internal wiring.
Main entry points: preload.js IPC bridge · app.js Renderer entry · settings.js Settings interface · download.js Download handler
Components 22
Desktop interface
- App window
src/index.html - Renderer entry
src/js/app.js - Views and dialogs
src/js/components/ui.js - Themes
src/js/lib/themes.js - Localization
src/js/lib/i18n.js - Language catalogs
src/js/lib/locales
Download workflow
- Download controls
src/js/services/download.js - Download queue
src/js/services/queue.js - Download handler
src/browser/ipc/download.js - yt-dlp resolver
src/browser/utils/ytdlp.js
Electron services
- IPC bridge
src/browser/preload.js - Main process
src/browser/index.js
Preferences and support
- Data handlers
src/browser/ipc/data.js - Tools and updates
src/browser/ipc/tools.js - Settings interface
src/js/services/settings.js - JSON storage
src/browser/utils/storage.js - App data files
Other components
- User
- Media sites
- Downloaded files
- FFmpeg
- GitHub releases
Connections 31
- User → App window: uses
- Renderer entry → App window: renders
- Renderer entry → IPC bridge: loads preferences
- Renderer entry → Download controls: wires controls
- Renderer entry → Download queue: renders queue
- Renderer entry → Settings interface: sets up
- Renderer entry → Themes: applies theme
- Renderer entry → Localization: applies language
- Download controls → IPC bridge: requests media actions
- Download controls → Download queue: adds downloads
- Download queue → IPC bridge: starts and cancels
- IPC bridge → Download handler: dispatches downloads
- IPC bridge → Data handlers: dispatches data requests
- IPC bridge → Tools and updates: dispatches tool requests
- Main process → Download handler: registers handlers
- Main process → Data handlers: registers handlers
- Main process → Tools and updates: registers handlers
- Download handler → yt-dlp resolver: locates executable
- Download handler → Media sites: fetches and downloads
- Download handler → Downloaded files: saves output
- yt-dlp resolver → FFmpeg: uses for processing
- Data handlers → JSON storage: reads and writes
- JSON storage → App data files: persists settings and queue
- Tools and updates → GitHub releases: checks releases
- Tools and updates → GitHub releases: downloads updates
- Settings interface → IPC bridge: manages preferences
- Settings interface → Themes: changes appearance
- Settings interface → Localization: selects language
- Localization → Language catalogs: looks up strings
- Settings interface → Tools and updates: checks tools and updates
- Settings interface → IPC bridge: manages cookies