• v0.5.3 dbbcf55b2b

    ranger released this 2026-06-10 00:16:55 +00:00 | 1 commits to main since this release

    Per David: "this app is kinda done" — the product surface is feature-complete.

    What v0.5.3 adds

    User-customizable Quick Stations. New Options page card with a checkbox per SomaFM channel (all 46), each row showing name + genre pill + the SomaFM description. Default 8 (same curated tidy 2-row layout as v0.4.0). User picks any subset; NewTab chip row updates live via cross-surface storage sync. Robust fallback: if Options is opened before the NewTab cache is populated, it fetches SomaFM channels.json directly + caches it back. Empty-pick state shows "No Quick Stations picked — set some in Settings" instead of a silent gap.

    History export. Two new buttons in the Local Data card: Export history (JSON) and Export history (CSV). JSON is pretty-printed for re-import; CSV is RFC 4180 quoted with header artist,title,station,station_id,when_iso — opens cleanly in Excel/Numbers/Google Sheets. Filename: rangerhq-tuner-history-YYYY-MM-DD.{ext}. Entire export runs client-side; nothing sent off-device.

    Workflow

    This release is tagged on Gitea but waiting on Chrome Web Store. The v0.5.0 ZIP is currently in re-review; when it clears, well build a fresh v0.5.3 ZIP directly from main and upload THAT as the next user-visible update. Users at v0.4.0 jump straight to v0.5.3, getting all the polish (light/dark/auto theme + back-link + Quick Stations picker + history export) in one update notification.

    Full detail in CHANGELOG.md.

    Downloads
  • v0.5.2 88f80a27c1

    ranger released this 2026-06-09 23:51:01 +00:00 | 6 commits to main since this release

    Hotfix for v0.5.1 — the BAGeL Radio slug doesn no longer exists in SomaFMs current channels.json (BAGeL has been retired by SomaFM). The render loops drop-missing-slug behaviour silently hid the chip, so v0.5.1 was effectively rendering only 13 chips instead of the intended 14.

    Replaced with PopTron (alternative / alt-rock) — fills the same genre slot BAGeL covered and is currently a live SomaFM channel.

    One-line change in src/newtab/newtab.js QUICK_IDS array. No CSS, no permissions, no dependencies, no behaviour change.

    Still held from Chrome Web Store upload until v0.5.0 clears re-review.

    Downloads
  • v0.5.1 04dc3b70ec

    ranger released this 2026-06-09 23:32:42 +00:00 | 9 commits to main since this release

    Third update of 2026-06-10. Tagged on Gitea but held from the Chrome Web Store until v0.5.0 clears re-review.

    Expands the NewTab Quick Stations chip row from 8 to 14 channels for broader genre coverage and two on-brand picks:

    • DEF CON Radio (defcon) — electronic / hacker culture, the test station from v0.3.0 dev
    • Beat Blender (beatblender) — electronic / breakbeat
    • Boot Liquor (bootliquor) — americana / outlaw country
    • Underground 80s (u80s) — 80s indie / synthwave
    • BAGeL Radio (bagel) — indie / alt-rock
    • ThistleRadio (thistle) — Celtic / folk — Dublin-built nod 🇮🇪

    Only one file changed: src/newtab/newtab.js QUICK_IDS array, +19/-8 lines. The render loop drops missing slugs silently so retired upstream channels just disappear from the chip row without errors.

    Shipping order: v0.5.0 (light mode + theme toggle + back-link + first-run hint) lands first, then this v0.5.1 stations expansion on top.

    Downloads
  • v0.5.0 c3e3cc16fd

    ranger released this 2026-06-09 23:22:16 +00:00 | 12 commits to main since this release

    Three bundled UX improvements, ~36 hours after v0.4.0 cleared the Chrome Web Store.

    Light mode support across all three surfaces — popup, NewTab, Options. Auto-follows OS via @media (prefers-color-scheme: light). Brand identity preserved (forest green stays as the accent in both modes).

    Manual theme toggle — new Auto / Dark / Light radio group in a new Appearance card on the Options page. Stored in chrome.storage.local under tuner.theme. Exists because there are three independent theme layers (OS, browser-chrome, page CSS) that can disagree — @media (prefers-color-scheme: ...) reads the OS layer only. Users with mismatched layers (e.g. macOS light + Chrome dark theme) can override the auto-follow.

    Options → Tuner back-link — the Options page header brand becomes a clickable anchor pointing at the player UI. Subtle ← glyph + same-tab navigation so users dont accumulate Tuner tabs.

    Zero new permissions. Zero new dependencies. ~340 lines added across 8 files (1 new file src/lib/theme.js).

    Downloads
  • v0.4.0 f796fe8223

    ranger released this 2026-06-09 21:15:17 +00:00 | 18 commits to main since this release

    Same-day update after v0.3.0 went LIVE on the Chrome Web Store.

    First post-launch polish. Pure UX hint — discoverable first-run affordance pointing new users at the station list. Zero new permissions, zero new dependencies, zero behaviour change for existing users.

    What changes

    • Subtle accent-green glow pulses around the station list (popup) and Quick Stations chip row (NewTab)
    • Bouncing ↓ arrow appended to the "Pick a station to begin" text in both surfaces
    • Both cues controlled by a body.is-first-run class — toggled when currentStation is null, removed the moment a user picks anywhere
    • Cross-surface sync: picking a station in popup clears the hint on NewTab and vice versa

    Files touched: 4 (popup css/js + newtab css/js). Total: +92 lines, 0 deletions.

    Existing users with a stored tuner.currentStationId never see either cue.

    Will be uploaded to the Chrome Web Store same evening; same-account update review window is ~24-48h.

    Downloads
  • v0.3.0 ad43df87c0

    ranger released this 2026-06-08 23:23:44 +00:00 | 30 commits to main since this release

    🎉 LIVE on the Chrome Web Store since 2026-06-09 — install at https://chromewebstore.google.com/detail/bmdmepddehnpbdffkblbjofgkllmpkgp

    Web Store submission target. Mirrors rangerhq-radio v1.0.0 track-history pattern (inc/history.php) byte-for-byte. Headline features:

    • New Tab Page override with player + clock + quick stations
    • Track history (FIFO 500, dedup, skip (unknown))
    • 4-button per-track search (Spotify / YouTube / Apple Music / Bandcamp — public search URLs, no auth, no API keys)
    • Options page with live stats, history-cap slider, clear-everything wipe
    • Popup nav row (Open in tab / History / Settings)
    • Cross-surface sync via chrome.storage.onChanged
    • Storage gateway routing offscreen writes through the service worker
    • Parallelised metadata polling for ~1-2s first-track display

    Narrow permissions (offscreen + storage + somafm.com only) — no tabs, no <all_urls>, no webRequest, no third-party SDKs.

    Approved by Chrome Web Store ~15.5 hours after submission. Same day as RangerHQ Radio v1.0.0 stability milestone on wp.org.

    Downloads