From 67c20e20e9b7ec6ff3ccb9455481b71215e39a88 Mon Sep 17 00:00:00 2001 From: jim kolpack Date: Tue, 29 Sep 2026 15:52:55 -0400 Subject: [PATCH] Start/end the album art zoom fully zoomed out, not zoomed in Swapped the keyframes so scale=1.0 (full frame) is the loop's start/end state and the zoom-in happens at the midpoint, matching how it's meant to read: settle on the full picture, breathe in, breathe back out. --- subwave_nowplaying.star | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/subwave_nowplaying.star b/subwave_nowplaying.star index 1a055d6..8a3d3b2 100644 --- a/subwave_nowplaying.star +++ b/subwave_nowplaying.star @@ -86,10 +86,11 @@ def main(config): return render.Root(child = content) -# Album art gets a slow "Ken Burns" breathing effect: eases from the full -# frame in to a zoomed-in crop, then back out, on a continuous loop -- not -# a one-shot reveal. A one-shot version (start zoomed in, end on the full -# frame, then hold) looked jumpy: since the app re-renders on NOWPLAYING_TTL +# Album art gets a slow "Ken Burns" breathing effect: starts and ends on +# the full frame, easing in to a zoomed-in crop at the midpoint, on a +# continuous loop -- not a one-shot reveal. A one-shot version (start +# zoomed in, end on the full frame, then hold) looked jumpy: since the app +# re-renders on NOWPLAYING_TTL # and each fresh render restarts its own animation from tick 0, whatever the # *previous* pushed image happened to be showing at that moment gets # abruptly replaced by a fresh zoomed-in frame. The back-and-forth loop @@ -129,16 +130,16 @@ def _art_widget(art_bytes): keyframes = [ animation.Keyframe( percentage = 0.0, - transforms = [animation.Scale(ART_ZOOM_SCALE, ART_ZOOM_SCALE)], + transforms = [animation.Scale(1.0, 1.0)], ), animation.Keyframe( percentage = 0.5, - transforms = [animation.Scale(1.0, 1.0)], + transforms = [animation.Scale(ART_ZOOM_SCALE, ART_ZOOM_SCALE)], curve = "ease_in_out", ), animation.Keyframe( percentage = 1.0, - transforms = [animation.Scale(ART_ZOOM_SCALE, ART_ZOOM_SCALE)], + transforms = [animation.Scale(1.0, 1.0)], curve = "ease_in_out", ), ],