The Speaker Was Still on the List.
Thousands of album covers repaired, a missing speaker brought back into the group, calendar questions for the Dots, and a homelab recovering from a power outage. Notes from October 20.
Yesterday, the album art was hiding behind the wrong filenames. Today, thousands of covers came back, one speaker quietly left a group it still belonged to, and a power outage gave the homelab an unscheduled practical exam.
I had hoped to listen to music. The music had prerequisites.
The blank squares are losing
The artwork repair from yesterday’s post made substantial progress.
By the afternoon, the recorded total across both passes was 5,715 album folders repaired, plus one additional cover that was already correct. The original images, embedded artwork, and audio files were preserved.
There was a useful correction along the way. Our first conflict check compared file hashes. That can establish whether two files are identical, but two different files can still show the same cover. Resize an image or save it with different JPEG compression and the bytes change. The band does not necessarily get a new album.
The follow-up used visual comparisons and Jev-assisted review. Of 1,976 folders reviewed, 1,137 were approved for repair and 839 were held because the images differed or the evidence was uncertain.
That last group matters. A script that confidently puts the wrong cover on every album would give us a very complete-looking new problem.
We started a Beets artwork pass for those 839 folders. The first replacement was downloaded and verified against the album’s release ID, artist, and title. Unreliable matches remain flagged. That pass was still underway at the last recorded check.
Music Assistant’s library refresh had also started, but the final library-wide display check remained unfinished. “The files are repaired” and “every screen now displays them” are separate milestones. Software enjoys having several definitions of done.
A logo is technically a picture
A different artwork problem appeared during grouped playback.
The media screens were showing a WiiM logo instead of the album cover. This time, the image file’s name wasn’t the culprit. WiiM was reporting the source as AirPlay, and the artwork feed was using that information rather than the album playing through Music Assistant.
We corrected the feed to use the relevant Music Assistant artwork during group playback. Both affected feeds then served the correct cover for *Interloper* by Carbon Based Lifeforms, and the images were checked visually.
This was a separate fix from the bulk library repair. It is possible to have the right file on disk and still ask the wrong part of the system what picture to show.
The logo was accurate in the sense that a WiiM was involved. So was electricity. Neither was the album.
The group had a missing member
Later, I asked for Nick Drake on the synchronized speaker group. Music started everywhere except one speaker.
The missing player was still listed in the saved group configuration. It had detached from the active group.
That distinction explains a lot of smart-home behavior: the settings describe what should happen, while the devices maintain their own interpretation of the afternoon.
We updated voice playback to restore missing group members before starting or resuming music. If a player cannot join, the assistant now reports the problem instead of claiming the whole group is playing.
The recovery test showed all four players reporting the same Nick Drake track, including the previously missing WiiM.
I also reported that it seemed fixed. A real listening check is a useful companion to a screen full of reassuring state values.
The Dots can read the calendar
We added calendar access to the shared assistant used by all four active Dots.
That means questions such as “What’s on my calendar today?”, “What’s my next appointment?”, or “Am I free tomorrow morning?” can use the connected calendars. The capability is read-only: this work added access for answering questions, not creating or changing events.
The connection was enabled and tested. The calendar contents belong to the household, so they won’t be making a guest appearance here.
There is something pleasingly ordinary about this use of repurposed hardware. An old plastic puck can tell me what I have planned. Whether I remember to do it remains outside the scope of the integration.
Then the power came back
After a power outage, we checked the Mac mini and NAS to see which expected services had actually recovered.
The useful checks went beyond counting running containers. We checked application responses, configured health checks, storage mounts, and dependencies. A process existing is encouraging. An application answering is better.
Audiobookshelf was started and initially looked unhealthy. It completed its normal startup after a few minutes and then passed its health and HTTP checks. It did not need a database repair. Sometimes the most productive troubleshooting step is allowing startup to finish.
Recovery was not complete across the whole system. A NAS tunnel-device dependency remained unresolved, leaving several dependent services unavailable at the last verified check. Those stayed stopped rather than being started around their intended network dependency.
We also confirmed that a retired audio service should remain retired. “Bring everything back” needs an inventory of what is supposed to exist now, not a séance for every old container.
A house with fewer blank squares
Today’s work was mostly about getting the different layers to agree.
The artwork file, the music library, and the screen all need to agree on the cover. Saved speaker membership needs to match the players actually participating. A service needs more than a running process before we call it healthy.
Codex helped trace those disagreements and turn them into specific repairs. The remaining work is still specific too: finish the uncertain-artwork pass, verify the refreshed library, and complete the outstanding service recovery.
For the moment, four speakers reported the same Nick Drake track.
I let that count as an ending.
