PeppyMeter 3.3.2 - The Sleep Clinic Needs Patients (Experimental)
Dear Volumionauts,
The sleep clinic is open for business. Gelo5 had a dream. dewen had a dream. pjorgenunes had a dream. At this point I should apply for NHS funding.
3.3.2 is sitting in the experimental branch for both peppy_screensaver and peppy_remote. It is not released. It needs testing. Real testing. The kind where you actually use it for a few days and tell me what broke, not the kind where you install it, glance at it once, and declare victory.
I say this because three weeks from now, someone will emerge from hibernation and report that something they had in 3.3.1 is now missing. I would like to have that conversation before the release, not after. My caffeine budget does not stretch to both.
What is in it
Multi-Client Remote Display
The big one. Previously, running two remote clients on the same machine was a polite way of saying “UDP packet roulette”. Both clients listened on the same ports. Both got each other’s data. Hilarity ensued.
Now each remote client binds its own ephemeral ports for discovery, level data, and spectrum. The server tracks clients by IP and port, not just IP. Broadcast still works for the common case. Unicast goes out to clients that bound non-default ports. Two remotes on one PC, each showing a different template - that is supposed to work now. “Supposed to” being the operative phrase until someone other than me tests it.
Version Handshake
The server now advertises its plugin version in both the HTTP config endpoint and UDP discovery. The remote client checks this before starting. If the versions do not match, you get a clear message instead of mysterious rendering failures.
The HTTP check is authoritative. Discovery version is informational. There is a --skip-version-check flag for the adventurous and a --server-wait-timeout for slow boots.
On the server side, enable Verbose debug logging to see client_version lines when remotes connect. Version mismatches get logged. Legacy clients without version info get a polite note in the log.
Theme Sync Fix
The remote client was not following server meter and theme changes properly. If the server switched templates - random, list, or manual - the remote would sometimes shrug and keep showing the old one. Fixed. The remote now compares what is on screen against what the server says should be on screen, and reloads when they disagree.
Cross-Platform Hardening
-
SVG format icons now use cairosvg as the primary rasterizer across all three handlers. Pygame’s built-in nanosvg gives platform-dependent sizes for the same SVG file, which meant your format icon looked different on Linux versus Windows. cairosvg rasterizes at exact target dimensions. Pygame native SVG remains as fallback.
-
Image slider dirty rect fix. On Windows, SDL2 strictly honours the dirty rect list in display.update(). The slider was returning only the dim rect, not the full tip travel area. Low volume positions drew the tip outside the listed rects. Linux fbdev flushed the full framebuffer so nobody noticed. Windows noticed.
-
Time field width calculations. All three handlers used font.size() to compute time display rects. font.size() does not account for italic overhang. font.render().get_width() does. The last digit of countdown timers was getting clipped on italic font styles.
-
Persist file path uses tempfile.gettempdir() instead of hardcoded /tmp. Windows does not have /tmp. It has opinions about where temporary files go.
-
UTF-8 decode hardening in peppy_remote for non-UTF-8 system locales. Chinese Windows with CP936 encoding was causing UnicodeDecodeError on discovery and metadata packets.
How to test
Both repos, experimental branch. You need matching versions on server and client.
Server (peppy_screensaver):
- Disable and uninstall PeppyMeter Screensaver in Volumio UI
- SSH in:
cd ~
git clone --depth=1 --branch experimental https://github.com/foonerd/peppy_screensaver.git
cd peppy_screensaver
volumio plugin install
- Enable PeppyMeter Screensaver in Volumio UI
Remote client (peppy_remote):
Fresh install from experimental branch.
-
On Linux:
cd ~
curl -sSL https://raw.githubusercontent.com/foonerd/peppy_remote/main/install.sh | bash -s -- -b experimental
-
On Windows (PowerShell as Administrator):
irm https://raw.githubusercontent.com/foonerd/peppy_remote/main/install.ps1 -OutFile install.ps1
powershell -ExecutionPolicy Bypass -File install.ps1 -b experimental
What I need from testers
- Does the version handshake work? Does the remote start cleanly when versions match? Does it refuse cleanly when they do not?
- Theme changes on the server - does the remote follow? Try random mode, list mode, manual switch.
- If you have the means to run two remote clients on one machine - does multi-client actually work?
- Windows users - do format icons render at the correct size? Does the slider behave at low volume?
- Does anything that worked in 3.3.1 not work now?
That last one is the important question. Everything else is new. Regressions are the enemy.
Bug reports require: template name, hardware, what happened, what should have happened, and /tmp/peppy_debug.log with debug level set to verbose or trace. “It does not work” is not a bug report. It is a cry for help, and while I sympathise, I cannot fix feelings.
Wiki
Remote Display and Troubleshooting pages updated with version compatibility, HTTP check steps, CLI flags, and what to do when the client exits with a version mismatch.
As always, provided “as-is”. The experimental branch is experimental. The clue is in the name.
Kind Regards,