A fast, minimal download manager built with Wails + Svelte + Go.
- Download management — add URLs, pause, resume, delete downloads
- Real-time progress — SSE event streaming with live speed & ETA
- Launch at Login — toggle auto-start via macOS LaunchAgent
- Dock / Menu Bar mode — choose where the app icon lives
- Single instance — opening the app twice just focuses the existing window
- Dark UI — obsidian-themed interface
- Go 1.21+
- Node.js 18+
- Wails CLI v2
- Surge CLI running as backend server
wails devOpens the app with hot-reload for frontend changes.
wails buildProduces build/bin/Surge.app (macOS).
surge-wails/
├── app.go # Backend: download API, SSE, autostart, icon mode
├── main.go # Wails app entry point & config
├── icon_mode_darwin.go # macOS native: dock ↔ menu bar switching
├── icon_mode_stub.go # Non-macOS stub
├── frontend/
│ ├── src/
│ │ ├── App.svelte # Main UI component
│ │ ├── style.css # Global styles
│ │ └── main.ts # Svelte entry
│ └── wailsjs/ # Auto-generated Go bindings
├── build/
│ ├── appicon.png # App icon source
│ └── darwin/ # macOS plist templates
└── wails.json # Wails project config
- Start the Surge backend server (
surge server) - Launch the app — it auto-detects the running server
- Paste a URL in the top bar and hit Enter to download
- Use the footer toggles for startup and dock/bar mode
MIT
