d8107a06c2068ef0e44a809e7237043b89dc018f
The build config only had a Windows target. Adds a linux block producing
an AppImage, plus a 512x512 build/icon.png so the packaged app does not
ship with the stock Electron icon.
Verified by running the packaged binary: the embedded server comes up on
9095 and serves the overlay from process.resourcesPath, confirming the
extraResources mapping works in a packaged build.
StartupWMClass is deliberately not set via linux.desktop -- electron-builder
already emits the correct value, and the nested { entry: {...} } form leaks a
literal "entry=[object Object]" line into the .desktop file.
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.