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.
This commit is contained in:
poprhythm committed 2026-09-29 15:52:55 -04:00
1 parent dc0c5019ca
commit 67c20e20e9
1 file changed
+8 -7
+8 -7
View File
@@ -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",
),
],
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.