From 23f23f1f1ec89a5f012ac29344388fe45be5f327 Mon Sep 17 00:00:00 2001 From: lux Date: Tue, 7 Apr 2026 12:38:05 -0400 Subject: [PATCH] Remove preview GIFs, keep only portrait-rotated output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All frames and GIFs are 96x128 portrait (rotated 90° CW). Upload directly to panel via app — displays correctly in landscape. Co-Authored-By: Claude Opus 4.6 (1M context) --- animations/face_alert/face_alert_preview.gif | Bin 10144 -> 0 bytes .../face_following/face_following_preview.gif | Bin 21174 -> 0 bytes animations/face_happy/face_happy_preview.gif | Bin 4884 -> 0 bytes animations/face_idle/face_idle_preview.gif | Bin 13798 -> 0 bytes animations/status_boot/status_boot_preview.gif | Bin 28667 -> 0 bytes .../status_low_battery_preview.gif | Bin 8089 -> 0 bytes animations/turn_left/turn_left_preview.gif | Bin 7976 -> 0 bytes animations/turn_right/turn_right_preview.gif | Bin 7970 -> 0 bytes scripts/generate_animations.py | 13 ++----------- 9 files changed, 2 insertions(+), 11 deletions(-) delete mode 100644 animations/face_alert/face_alert_preview.gif delete mode 100644 animations/face_following/face_following_preview.gif delete mode 100644 animations/face_happy/face_happy_preview.gif delete mode 100644 animations/face_idle/face_idle_preview.gif delete mode 100644 animations/status_boot/status_boot_preview.gif delete mode 100644 animations/status_low_battery/status_low_battery_preview.gif delete mode 100644 animations/turn_left/turn_left_preview.gif delete mode 100644 animations/turn_right/turn_right_preview.gif diff --git a/animations/face_alert/face_alert_preview.gif b/animations/face_alert/face_alert_preview.gif deleted file mode 100644 index 26e1586d77432ac39eb89bcd4d92fcbf459013aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10144 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 diff --git a/animations/face_happy/face_happy_preview.gif b/animations/face_happy/face_happy_preview.gif deleted file mode 100644 index 1ef493760414af1388feefcf81f659ac156b4eed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4884 zcmZ?wbhEHbY+y)WXlDR}6aN`frv3l_AHo|YM?+xbgn;5t7KRj{cNPD0`?-b$J39ur z8tEA@GXjNlK%oH2CJY?^85lWaJT@#i*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv z$NLqWyJS2!Ejc+^BY0KJ$xTa7Pd7+DHOF)Fva_=-ieKG1xq12d`3}uovR+$OTwLri zSu6I`mX(*62P|I3M*Y#~CPdQTxLD!~KJ1JEi#MgfDt@wEgF?yIht=VSA@&o1gnB@hPoi zu6X^v$QuTa+LlW8`|bIz_3T>c??ZiWE6O6yZDZau@9gC=*ZbMgi$(tx=es?2e4RB_ zd+W~6&o33CgH&5uRTPEPl!pR(8U`-`)SWzNg~ zDgXWG)tT>Zj~ zDebzA9wFg+6Fa7K1SeK3>e5*FV_~=Q%pFsDR4-a6_sHEmF(q5+qsG-#%U>^KCLHJF zyqneHDfS?S%g{3+&%)00PD^HF#?z@hY%C0*nBxM*5Vn|;V~}ESWe|cCaHGW=C?Su6 zkr)CT6?jT6X66iF$))Vx!(h|(#iL+}=OhvTRaZ0$mY(X;^KX-}T(Imcqni4xJ(6Ak8<Jmd$U3) z4Q@NBH02E3wki-4eBk4NC5!`=MaSv&>> z$*w&L)>SwcypNR?qjw!&5$Re-+)RX4s1NEex8#$Hb zN;EbuI@B(q88ziZ!Q!Jm3W`-vG>TMCPLT3-Q(3V|=~SC;^0Atmfy+)YS`_mYcorwP z&b3Ttx>~tu`H_W=`ATLtsROfZ|UU1|y)475{VlxrPKgI|jHK=@~FH z0)=!y0RhS;3>^O%7&&A-HY_;U%pt55b7I57!|ejfUUNJ)E;`yRVVrg6#Ky(P`xTtK zWIQ)5IXPJ)cvZ~FO-oNtH%LA;$8+54lc-B5w()*rd z)Q5~iQxxmBMc&#Jc4npNd_Nf}!y|_lr58VYEozp(adJKT4egp8_wS3hGC!R=ZGGhK zeSKqd_Wg5vcYlBX;BdE%y#KyEKR>^?ygL5;zP-P{e|UU)d2CGi_g|}@ zzrKHd|9)Wc!KU$`fkiCiK_iFSiU&_(ypoG6XpMfpwjPg+ar?W_CsmPxn&>S=fga8%&!#+vaQ0Ci(!Oqm!wFDW0Kq~ROob23Qb z^c3;k6r1X2Jf}9N9G&FS`bgzfu+oJE#>I6#np+p2UZohG z#9Lsr++(HE;VxP4ZEJ3BR$^u%kUtfG`I8HlKjF?DWsHWvhzbD?XYBd&gh2y%m}!Yc z05E?t*md3UC|u&%t?1wMWJZvx=QPAH6Du1FDOqiF*mp#wuTjs!Lx3X{nALb3KqI;= ztl$w{U<;I2ug4>B(cx}>?J$`Y6P1qj3tPLfI0QC$PL^{_(y0t;@MzZc?+d9kO!Aqc z&w0$pbF-rNOv~nPXC%HToLt1(e$8dp2aVvRE)(0%aDGh=Y$Y)CIod9TN5?2*B!>XU z3}9wt5m*44USS7kMyD15ezP8rjSCKUOK1nhtk?+5jQrMaG8&hZPxPp|FEgo}^zhVl z?P$N2nL!P{vvpD@EvXQGetMp{`70hy!4>CcxwZ0%o-lstwU}v&UM|;{<-r}^0aBKr@Je5_0+VxGfLhsd-B6bKYmaB)nB}K0uvp; zl_~D23x&}^)RCNSNBs^70s0Q-s58iqX1md(HyQ%8$#%FWFGjQ7Xqp=h0S1~(8RD9# zAMGQKrnu1%0EPfZDfY2Z=n_2aa~BDoj0TC*_WUqf)-cmF_nu0m;d0+;3Z;wQyew9~ zuvorRDRx(gX7FVHP^;QkMp-AOhB41c(VDdC#QFrt+{Lj5Qbtop<7qSmMrH_%PF#%4 lcpvpO-9vz$6Bm*|-(g!lI@&0ud$f;QI2c1<5KmlK0|1ffcxnIu diff --git a/animations/status_boot/status_boot_preview.gif b/animations/status_boot/status_boot_preview.gif deleted file mode 100644 index 129048bfca56c7d999fec3873a23a4afee88db54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28667 zcmeHQXHZj%whqC9fQW!dk={dVG%=5fC0c4@a( z#v*Xi5MVew1;E1u&2UVhD50h*en&}ypN9_@2lFScuULGg2>`DHfQxrUIzOq-8;=yE z)0&^$;7iOT8!ugu()0qrZ#mIgklGSVFCK73rZBB7oLv>E(^is}89j-&z42*eix7RO(%~T8_M*&z45d`r1leNbyDSZq4{6>xrCvwirhO3n=cH{dMh=Uc-CTUNy;=}AQZj}m|bz`Lz9bKC1Q0scLTxAfw^ z=P3ns5PbB%D20A+#rOhnfB-CkPHOsK8`pFa@aG=gfl36sI`TfN`+AwDmrnfn90NeEWC;`!L0Y=ZRet0cjWu_P)uk55xnH6?>k&yEwV_dI zIzA^+`7mdy)*h$lk`8oBx4{*cleVhN4&4w;3Wlvk^P6;paYAaUM8JzZF!5c9>qpFu z-{ujXX+a)!=83hOxuIP&-CFE8?NhDoY&%wKUCTnFvu`)i6i&BTJ>lXw)ANepu~@aO z6Z)OM{zDke;ojzCjPJ3_O(rZK3n{W+iS%}!2aQ8Be_tveWP#+ zWT!0*U;b(voqp9$D_<>_V=HA(=harBO8MPp?m#QY9)ZnHhqp9Y)Tmym#WisMEz&pO z-s@sHsQx>uG{r3{yw)FkHC(Kn2K2HzuSxu}G5+Ie5W{~eCae*hOc}&RjWvS*iV>s& zgcsNWfdY~v#^$1DGSM$@scWQ}i^HMwzTjp&bg;-2IZHSVtqhBVuvt`k-~&NTbQJ1^ zOe)j_#A0S=q}68XN3Td38)w-*lCEq{e%37hepI=7!ti7!Td?U)`DE0SAdw7BuNtYP zL_zW~{S;gtw`*|dAGl~bUka6#FXpsEC9^HL2mw{o?f(>8lDXdD4QSjft|)8-~-Te02$DfcZ7?r*#W zxYY7nb;GQ$?dmRo*EZ|PIIZj(FBw0zZy#FkJN*(D&I|Obh;=y(Dj0t* zdMD)g88s{=Ci8g6*f!_mJJVF|y|H(!=l2G!_J7-(Fn7`2ALcuA>Ms@yFe<^og|!H* zSe{G-uom&3wTKJn4CefSAqYlsD#j&}0KODq2EQ|IWrmV`>QJ;Vx1dF8AVtDKY>1Gv zbgI{B5|OyDTSre!UefbZ#)sYS9zlE4#^A+8Y3PlbKqc&#si6p2ndP>ye2}xd5|NMP}z7Q)L3a)M;71p)jHvOpe+M$jXJo zpKyj1_{e6tSIvoXMLeSIn27fSePT_&ac7mYz*`nc8q=ZWk4U}duW40k#?!tOI2RUZ zR-_WuGGEqbq^(@Z-j}tJ+TYD->?SrAvsoM3#GYU3A7q(dz(;GfRsE&iog1}%_cy*e zfSk_NCL(iar{&8x8(cR28p-)ZMbyaMiI?9c&s@s>VCb&Cj9 zp?YpSZ0GM4JiDG&FU@uX)Nr?_)3HwpedXhT%0q>Z@9t?Q2n;D4PZamX5q;=BL8|}tbIW>O5>!u^gM>LA zB}FI-j?RRWERQ5bQE82)E2!yFvijOX@F3+AXw#6seX|om7yBGznc%juhqxV{8Ce zvnKkHJS|lvj|zB!9p|vT*fqxK6iN`j{Pn>TY_c%GD(Ffc zW6RTsL@s=K=HzD%P8KkKo&bb~68~62d{kJQxof1N=tVdT*rt*ZB3WUQ=^WZ_;Fq)z zlPWGzb9|(fUC2X*%yhIFT|veWWg-!m*73QJb)YeJoq7iuuH4ua%k1b5qdoS#PI4-1 z^8q5xzNAvt!$nk_p!Ryf7^9?7o|_khyV!iTZ6jgIxnmZ!;^R)8<=BYu3oA`Y+4 zRz4H7e6u#AM$FI_49#|^^6&PY=_Jlu+x7Tz`q^d^U5k8t?=3leaFGz_

