shadowdaoandClaude Sonnet 5.5 e49078ee03 Fix now-playing scraper, quit hang, tray icon, and tray race (v1.0.1)
- Read the track from the Media Session API, falling back to the legacy
  ytmusic-player-bar scrape. Current YT Music layouts render no player bar,
  so the API and tray stayed empty while music played. Artist is also clean
  now (no "• views • likes" suffix).
- Terminate connected WebSocket clients before closing the server. ws's
  close() waits for every client to disconnect, so quitting with an overlay
  open hung forever, leaving the window playing and the port bound.
- Replace the tray icon with a valid PNG (the old one had a bad IDAT CRC and
  decoded to an empty image) and test that its chunks are well formed.
- Create the tray before the window so early state updates are not dropped.
- Bump version to 1.0.1.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 11:37:38 -07:00
2026-04-26 10:40:55 -07:00

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

  1. Add a Browser Source.
  2. URL: http://localhost:9095/.
  3. Width / height: match your scene (the overlay positions itself absolutely; 1920x1080 is fine).
  4. 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.
S
Description
No description provided
Readme
316 KiB
v1.0.1
Latest
2026-10-04 18:37:51 +00:00
Languages
JavaScript 64.8%
HTML 23.9%
Shell 11.3%