feat: initial commit — RangerHQ Tuner v0.1.0 (Tier 1 MVP)
Chrome MV3 extension, browser-resident sibling to rangerhq-radio (WP plugin). Plays SomaFM via the chrome.offscreen API + a source- adapter pattern at src/sources/. Architecture highlights: - Audio runs in offscreen document — SW would get killed. - Source-adapter pattern locks Tier 1 contract (RadioSource interface in src/sources/base-source.js). Adding a network = drop a file + register one line in src/sources/index.js. - Vanilla JS, no build step. Pure ES modules. - No telemetry, no third-party JS. Outbound only to somafm.com. - Narrow permissions: offscreen + storage + somafm.com host_perms. No tabs, no <all_urls>, no webRequest. 22 files, ~30 min build following the saved plan at ~/.ranger-memory/projects/rangerhq-tuner-plan.md. Tier 2 + Tier 3 (Web Store submission) not started.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "RangerHQ Tuner",
|
||||
"version": "0.1.0",
|
||||
"description": "Lightweight indie internet radio player. Starts with SomaFM, extensible to more networks.",
|
||||
"author": "David Keane",
|
||||
"homepage_url": "https://davidtkeane.com/rangerhq-tuner",
|
||||
"icons": {
|
||||
"16": "src/assets/icons/icon-16.png",
|
||||
"32": "src/assets/icons/icon-32.png",
|
||||
"48": "src/assets/icons/icon-48.png",
|
||||
"128": "src/assets/icons/icon-128.png"
|
||||
},
|
||||
"action": {
|
||||
"default_title": "RangerHQ Tuner",
|
||||
"default_popup": "src/popup/popup.html",
|
||||
"default_icon": {
|
||||
"16": "src/assets/icons/icon-16.png",
|
||||
"32": "src/assets/icons/icon-32.png"
|
||||
}
|
||||
},
|
||||
"background": {
|
||||
"service_worker": "src/background/service-worker.js",
|
||||
"type": "module"
|
||||
},
|
||||
"permissions": ["offscreen", "storage"],
|
||||
"host_permissions": [
|
||||
"https://somafm.com/*",
|
||||
"https://*.somafm.com/*"
|
||||
],
|
||||
"minimum_chrome_version": "116"
|
||||
}
|
||||
Reference in New Issue
Block a user