lFipXL zs(AIaI^kQ^PW|c-Zh>KKbKS=yYTloVN6dytx5upVXat5ZB`cQ+Czl(0qmRR_UB>2j zL=slVpY>Fi&bVC;+MjWyvk{)~6RLSK;}8CFF#S+`qiil(4p#m?d|&=xA;LZ9a4Ft< z!*xF0n}YbSe_|1k!WzuUlvixjC(vL%OaKcZ(>$K8kLQLXpC8+HRzLmP5)a;oeaSnV z-5eH!UP!ok1P7Eo9}3og<~~1rntjkY|6=Rli(LPGec7=W88lvl+`@@3DFv1iU(Jk~ z$NS6~Mkn8+RUDc2Wda@;cu~E2Lih4Zq@S`kmt=a17f){EnC0l?l2VW;+$Y6n)SlhI z?M?s%ljq(gnb`m`j`G>C`$J`k;Zj6`sS)y$?CIeel8;EBcYV&WyaBz^NH+$af=Mc5G6L;umRTOSPHCFCI9h6&CVHvkErmERiY_GwXqlQPhbTtC6Mgt& z5z){>5xw{r=XMgP+Zp`J8Ob-#g3?31EI8nnuvk#oap-ZtN?=r!sA@3bwjXB@aIK;@ z8=1SzA(dNV0m;s?M6N{@0|_Ahg*Bi@sD3I<<)UU1IqQ-5Hm}C|O#E>u`rPF*~G*4DHU6#YOFslEm9Uxa}h_5RGcR z%2|dgyk)DCUn#bK4cr1WmrJrbvp2z>_FGr;bc;CHYO8;}sb#n8Lzwy0@L49^?Jffd zSJ6A8)j;QWb1Kz)WF1FJ$<1Wp8^0S)BPj_~UCueN>PfRFxjacSi13WR>Atg^Lcg3YRVOHSMBMITC@n)MZJp6ZSM_RVUX=i2#?+F7&t zAgjQ&ylNtE4*QA=i(>W-xKi@lO`B$G+jYktI`*|!2nhKb8KG8Nt*21gSDV?itF}A& zD&zUPXjuv}e<~1@f;LP`zR(v%Gw?+*mVmi@IM6Y3!Kk$qn7e%PCR5;sdpDQALjBRh& z4P!qD_p-DGvM4XSezXM#L<+lf5Be7@-UIw%z>x(&4-f*J!&2|ZEx?{nCIWaam`QiC z+aXDBzi-|nHoW5v#JL`ihgrt+^>vpbL;;gzASs<5p=N$cOZb)hHWAV)fDSKQR=C<> z=t8sqRc)e?Lp!)a;x*js6EWc?%HD!t-~$dP_NFKvXo|cR=}K!9Yo=K`J_)B}z~yu| zvhk}d8o#0^6MzmN1|Y=J^JFF^HtHV;;Jw5+BiZeIgF676Q<%k=#D)#NKvJrB1mA5> ze+usJTk?V^*tAX&lQ1>!16M4xHjptO^k?iu!cG7-Rw!*KN!eG+DgEf7ek(`uJg??a4p>bCSn#-_lF3^zN= zwv3vBXm2@?mD!uL29w@bA$yfbmeV$hC+}qx60bGBWoXw5q!p4 z_`?z)RWV#rr#*jJ8S(I9P(;}~P+x+6y5-u+$4tdY?M$!h+9CAgIXZ1H8sW>iV@T2M zlvmW3Z4{CjHu=e__)J@0{o-ku4nPeM2asYZd@>Uk8}$za@JcZ@3jo~q{JMvl1oQIu z>{}n=bFA@xAu|mx$iP&u@wORSUQvPZizrmkEw5;AMRgw7rMHE1FjbI=?6R~(pNFhu zQzm`eL%oqLl4PMAchR1I(BcE48!jo~p@tvEsFnfFBMNcbHIdA@pXZ>k@(!tyV$N32 zC3cZZ3t=o)sIauhtzN9U*l#WBw4fFF3>UqQuVGjBmQ8Bqos5HpQB$C<-gTYbtMjc4 zmr6fCVnB`UOt`?m*u(y|+X351_;I_j=aYp1rkC&^+ByBduPoBy^ZdGI-np~=5@%no zL5>X}fjawWK4nkT=S=dPrV@y2{bMnE8=VB_O7+f;Vsi}~Pn?0s1EGA+I*~dmqNhSB zb4|V<+t=|$9P|T%FAFutjBYLXCQ!;vQEF{j)JHHpFVP$;RPW3bNL0K+b+xfR#oTdW z^^%}%LHP5tBb-mmrl&8z!hN3*m8V&0oO~gn@)FOx)e#hAy1Tk^e{-fGP>Ak+P1WJ< z(m{uo`o+c!iDj4+O9p^MBG9vHt-!=ft}J diff --git a/animations/status_low_battery/status_low_battery_preview.gif b/animations/status_low_battery/status_low_battery_preview.gif deleted file mode 100644 index 45a2a0ff47db3831798afd7fbda9c77062d1edc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8089 zcmZ?wbhEHbY+y)WXlDR{|3Dxo2WE~EqaiS|LO}5+3xgrh%ZmTG{aizWogD*Qjr0td z8G%ANppXD%69$g|42&Ey9vc=MY~~QwiaD`i;o)`xWv@9N8y6kzmN3q`b7JG-(a?Xf$*w&q;l5V?Ap>1naI!CUih&MIA9x;AEm z=g~td)!%dOZApIn?Wvdex&sI67Jf=OS-v59ZV#*Vzum?~F-Mr>o^Pp<*qpXNTl)K7 zpU|Z*b}#w5$VS)P^ud%hw}aYbqCUO2IXgSv?ai;XnYULIHvijOz3I`ZUDlt);-t(z zTsspwzsJ`6*Xyh2Q{|WY#_asKYv1>@?d$7g_I$tnl$ZIyoSB<`ew}xBb$Yx-LE)G8 zZ{v?j{Y(A)m-FxQ`N1q=9e2vu)NWj<<1*VJ(jefb@vucCEaPFTMB0jnZ8Bvu1S{os zu_Sfq^m;7vQk&Ni)TK4+NK&`TUXH~cM&~$!dd;d@lKW)do>=T=_pc*xf>V@B%0v;_ z&Lu8hdYpli{oFL4P6;^{5jNE}u2XeFRGwwZ^f)Qbv>Bd#o@$fR=B<1-D`(rwXR`~A zX+ED*a!oSLfdOCi$}{jYs4}>LOF>`}SRo<;itte|8UiCM1UUN1EZ(BoW_WH!6mRF} znR ziLJS~UH;@cQ)}_u*saMo@0IQjcOWU-jy7FJSZW>hE;IxbY{J0tpMjA>#$&^RgUuYmS}`X!EIiyUpzJlrW8p%Wt`1HLd0V$fn>XW#`FMWY1~ zD8-F}5g7s;f()!EWlW+2-i+golyQL7H!$yvg3%Bdfgu3QILxGE9GB6IGXhh|sFyK9 zfYgj5!yv(+!C(k(s*QFSF@kecV5Ecq$3{qZFySBr8?ZaL!hpf4O+cBi;MI{CB zHYLqaYs8Tfjide?4FS{;Ahkx+AI&(Z0XWJVnIV8HD oGL8n0j05U}xj_41s3wi_Mnhl(g#br9&8Fm*2Q1d(;b5=^0M_r000000 diff --git a/animations/turn_right/turn_right_preview.gif b/animations/turn_right/turn_right_preview.gif deleted file mode 100644 index a0ad5ce83ff9569d2334bd53dd4b17f40e70ed74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7970 zcmZ?wbhEHbY+y)WXlDR{03(L~3&5;VVl)IsSO_ToWMSX}`dRTmx1VcBu(M-;tC5}o zGb2z)2NV>bY{J0tpMjA>#$&^RgUuYmS}`X!EIiyUpzJlrW8EU>9Qvgn^GO;xz679IBHw2>Av38WqPsO z^B>+@I^+B6xXo4nPl@Un89eL`;je!p71HqdI8(+iR<55LpPaPQw%*q>bNRCq#^?Y2 zIkR)K-=&4uzq#lduTMX_)c0|UZ1C5t8!J3g=g*&CB~cJ}A{tg9*b z{Pg@p_wpOpf0VS=uD35)J9pRHcf4<#%+r6={&Bka>@c@~eu3@prfc_;)Aj1>{(kuW z`Stzt`}hC<&%mbfpn*j!<3S^b+KLBFJZ3Kz)G;zL;0s<21}z4523~L}G+G9M65A*k zks-h#$iRwHyd*l{%{cl<83$N%1M|)(7!83D7y`hI!%RxXF&oV|BQTYWdKn`GNXci+1eE1UG&U+ZxAW^}&G9H) z?A{}58^t0Sl;Sc;)z{2rX5dn%X}YmeEt0{{9A=s3K01=IIqB3q-bSx8np+;6UnG;h z=*r2-${x#nSvR#vm99FoG-%_lEm@_nudLH5pS0wc$QsXeQHT4^?z;9mcw7G6X(rl6 zdY6`zPkrX=VUi!e#Ql7iXxC>w-~AF91R>9 kM-kWsbAfijP)!=;jfTJo3IUFInoY(n4_K@R>@isb0BqiqumAu6 diff --git a/scripts/generate_animations.py b/scripts/generate_animations.py index 01efc69..ea2ec9b 100644 --- a/scripts/generate_animations.py +++ b/scripts/generate_animations.py @@ -27,7 +27,7 @@ def ensure_dir(name): def save_anim(name, frames, fps=10): d = ensure_dir(name) - # Rotate 90° CW so portrait-assuming app displays correctly on landscape panel + # Rotate 90° CW: panel app assumes portrait, panel is mounted landscape rotated = [f.rotate(-90, expand=True) for f in frames] for i, f in enumerate(rotated): f.save(os.path.join(d, f"frame_{i+1:03d}.png")) @@ -39,16 +39,7 @@ def save_anim(name, frames, fps=10): loop=0, plugin="pillow", ) - # Also save a landscape preview GIF (un-rotated) for Gitea review - preview_path = os.path.join(d, f"{name}_preview.gif") - iio.imwrite( - preview_path, - [f.copy().convert("RGBA") for f in frames], - duration=int(1000 / fps), - loop=0, - plugin="pillow", - ) - print(f" {name}: {len(rotated)} frames ({rotated[0].size}), preview: {preview_path}") + print(f" {name}: {len(rotated)} frames ({rotated[0].size})") # ── TURN SIGNALS ──────────────────────────────────────────────