Releases: gxlabs/now-playing-device
Release list
v1.2 — Waveshare ESP32-S3 support
Adds support for a second board — the Waveshare ESP32-S3-Touch-LCD-1.46 — and fixes album art on the Mac side.
New hardware: Waveshare ESP32-S3-Touch-LCD-1.46
A 412×412 round IPS panel (SPD2010 over QSPI, SPD2010 touch over I2C) on an ESP32-S3R8 with 16MB flash and 8MB octal PSRAM. All-in-one — nothing to assemble. The Seeed XIAO ESP32-C6 + Round Display is still fully supported.
The device now declares its panel size in the USB handshake (NP:ACK:<size>), so one build of the Mac app drives either board and pushes artwork at the panel's native resolution.
Fixed: album art could stop updating
Two faults in the Mac app's artwork path left the device showing the previous track's cover while title, artist and progress kept updating:
- The MediaRemote adapter emits a bare JSON
nullwhen there is no now-playing item — including for a moment between tracks. That was passed straight to callers, so the track-change tick died withAttributeErrorexactly when the new artwork was due. - The "last artwork sent" marker advanced whether or not a frame had actually gone out, so a single empty fetch retired that track's artwork permanently. A failed fetch now retries on the next tick.
Firmware assets are now per board
Releases before v1.2 shipped a single firmware.bin, which was the C6 image. There are now two, each a merged image flashed to offset 0x0:
| Board | Asset |
|---|---|
| Waveshare ESP32-S3-Touch-LCD-1.46 | firmware-esp32s3.bin |
| Seeed XIAO ESP32-C6 + Round Display | firmware-esp32c6.bin |
The images are board-specific and the wrong one will not boot.
esptool.py --chip esp32s3 --port /dev/cu.usbmodem* write_flash 0x0 firmware-esp32s3.bin
esptool.py --chip esp32c6 --port /dev/cu.usbmodem* write_flash 0x0 firmware-esp32c6.binNowPlayingDisplay.dmg is signed and notarized. Setup guide: https://www.gxlabs.co/now-playing
v1.1
Changes since v1.0
- Firmware: render accented characters. Built-in LVGL Montserrat fonts only shipped ASCII, so titles/artists with é, ñ, ö, etc. came up blank. Replaced with custom extended-Latin Montserrat fonts (Latin-1 Supplement + Latin Extended-A + common typographic punctuation), with LVGL's FontAwesome symbol set merged so play/pause/prev/next buttons still render.
Downloads
- firmware.bin — pre-built ESP32-C6 firmware (merged image, flash to offset `0x0`)
- NowPlayingDisplay.dmg — signed and notarized macOS menu bar app (unchanged from v1.0)
End-user setup instructions: https://www.gxlabs.co/now-playing
v1.0
First public release.
Downloads
- firmware.bin — pre-built ESP32-C6 firmware (merged image, flash to offset
0x0) - NowPlayingDisplay.dmg — signed and notarized macOS menu bar app (Universal, macOS 13+)
End-user setup instructions: https://www.gxlabs.co/now-playing