fix/runner-labels
The mac job targeted macos-arm64, but the registered Mac runner is labelled macos-latest, so that job would have queued forever rather than failing -- a job with no matching runner is silently pending. Also switches the publish step to secrets.GITEA_TOKEN, which Gitea injects automatically and scopes to the repo, instead of requiring a hand-created RELEASE_TOKEN. RELEASE_TOKEN still overrides it if wider rights are needed. Runners confirmed via /api/v1/admin/actions/runners: ubuntu-latest, windows-latest (x2) and macos-latest are all online. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
What's That Music
A desktop app that plays YouTube Music and serves a now-playing overlay for OBS.
The app is a single Electron window that loads music.youtube.com. It also runs a small HTTP/WebSocket server on localhost:9095 that streams the current track to any connected overlay client. Point OBS (or any browser) at http://localhost:9095/ to see the overlay.
Run from source
cd desktop-client
npm install
npm start
The app opens. Sign in to YouTube Music. Play a track. Visit http://localhost:9095/ in another browser to see the overlay.
Build a Windows zip
cd desktop-client
npm run build -- --win zip --x64
Output: desktop-client/dist/WhatsThatMusic-<version>-win.zip. Unzip on a Windows machine and run WhatsThatMusic.exe. The app is unsigned, so SmartScreen will warn on first launch — click "More info → Run anyway."
OBS setup
- Add a Browser Source.
- URL:
http://localhost:9095/. - Width / height: match your scene (the overlay positions itself absolutely; 1920x1080 is fine).
- Make sure the app is running before OBS loads the source.
Tests
cd desktop-client
npm test
Runs the node:test unit suite (desktop-client/tests/).
Layout
desktop-client/— the Electron app (main entry, server module, preload scraper, tray).overlay/— static HTML + JS the bundled server serves at/.docs/superpowers/— design and plan documents.