How sserdardundar/github-smart-downloader works
GitHub Smart Downloader is a Chrome extension that turns a repository, folder, or selected files into a ZIP. Users start from GitHub’s injected controls or the popup, choose a branch or selection, and the background worker coordinates a download job. The offscreen engine fetches or reuses repository data, applies filters or selections, and builds the archive before the browser downloads it; progress is shown in the UI. The README documents these capabilities; sampled excerpts do not expose every message handler, so uncertain links are omitted.
Main entry points: background.js Background Worker · offscreen.js Offscreen Processor · popup.js Popup and Branch Picker · contentScript.js GitHub Page Controls
Components 16
User Interfaces
- GitHub Page Controls
js/contentScript.js - Popup and Branch Picker
js/popup.js
Download Coordination
- Background Worker
js/background.js - Shared Parsing and Planning
js/shared.js
Archive Engine
- Offscreen Processor
js/offscreen.js - Repository Enumeration
js/offscreen.js - Selection and Exclusions
js/offscreen.js - Archive Fetch and Extraction
js/offscreen.js - Shared Archive Cache
js/offscreen.js - ZIP Generation
js/offscreen.js - IndexedDB Archive Store
js/offscreen.js
Settings and State
- Preferences UI
js/settings.js - Extension Storage
Other components
- User
- GitHub API and Content
- Browser Downloads
Connections 23
- User → GitHub Page Controls: select items
- User → Popup and Branch Picker: start download
- User → Preferences UI: configure
- GitHub Page Controls → Background Worker: submit job
- Popup and Branch Picker → Background Worker: submit job
- Popup and Branch Picker → GitHub API and Content: fetch branches
- Background Worker → Shared Parsing and Planning: plan strategy
- Background Worker → Offscreen Processor: delegate job
- Offscreen Processor → Repository Enumeration: enumerate files
- Offscreen Processor → Selection and Exclusions: expand and filter
- Offscreen Processor → Archive Fetch and Extraction: fetch archive
- Repository Enumeration → GitHub API and Content: request tree
- Archive Fetch and Extraction → GitHub API and Content: fetch repository data
- Archive Fetch and Extraction → Shared Archive Cache: reuse or store
- Archive Fetch and Extraction → IndexedDB Archive Store: read or write
- Offscreen Processor → ZIP Generation: generate ZIP
- Background Worker → Browser Downloads: start download
- Background Worker → GitHub Page Controls: send progress
- Background Worker → Popup and Branch Picker: send progress
- GitHub Page Controls → Extension Storage: read preferences
- Popup and Branch Picker → Extension Storage: read and write
- Preferences UI → Extension Storage: read and write
- Background Worker → Extension Storage: persist job data