609e0edf60fc027da382b6a6ab5747dcd29cfe81
Adds 6 more SomaFM channels to the NewTab Quick Stations chip row. Was reading sparse with only 8; the row had space for more. Selections broaden genre coverage and add two on-brand picks: + defcon DEF CON Radio (electronic / hacker culture) + beatblender Beat Blender (electronic / breakbeat) + bootliquor Boot Liquor (americana / outlaw country) + u80s Underground 80s (80s indie / synthwave) + bagel BAGeL Radio (indie / alt-rock) + thistle ThistleRadio (celtic / folk — Dublin nod) Total chip count: 8 → 14. No code change other than the QUICK_IDS array. The render loop already drops any ID that's missing from SomaFM's channels.json catalogue, so if a slug changes upstream it just disappears silently. DEF CON Radio = David's personal favourite (used as the test station throughout v0.3.0 development). ThistleRadio = Irish-built extension nodding to Celtic folk. Both feel right for the demographic this product serves.
RangerHQ Tuner
🎉 Install from the Chrome Web Store →
Lightweight indie internet radio player for Chrome. Plays SomaFM in any browser tab. Manifest V3, vanilla JS, no telemetry.
Sibling to rangerhq-radio (the WordPress version).
Tier 1 — MVP (current)
- ✅ Manifest V3 + Offscreen API audio
- ✅ Loads all SomaFM channels from
channels.json - ✅ Pick a station, click Play, audio runs in background
- ✅ Volume + state persisted across popup open/close
- ✅ Catalogue cached 6h in
chrome.storage.local - ✅ Source-adapter pattern in place for future networks
Install (developer mode)
- Open
chrome://extensions - Toggle Developer mode on (top right)
- Click Load unpacked → pick this folder (
rangerhq-tuner/) - Pin the extension to your toolbar (puzzle icon → pin)
- Click the toolbar icon → pick a SomaFM station → ▶ Play
Project layout
rangerhq-tuner/
├── manifest.json
└── src/
├── background/service-worker.js # message router, no audio here
├── offscreen/offscreen.{html,js} # the <audio> element host (MV3 needs this)
├── popup/popup.{html,css,js} # the toolbar UI
├── sources/ # extensibility seam
│ ├── base-source.js # RadioSource interface (JSDoc)
│ ├── somafm.js # first concrete adapter
│ └── index.js # registry
├── lib/ # shared utilities
└── assets/icons/ # 16/32/48/128 PNGs
License
GPL-2.0-or-later — matches the rest of the RangerHQ family.
Releases
6
Languages
JavaScript
58.3%
CSS
31.4%
HTML
10.3%