Clone
2
Home
David Keane edited this page 2026-06-09 17:14:33 +01:00

RangerHQ Tuner Wiki

A lightweight Chrome extension for SomaFM internet radio with track history and one-click search to the big-four music services.

Status v0.3.0 — LIVE on Chrome Web Store since 2026-06-09
Install chromewebstore.google.com/detail/bmdmepddehnpbdffkblbjofgkllmpkgp
Latest tag v0.3.0
Licence GPL v2 or later
Landing page https://davidtkeane.com/rangerhq-tuner
Privacy policy https://davidtkeane.com/rangerhq-tuner/privacy
Family Sibling to RangerHQ Radio (WordPress)

What it does

RangerHQ Tuner lives in your Chrome toolbar. Click the helmet icon, pick a SomaFM station, music starts. Audio keeps playing after the popup closes because it's hosted in a Manifest V3 offscreen document.

Every track that comes through gets logged to a capped FIFO history. Each entry in the history has four buttons next to it — Spotify, YouTube, Apple Music, Bandcamp — that open the corresponding service's public search results page in a new browser tab. No accounts, no API keys, no third-party SDK; just a way to find the track on whichever music service you actually use.

Optionally, RangerHQ Tuner replaces Chrome's default New Tab Page with a RangerHQ-branded landing that has the player + live clock + station picker + history + favourites.

  • Architecture — how Manifest V3 + the offscreen audio pattern + the source-adapter pattern all fit together
  • Adding a Radio Source — drop a single file in src/sources/, no other changes needed
  • Privacy — what's stored (locally only), what's not, what the four search buttons actually do
  • FAQ — common questions
  • Family — sibling projects (RangerHQ Radio, RangerHQ Buddy)

Install

From the Chrome Web Store (LIVE)

Install RangerHQ Tuner from the Chrome Web Store → click "Add to Chrome" → pin the helmet icon to your toolbar.

Developer mode (right now)

git clone https://git.davidtkeane.com/ranger/rangerhq-tuner.git

Then in Chrome:

  1. Open chrome://extensions
  2. Toggle Developer mode on
  3. Click Load unpacked
  4. Select the cloned folder
  5. Pin the helmet icon to your toolbar

Source layout

rangerhq-tuner/
├── manifest.json             # Manifest V3, narrow permissions
├── LICENSE                   # GPL v2 or later
├── README.md
├── CHANGELOG.md              # Keep a Changelog format
├── PRIVACY.md                # canonical privacy policy
├── store/                    # Chrome Web Store assets (not in zip)
│   ├── store-icon-128.png
│   ├── promo-tile-440x280.png
│   ├── marquee-1400x560.png
│   └── screenshots/
└── src/
    ├── background/
    │   └── service-worker.js     # message router + storage gateway
    ├── offscreen/
    │   ├── offscreen.html        # hidden audio host
    │   └── offscreen.js          # owns <audio> + 25s metadata polling
    ├── popup/                    # toolbar popup UI
    ├── newtab/                   # New Tab Page override UI
    ├── options/                  # Settings page
    ├── lib/
    │   ├── messages.js           # message type + target constants
    │   ├── history.js            # history + favourites + search URLs
    │   └── playlist-parser.js    # .pls parser
    ├── sources/                  # extensibility seam — see "Adding a Radio Source"
    │   ├── base-source.js        # RadioSource interface contract
    │   ├── somafm.js             # first concrete adapter
    │   └── index.js              # registry
    └── assets/
        ├── icons/                # 16/32/48/128 toolbar PNGs
        └── img/ranger.png        # master helmet logo

Building the Chrome Web Store package

cd rangerhq-tuner
zip -r ../rangerhq-tuner-v0.3.0.zip \
  manifest.json src/ LICENSE \
  -x "*.DS_Store" -x "*/.git/*" -x "*/node_modules/*"

Final size is ~133 KB.

Reporting issues / suggestions

Open an issue on this repo, or email david@davidtkeane.com.