Repository navigation
Releases: HaydenGriffin/afterglow
Releases · HaydenGriffin/afterglow
Release list
Afterglow 1.6.0
- Visual style Off (user request). Display → Extras gains Visual style: MilkDrop (the default) or
Off: no visuals, just the music on a black screen. With Visuals only nothing is drawn but the notices, which
fade; with Visuals + track the track card sits on black; Album and Lyrics show their posters whole, as with
MilkDrop behind them turned off; the lyric overlays still show. The black is true black (OLED pixels off), and
MilkDrop does not render while Off (it is not even started when the app opens with Off), except during a preset
scan you start. The render loop stops too: only a waveform check four times a second keeps "Waiting for music"
current. A MilkDrop that cannot run on this TV says nothing about it while Off. In the Visuals modes the preset
keys (↑ / ↓, Yellow, Blue) do nothing while Off. Saved on this TV and synced with its settings on the account
(visualStyle); a value this build does not know reads as MilkDrop. LG has no Halo or Spectrum, so the PS5's
four styles are two here.
Afterglow 1.5.6
- New logo. The wordmark is afterglow in lowercase Archivo with its o as the sun, setting below the
baseline; the launcher icon is a close-up of that sunset, a night sky over dark ground with a two-step glow
round the sun. New app icons, favicon and social preview;iconColoris the sky (#16233A). See
docs/brand/README.md. - The logo inside the app, only where you pass through or go on purpose, never on the now-playing or idle
poster, where a still logo would burn into the OLED: sign-in is the sunset scene, sky over the ink ground
with the wordmark standing on the horizon and the form below; the webOS launch splash is the same scene
(splashBackgroundinappinfo.json); a small wordmark sits above Waiting for music; and Settings ends
in a quiet About line, the wordmark and the version. - Music playing on another speaker can be joined or moved: while Play on this
TV is on, Queue and Playing on offer Join (the TV joins that
speaker's group, where Music Assistant allows it) and Move here (the
music moves to the TV, as the old Play on this TV row did). Nothing happens
until you choose one. - Playing on says what each speaker plays: the song and artist, Paused, or
Idle, instead of Speaker or Group. - Speakers together: Volume for each speaker sets one member's volume
(players/cmd/volume_set) beside the group's Volume; speakers with a fixed
volume are left out. - Cover art in the visuals (Settings → Visuals & presets, on by default): the 44 presets that sample a
picture get the song's cover instead of Butterchurn's clouds, faded in over 2 s once the artwork and its
colours have arrived, at most every 4 s. One fixed 512 × 512 texture is updated in place for the whole page,
never one per song, and released with MilkDrop. - Change preset adds Each song (a new preset when the queue moves to another song, after 2 s, at least
10 s apart) and On big moments (when the music's energy jumps, at least 25 s apart). Both go through the
preset list, favourites and skip-slow as the timer does. - In Shuffled order, ↓ now goes back to the preset actually shown before (the last 50), and ↑ forward again,
instead of another random pick. - Scan to save: Details shows a QR code beside the facts that opens the
playing song on a phone, on a public service Music Assistant knows it from
(Spotify, Tidal, Apple Music, YouTube Music, Deezer, Qobuz, SoundCloud),
preferring the one it plays from. Drawn on the TV with Project Nayuki's QR
Code generator (MIT); hidden when the song has no public page. - Check my setup (Settings, Account & diagnostics): Music Assistant
reachable and 2.10 or newer, the token accepted, this TV's speaker known and
connected, the MilkDrop Visualizer plugin found, lrclib.net answering (busy
is not a failure) and the preset scan done, each failure with one next step.
Runs only when asked. An empty idle poster offers it as Check setup. - README: the per-album and per-artist preset locks removed in 1.5.2 are no
longer described. - Display → Lyrics: changing Lyrics timing during a song offers once to
Keep this timing for this song? (Keep / Not now). A kept timing applies
to that song's lyrics only, the other songs keep theirs, and Forget timing
for this song drops it. Kept for the 100 most recently changed songs,
synced with this TV's account settings. - Display → Lyrics → Choose other lyrics: wrong lyrics can be swapped for
another version from lrclib.net (up to six, with length, Timed or Plain and
album; a much longer one says so). The pick is kept for the song and fetched
by its LRCLIB id on later plays; Automatic goes back. - Details → Go to a line: with timed lyrics, pick a line and the song
plays from it. - The whole library: Browse reads library lists (favourites, all playlists,
all albums, radio, podcasts, audiobooks) 60 at a time as the focus nears
the end, with Loading more… and More couldn’t load (OK tries again)
at the end, up to 10,000 items. An album's, playlist's or artist's songs
are no longer cut at 200. Only a window of rows is in the page, so long
lists stay quick; the scrollbar and More still tell the truth. - Queue: Up next is read 25 songs at a time as you scroll, up to 500 (was the
next 12). - Details: Go to the album, Go to artist and, for a podcast
episode, Go to the podcast open Browse on that page; Back returns to
Details. - Audiobooks and podcasts: Browse has Continue listening, Podcasts
and Audiobooks (a podcast offers Show episodes). Playing one resumes
where it was left. While one plays, Details offers Speed (0.75× to 2×)
and Chapters (jump to a chapter's start); radio and Retry lyrics are not
offered for them. The idle poster offers up to three in progress after the
paused song ("OK carries on"). - The browser demo (
?mock=1) has a 400-song playlist, 150 more albums,
podcasts and audiobooks with chapters. - Save the queue as a playlist. Queue → Save as a playlist saves the
whole queue as a Music Assistant playlist named “Queue · 16 Oct” (unique
with “(2)”), no keyboard needed. The row and a notice confirm, say how many
songs could not be added, or why Music Assistant refused (an account that
cannot change playlists, nowhere to keep them). - Add to a playlist on Details, a queued song and a song in Browse: New
playlist or one of the eight playlists you can change, most recently changed
first; the song's row confirms with a tick, as Play next does. - Tonight's programme. After a listening session the idle poster offers
Tonight (or Today) before Browse: the evening's songs set as a
concert programme with their artists and start times, and Keep it as a
playlist. Offered only, never opened by itself; built from Music
Assistant's played history for the queue, so it survives a restart.
Afterglow 1.5.5
- Long lists show that they continue: More with a chevron at the bottom
edge over a fade of the last visible row, and at the top once scrolled, on
Settings, Display, Queue (and its Play on and Speakers together pages),
Details and Browse. The focused row keeps one row of context beyond it, so
the cue never covers it; the scrollbar stays. - Display → Lyrics over Visuals + track is now Off / One line /
Stage (the current line large, centred). While one is chosen,
Position (Top, Middle, Bottom), Background (Box, Shade, None) and
Size (Small, Medium, Large) follow, kept separately per overlay (One
line: Bottom, Box, Medium; Stage: Middle, Box, Medium), saved on this TV and
synced with its account settings. Shade is a full-width dark band that
fades out above and below the text. A TV that had the overlay On keeps One
line. Bottom still stacks above the track card; Middle moves off a tall
card or the "Waiting for music" line; Dim track info and the OLED shift
apply to every look. - The progress bar under Album and Lyrics moves smoothly every frame, by
transform rather than width; small clock corrections are eased in and never
move it backwards, seeks and new songs snap, and it holds still while paused. - The browser demo (
?mock=1) shows the track card as live songs do.
Afterglow 1.5.4
- When lyrics fail to load (LRCLIB answering "server busy"), Afterglow keeps
retrying while the song plays, after 30 s, 1 min and then every 2 min,
instead of giving up after one retry. afterglowDiagnostics()reports the lyrics status and why the last lookup
failed.
Afterglow 1.5.3
1.5.3 — Poster block identity (16 October 2026)
- New identity: the AFTER/GLOW poster-block wordmark in Archivo; new launcher icons
(ink on a paper tile; AF/GL at small sizes), README wordmark, social preview
and a favicon for the browser demo. Masters and usage notes indocs/brand/.
Afterglow 1.5.2
1.5.2 — Fewer features (15 October 2026)
- Removed Bedtime: Music Assistant's sleep timer (Queue panel) and the TV's own
sleep timer cover it. - Removed preset locks per album or artist: favourite presets with automatic
changes off cover holding a preset.
1.5.1 — Review fixes and an Online lyrics switch (15 October 2026)
- Display → Lyrics gains Online lyrics (On by default, synced): Off keeps
lyrics to what Music Assistant provides and nothing is sent to lrclib.net;
switching it back On looks up a song that had no lyrics again. - Bedtime brings the volume back only after the pause has succeeded; if the
pause fails, the music stays silenced and bedtime keeps retrying. - Play, Pause, Play/Pause, Stop, fast-forward, rewind and Space act once per
press, so holding fast-forward or rewind no longer skips many tracks; skips
pressed while one is under way collapse to one waiting skip per direction. - Transient lyrics failures stay retryable instead of being remembered as
missing. - The TV speaker watches its connection and reconnects when it drops.
- A pinned speaker that pauses no longer makes the relay reconnect every 10 s.
- Token renewal and Log out are safe with two TVs of the same name: tokens are
revoked by id, and Log out removes only this TV's own token. New sign-ins
name the token "Afterglow on ()". - New Play on this TV speakers get the id
webos-afterglow-tv. A TV keeps its
stored speaker id; a TV with none reuseswebos-viz-man-tvonly while Music
Assistant still knows that player.