From 2b3ad7457eda24bf63a42e3d2aca84487901c335 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Sat, 5 Sep 2026 20:38:41 -0400 Subject: [PATCH 1/2] Fix: raise footer contrast and preload the LCP wallpaper Preload /img/wallpaper.jpg so the mockup background is requested from the document head instead of after the stylesheet parses. Raise .license and .foot-links span to rgba(255,255,255,.5) and darken the version badge to #0072b5, bringing all three above the 4.5 contrast minimum. --- src/pages/index.astro | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index 5e2a462..fd7e73e 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -93,6 +93,13 @@ const schema = { href="/fonts/inter-latin.woff2" crossorigin /> + @@ -625,12 +632,12 @@ if (!reduced) { .foot-links{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:-10px 0} .foot-links a{font-size:14px;color:var(--a11y-dim);display:inline-flex;align-items:center;min-height:44px;padding:0 2px} .foot-links a:hover{color:var(--label-primary)} - .foot-links span{color:rgba(255,255,255,.28);font-size:13px} + .foot-links span{color:rgba(255,255,255,.5);font-size:13px} .foot-r{display:flex;flex-direction:column;align-items:flex-end;gap:12px} .verbadge{display:flex;border-radius:5px;overflow:hidden;font-size:12px;font-weight:600} .verbadge span{padding:4px 8px;background:var(--bg-elevated-tertiary);color:var(--label-secondary)} - .verbadge b{padding:4px 8px;background:#007ec6;color:#fff;font-weight:700} - .license{font-size:13px;color:rgba(255,255,255,.45)} + .verbadge b{padding:4px 8px;background:#0072b5;color:#fff;font-weight:700} + .license{font-size:13px;color:rgba(255,255,255,.5)} @media (max-width:1180px){ From 9c3b7ebe1f8d2d32b4f791715fb8e340cec9a2a2 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Sat, 5 Sep 2026 20:49:59 -0400 Subject: [PATCH 2/2] Improve: shrink the two raster icons and batch the demo layout reads Replace tdarr.png and speedtest-tracker.png with 64px WebP, matching the 11px they render at. The pair drops from 35.4 KB to 5.3 KB. Read .wcell and .np before writing --ws and --nps in fitDemoWidgets, and throttle the resize handler with requestAnimationFrame, so the interleaved reads no longer force a layout pass each. Serve /_astro/* and /fonts/* with a one year immutable cache instead of the four hour default. Exclude .webp from the check-dist text scans alongside the other binaries. --- public/_headers | 6 ++++++ public/icons/speedtest-tracker.png | Bin 10541 -> 0 bytes public/icons/speedtest-tracker.webp | Bin 0 -> 2448 bytes public/icons/tdarr.png | Bin 24930 -> 0 bytes public/icons/tdarr.webp | Bin 0 -> 2970 bytes scripts/check-dist.mjs | 4 ++-- src/pages/index.astro | 28 +++++++++++++++++++--------- 7 files changed, 27 insertions(+), 11 deletions(-) delete mode 100644 public/icons/speedtest-tracker.png create mode 100644 public/icons/speedtest-tracker.webp delete mode 100644 public/icons/tdarr.png create mode 100644 public/icons/tdarr.webp diff --git a/public/_headers b/public/_headers index d2006af..e7e92a6 100644 --- a/public/_headers +++ b/public/_headers @@ -5,6 +5,12 @@ Permissions-Policy: accelerometer=(), camera=(), geolocation=(), gyroscope=(), microphone=(), payment=(), usb=() Strict-Transport-Security: max-age=31536000; includeSubDomains +/_astro/* + Cache-Control: public, max-age=31536000, immutable + +/fonts/* + Cache-Control: public, max-age=31536000, immutable + /img/* Cache-Control: public, max-age=31536000, immutable diff --git a/public/icons/speedtest-tracker.png b/public/icons/speedtest-tracker.png deleted file mode 100644 index b477ea7d8b779f8618ce531f1f14e033fdd8d53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10541 zcmY*<1yo(V67D(3!QI`xxVyW%>nT>;r8pF~;?BWa+}+(N?#0~;w0Ix?z4zVwUiQkK z$>f`vBr7{>lI$oo6kv5_xFH^`NTVcu@+Yr2LS34kY3DT z-^=7+ISpk1z?b$N7X|=4{ewRS06f?LfKxL7Kp+DEz;n)NR~LG(2(#3aw^CLHFuwEf z09YU<0Q#K+zCQpUA>bct?;Jn@Nc3M`14#cL3={wmVGDry560k~{*%n!^FKQOrqB@J z|13hF{)-NRK>v?_M+3A@zBIfO1ZO#YHvj;2@ShA!WkMx-x2A8arRT1vtRw(-a$qt4 z=wxBZ;_cx4j}}14Ti~5_uyi*k_ja&%bQACvru-K|;GO?R%t}fAFNnLHFr}Wd8o8vC zt0g%P3mXd?r3fN9Ik}MQM=JphDVhJMzn6q5ZQR|R1z1_Vyu4VvI9Z%rty$Um`T1Gd zI9NG2nBNi1Za$9g=HASXZdCs^@_+3}S-OE;ZJph1ogB&kv1@MO~?th*G7mepPIfaumbFes47qq-`P5rlYO||_!8p#KhvxkFL!tJgk zHfJI((AMFak?avGkqr?$wocp~|9Jks#EeH;^iIfjgMl7UORzR?8Nf8hS&WXR?~SHC z>wET$7`Tygb#>((jLFuC4gMPRD!D?a7k9iLZFAEO+h-YC;*6`?7$w?ngwR5d_(1Jw zfCJJ1UXYnpm~n@k!dMUTVr`BBK!@mZ0;4SHXUi_MHo|vhZ?8m6IGT#6{gp=y@f&h4C=6%|3mZD1849|;*z{B< zdgdlWK~KQAk;GV8ImN(};xR;A&I}TD(^Z?B7ZfJCLbOQ67>26cBPTy=hzsKpAwr19 z=w9gXa3?Kjg{d*F-k^kW!ovvC^QWC0($D+2acYL;9AE4Au>IJLv050-Q zY?qFfRw0>A^*6K0OSSv;ws>1%p@d9~4z;`nDv1E~jQ=Ocswt~mN>NI_%CA7FA#<-$ z|L5Ot33}f@XGcH}($$gWJrJ_jwC*C>-X2b2VhH7A3V-IABIW{ZD?!?+&0XtVNgZz^ z6JTM29@3%W_sk7N;G+;aUyh3so<7;x>D!^n`XNFmYpq@UHpoTDcsN2X`1sM?1Rv?% zX`ao7`EP6K(5>oTEM-2t>ecPhOhV*!4!cUOz`>Ar5PndKc+T~Pwm`AxgPJ;`y+am& zS>Gr1!Qug!uks=wEkY;c6%!pTWCp0_-w!*go)h7|#~O^|6hmU~qi;Ngk7SkF{KXHQ z!{^eUoRoxV0Ofvsou`4G4qz7li*bCFFef%iecJT3C(cOuW6yOzl6sWCil6IpwXtFJ z%jP$7r+XRQvD2*kPl{UIRp~zL=+4yGHw2P4FrT}DgLEM8mzxpxTI>(*Q1(g%VqR=z zRaixBXMq?70p?PJfp3q#Eq;{U%V$+5pWhy(zd;TF=%;2r`=c>?zCl*|K|AynwbipC zyQ4F_i4TK-tFAw!T4NF@?U;(7-j(f#iF$ut5L91Sd0aG;6$Qk09kp=xdJz~_tOeP6&NRNM|pOMD`jbDdtE1`*(wDl zN%ZC8R0e7s-$HPdMC&|%+~N)vbb&6+u*@%NUFI|Joe}%h$Vr(^jVG*`J_C`1eyxml zvJZ-2{0)X9g`{0^$8k;~ldnr) z1NPyM0Mx;KpNW_-AV;@P1CWb6a%0~3|Jn2+LwT|xgS1spj1}pJNQ0%KC2PMl&|w^b zza=}JE_~OF;F0MCX?wA0{FNI$h@_LqX105rn^zSjX$nt3@EuUq)?QpSbm~ei^*c;+ z`jCv3w*d&8hJX$se4t@7aJq3+)U>{jkMXyO$ZR%z{K(o@gNfa$saSV(fXn`B&x<8< zniJ8&6_}va{(Pm5ex~pMt3ceDD)`KohaE07xy-r&0d~#|{HfedDdVZ-1Ooi_YNBU+ z4%f_=`Y?BQ;-xiOzX4eaJe#?0LJ~-TKsB6LqnUCVqp_rKH`q|i|BI$42O#9zNe^h9HTg04C6n_i>Fp(5be+Vrg8?yt zFv?Iz=kW8xPQ+%Dqt|$^cqk0!YpMHP_=dX43J2ta#_!A5;9krhIDL$}Z?Dh$ySo+` z#z>Z9b45gExjo;J{~{?BK&`W(_VZER4z~kfx@ynzBq~xRkMSH+7-iBk@OSjle^p zAXm7#xs6a<^4oH#RWQ^#4On~{(OLeMYn!H=J}JeE{DQ99y%#S?_~k)a;+`$@@@LnG z*8mEycas3z6g^)N7K?_a#uCm(KnK#yQEcCM?ltB)g&uU@YQuMJXQ>RMssnIei8f~b zEi5&vgWQdn|70<6u(Ri~vfG8QBm7+W4is>v!=%VK<&^LsO ze1z=0=W`gOUvgn4%6M!ZF%}{U6JviALLu}w+Rh)qBH^yoUXt=atF7z_YEnK%t2}iM zNk|2+;@R18Sr4fv4$i>7`j-e-VX$_Fw7OKeW(8B^tWFWH91%yJg#|d4Z z+P=jL6o)AQ&tS1p-(&z;4~=(PhO_(f{R1)SwI94y48kYBS67oV+ONxS6*v~@D}mX> zP|07(Rx)eH2p7ViZe&r^4Pbs--Su-yGWI)lIAnD?n|tq4RcpNtR7YoBHPg?na*h@5 zD}t)oOXy-bPwSFC76S9I)fSD2BVr0qX5^+#+{w~VVhT9`&(kw`t*L$ek*{RFURqm8KC% zouLB@g%y|t0-YJzPHS+*P$MvAgamx*tcBEs7m~gQe1gggGa4o~gTg>_%-6kE2w1wd zR%RIEJLjPg%+|@sp1Br~)}&;g@~A}{n0piA=$t;yKGC%co>WZ;XGoeWlJ#=w4FXDp zaEcRfxJP==O5-8y4aXrNVI8QoIX10#9jwFjWd?bcq)%bF>e3Nl_G$j1GjrEFW-cy} zGSG7MCY_wvt_jZ&(&K2VP=iSypq(`A*6`km;a;HnHbl{$7J`T|FX-`dd6$XuSjY$1 z)Vs~Fq3Oi|oU!YwkDU~)8^ZB`9kIKM>YWwuHTeqt+39;nlTvvazaNd!v7AzhM^;P&HV}QnLHaZ zRo93gIS#IX7HulQy0`Na*%5Q8yYB1pf_HLS`+%LQeQaT>8c&xON^WK4`BTLDDRySr zub~e{LbE3f4A4-(?j?Nkk&v!6?|#@RdO*OUrB4w01%H3^rmyGBSSl%tDILbRz_>E5 z>fU%|gV!a3eCc5GIm3}cM_Rhg@8R0~b0MdAG6+VAo(F}xLkGDcET6ozzOCjbNzgty zR|-nVGE?xjNkQc>Gcgkr)^8jfr1b<6JkMU8_7f$9@jZW$nN&+TQLS&3yAPROqlukm z0Rcz3I6?}F?e4liD{2?;fC>$}!w;x=%M013PJK0dmscMX3{8f~NqckI+dRSavP7NKij(ydeQI$x20 znsN%D0++-kGZe?98ASD&5saI`Z?g;|=BbLtB_e!q6@70+i|kBZvHwRoUXJo7VkPpb zbMk)a3nytCrXIj9SToXfj3(WTUvFoR5qr~h7`Bi_`o;tErhv!AKxAk;_<-zR12SL1z3km&IntbBGTtO(bd4HJ%q0^AEh z*BYjp7gbv0ehgtXfv{L4sBq+pm^!G)8EU#Yvrfqf1vDd{du~lcL<`Atq>Pw(v6?xB zbGKgZ{s|u+pEgPHKaOnBes{C7jYOf%p4m}lQCniW zvQN`D=qXNS{4d51^rsxWe?qhPIU6Plf}!EIGExt8v!OR|d2HgYfMMjbGfZ)8?G&26 zyHRw-zkdA^fb+>&(P1eK54X5nDl%tC>hlGj2+CK1r;gN;9g_;%8?*rng? zW2t_1r##T`{uPdf!kAk~#4Nq70qs5L23hP6b*;Z6hl1E*2&Vw~?i*`sYp)gU>4>Ze zIxvLf;hyaPQ(0UyXxe587hDud@@MW5 z$OO9&FSj!ls<{Ful(c)zhAoccL{6O)o)>G}zb5-rKvoLny^$WbY0Ri{RgoT3=Jg-N z8NV!)O3ZxxcJocA2CXJt6!}K$P>mpx2KlyV*fQq_G|{qS7`5W`=;%tUt*d|gW+F{g zE8QP=4-XXPJ2h@SDaIT|F(T~loZBEau9lAN;O=alVJ!nH8I6#RJ(PJESp(k%L4B83 z1Lo;ppO&`+M*xiUC?=ST<5tOAq)JVrL8R}Mp}-Kq!Wn3 ze)A1C-V_DVHTFht;79+0Qb-3bI6iD3SI~=*FOZ&8z+I1lfnVAC{z%Ll)vmFBhnx}t z0h5qT4TwtR9j<&|;D% zqu@FXjMWeC6gXR!JrHFt zLdPZ#(&j*Y5d6Jw)1S%d6aSa}G4+%z7rwTDT9^WVjil?_KA#Xc%KT1w#Nt?j8fp~M zpV!k_hz?XB+1Wu-Vc*CinYj8L5GIkQ5Rx98n%r&F0JWa>$7I|%kik6fPI&DMePVRD z4@ox2XHQVO*_`j{Th{*O^-J84)Yg|#)5Fl(OCQGcMMF>|p ztTT~St@0Veop=GhSnykS;hUYia&Wnu;0(>*hX}X^N#jzu1;55r<$hXqE!*7j+Mgc-Fubp6{Pu^`Q682lxty$(>2Fk5GrQO54L({rkS0 zz+6>T70)X8A;73!FlrC>?a8bc?Jvglz%CLs88N8PRk#EoqN!$Gs3c^(~JHrSKO zAEI0RTK^_Fn9 z8Hol}`+0TMl#y^+dGor%c1YU7@sD5t=!?%Yt@HQ;exI*Cv_c4ccBXi@giv0X)C{er5D~GlunJNs zwOXk)=b|5csuw|3D+wwm3c`LsRp_q$j9mAEwRU&>RrvlPs;~zfqk$QRATa`ieJa5F zou=z3*DDXL#rdh0feI)Vl7MML#76?^ORZdJs(s+eSFH!z_JwP+3ogvAq+s&SngJ9i zq>E$|9N)*ZzEg!vXm(EII@XDp&NK#RWTtRznJhhWjk#>Ss+hJEN+}0di0`8SGzvOY z_y>7-!n!1ZBJn;q815wX`eaoe{comU74a~RA$+GxRMuoEgerJ<=jvnom&&#Tt?+Icb9pH2n* zpD$XhiBUhJ$lG9{tgHl8;pUCYtIkx5!r3s)oUOX)xhC0R6$1>KGcit+kXICXS-@7Y z+oD+TyF@Cm=0kOa8syyz#KI$TYSa4hi(&#v;|lMAlq2F00K+LwNK?miH)|GJl%DZD zDu6jsOJoFQW(}jC5AB0lmaqp+zNM@As}hTvcUbLmbEJvyfq|TBr@mM&(hdYXYqTLN zz*ee_-8WeE$~$>Xk{5^80+yYZ4Hha5%_NbaV{y~Vba;$7j8-mkm!UidXLDetko9y< zs|ABE0>tdhn}8(~GC`xX39uQkvQ>%LiwJmq;=a5G2hDq$%$&cVerE`Dp`j%Xe)@`d z6e>y>Qtw5{)zZp}AjM0zx~nAC>oqg>y}YtA_Pj9Cm;BU7C1ilD?})|n7Aj%73j>#O6nvvoQ$X8BXKl3Q%RSa zt;&pymq#$NLea+@`QZobSK#+O&u|-=&K+!W!J+~60+gZ+sG+weqV#$jHki;a zL%PIt3(YY;+_Nj`GV;aBvuc`eDB&1_`6;LS@`UPS~L7 z`a|R^3RiS1^>(Jo`0E3Z2vYQkxF4xx)WD@Do-!B z)(b)n6lku%^tjaWnS(~)+>jNF=Uk>2+-f_%*^fQh@7x*Il#?I4TS3SId3IGgdV#{lJ9b~{n4D1 z>Q2Lh4?qt<32Gb&C+q~d*6243N1d4Y@tDbv|H$(R1!dxWK~|q#q+Li$g+-}0l!Cgu zI2$s7URQzkv$@;`ylC<||Js*7nk!L^65pjoL|$>WmCQKytl7j{kZy#BK3}8phU6Jx zz*qVTWIjf}AM7Q`*+B=p>|PbHizzY`Nc0i7Mho-9=QH;MV2W*2A7H9BH&ASTBxA3% zd)V!ETy-n*1`aES;Xk}RU)g47lwbo?x>{w@({_|ghwyvPs(!}LZu??!-4))}lBCPf zXJ8IzlEcd{k*d{aK703VUFKI_p-u^S&9Sa&^&~1LRjcuLu+k+E_)@&u zV4ZG;eHI#*jgH^zK$SWsFW-8R%1yTYRR^jK2RrBWg;+k6I-sZ`1SmEL;sr05^=voT zY?A@_CfvO2cXJG;}HQE|t>YiAK;0oU5g3mF{%=)vm2K`JfTP+fZ=l}wJI`1@cqai|7t zwhvUAUH}{6L>TM39lqV{F=!&B_||!yPlTFm@>s{Ejfywec=?X0pRtanb3a4fQ^02F z@cw*SbR*W+H@=e9v(I|JxVQ`UOypabfw9Sa^M_$Pibm{a(Qzxjmh0k;+fH_;=?w~G z%4*kD-^_ptq!ASC0F|FEtt>vUbU#=$^QWBRnVs~0LnD%4`4X6jaEcXT!4(R3_gBP4 z_;ON~Kkh<8VhdzemI%4EF)_I$t?11#13)3a-dg{LIT|>QJt_A>(Yc(f7)Le`TR@FW zD7qNIq_CB+3e!}<2W`6!>R25sGC8(n-@O1mG;h*#avFWcl3p|_J`HJEb~QECSX`m| z*AL72pg1D2RuJkx%+fpE><*;_ckA~DF}}%xK{5Mvm)af9I}&c2_=AkywIoV5%PjXu z>K|%}0mInP=o=5HS}x>dyeUw0D#SI9PiIX}sm-yIck_fN4#UI4PP|Loo^?U`NCKL; z${1K!SPD;fVtYPr81IoQqEa~jPP&zFvxpDnT}VL2~#3U7RSXi zIasu=&(~X6cVBFmeqe%@FLWios2C{Q-*Pie#(HQC4E>p(o0ABbrNM18wma6j$Zd|* zdn_u)wOVg>5HaeVl%n=vD0TeORnhiU6kWC*emzh4v&8RoTAG&Z{yczkFA_Z|pkE1pjr{7S zhcB1S0Us(jlB_DS>eCmpJW;^=U4q01mN^;+2RV#R!tmiK4B=?jo}wA09dM3eHbu<* zHP-=LnEg_FzZw^sh!JJu$6Sg_7q>cun}Rl1!K0-MiBCD$*x2}_L8Livi()lf=!FVx z-8d{>CKA%lFS+SrC^vVdPKVVn2!Ua{vI9@mkvh0;@}7M>rwzH>68gitNUFz4cnU%# z6FE2P^u{1*w8uF-%yv47(pDj837kPtx$ zL@XWW^@-0Qi(q~eZcc!8*eC&jNV)tb3fJHdFPp~kY&|TNTx$g+gQ}&e)v(2$K^mz{ znrvZR&hIa$2bO|?LB#huF&ifQW0q{E1;hu0nP(>&hJNgJnFcqdB+)IOlpQl&vt`67Ft;8iE|rs%qB&Cc8?;9nG;M*)d!ugy-VcC4(81|Q4+s~ zG--9c{$8(&L)fnakK}UfX<9?IS71!~6ZISVF$YEdm0j_vEv}&h!P|)q*1Cv&;Jw>d z83d2#I%n!zhXr%ZB@Lyq!%`jXuRC^3aoa6bauDm=F0=N8cQ^3^2_i4ckjo1k$eB&^7z4MJn)=jmeq=0j^?I#!BYp zXk;ST8W>@pVQb40J!neBb5+ciT8IeZ{0mW}bd1}lm#$;0jxk$S^as2)o?Jg4wp(w0 zc3QNaNY@1q?+kN0-2eQxrp1XYKp%32IVX+|_J8E`aQI6NvibfBC{B72w&$p1$-XWm zv`|_kis9$**Tc}AkIBq5#%%YPKpbm&c;JGka0m4H$OPb}TF$&rL5=GJ6%4XIOaaex z`jB2O?z!|jUd$lTBZ=oirVZx-2_O&Br<<#1{H8XCe$ncI7X;zReN?sWi z8XQYxV{erKuY01W`A;D*tWQbyP#3TS-8qK}rFu=l{su1fe` zWe+f`dSIs5cGt1>s=~;?5Jlfp`YChg*U+vu3QOQmIDDd)C=p_;iZ3eUa(IP1ISZ!~ zK*boF5ZkvlL>?Guc#dg=2c2pIoW-}75=GHcu)0Z6YngR9+hDHKP2muG;5PIVQdYM@ ztNAOJ$n+w_(enOu(ehhQAdi$cn;x6kI896Cr9! zS14<2toJxunss&30#*IR)`^uwsl5@VD5GP&>c^n3k)AYFE2n|}0YQ8% z%bNylyW2kgI$)mxOr-g1z=YUp%!+CkEmfF7P9Jw;SS6krI}(Gmfb zic)#G&Ekwa-VlA$%ST3R=)23si3lndb#{PO52jYnd7e>IzZt;cRg|iz0nP2VFBvV0 zlq0wY+Vg6HwZ}+eZCH(uB9JZO=<5h6e+ciZUzJgSfN={G+%x)SOq8IF7*W~Vo_#3377Gv6MuYcmPZ0rTXOgMZURjlgC%iELg zRWKXrf`#o-ki_Sl5=K*!{%&aY+^123B7-K9m&b6gy*k{wsFkK5$w~l zkTs}Qr$&|ue)?x}w6v;H=Y{BP4~heM26j*zR~gKr`x^wUh;$>Z?o_0yNA?M9VA+7{XAe9W9_e*r2OOg^Jc zKF5{l{Ee2Y$G|UjLReNmNTleIJ(>2tsj|~U}`T4!wsd; zy6A<7i=Rtj6o?`gSrr|ADRvdKcO((ux+3Sv>U`h0ER{L+bnT;$7ruhhK(XX1`9k~- z6V=94#8JPQ{6!wiL*bCzYN?s$e1gs^9k+b^FLC(!SM7AFjT-QL2t1+mtxo>D1abp@ WUNGlTzW=!f0LV+LNL5Rih5R3VC30y1 diff --git a/public/icons/speedtest-tracker.webp b/public/icons/speedtest-tracker.webp new file mode 100644 index 0000000000000000000000000000000000000000..eff8c94b7e3d1000dd15e6b83ee4942e749bd0ba GIT binary patch literal 2448 zcmV;B32*jNNk&G92><|BMM6+kP&il$0000G0000#002J#06|PpNPPqV00HoIZJQx! z+qTbWi^w{CUbb!9wr$(CZCi8Jlx^F#ak5oa8L{vCwoO!2W_F$tF#$Ntl!3Ed_fB`b z!jVWgEvAg?ee?uM_LI9Kp9V6HeG4T@v>yd3lW>X)0Gio>|73zM>Kgiq4|f zp_^C68NaMbh9p&YeHln|$~fbfRY_{oE%ejHtTImjB~_AYmKyqQnp4KQ4%>9T8^w>m`w= z>Jo7D)$Z|G85vZ&hDb>w89^5P^2|t+jlXlz$)KjC2a8^cZi3t;T>o<>$(;;J ztfjY2caN=P(Dkz;k;bGh;X?0q(L6{7rC1h^CK+uuL;pR?sGM<@m+r`oZAq#jPVD;S zQDZW?hyF`p!JxKA5j9cKYtUhE#$~=PT9B0F79ojFw`okjJqOY-T=fK*GeVMh5Hz)m zPZ9dvrO;vc8GfZgMzB#uZH=|Yxqff~q|^<2vMM8}CWGV_tzsN?>M!1TqXlvv@*4%$ z%hKCM^cvEyHI9<>{kvv#1A?2X-q?>J-1iCSHK;FM65Y041*s@%x(!h{HI_lrT&La# zU21(yMww~03@0u0Y~c@{rV^*07w~U zdBi9G)=Q+S%_MrNUJiK!sRMBQC9ikgFU!5mgsTYM1ziJ3iv%q2C>bl~p*~Dcz+wx4 zl#jp_O{_5!3)73y4FMAJ_vKM%5>fT?G3fAYRrNNH-c8TLVnoITPE^Fox4FAX*{a`H;pS<0Ai7SSwZ{Llf_r z>x-E7>+&sqJp@0H>B;EECFE~!<3W&gPP1RBf1e#`3JmbINSaSlcH}zos^|`<*oNCA zu`F_(a24bU^0&72Y_2$kV#j3q-PtfM;Tv15YC~l`iMT4Ndd0YmyYGmNwKu4BnMB$% z>K|tslkp-kR83;x_P*yNwj_0v5gi^S3pT83BO*ejRGUC0Tn`+UaQ^?v84;BFAVcD& zm`d4Oxb=@0(D58UBMWB>qG zP&gpu1ONaq7yz9CDnI~006sAihC-qt4gFVs5CMW&z%^cP^wYk=UQijJAHX|9{^`-1 zX!}kOJLHzgqkM`f*uJgW$pQ-I!3BVdP3TG7fhD1ncj0h_^6YX}swz!D) zkcK5U=UqU(9ZJwL-K@AUdL1q2n`YQ!44;&!$Xa<@Z)h4vUmdPSQ;GB+zLaZ3ox!h; z0092~U@LVJL_8@wczk^z2aUs^i3E_~m374a@_YB$(FfP=qOJV=M32RVYZAIU|77&D zZ4JAUrmZoLI+}v7d~n)hD4IW&qZ)|aKmP*LDtoZwN~d1d=^E0LLx+=>ing6im%Q2} zk5AS#F#0Hume;IZxc`cjw;#x$>|vix*8RQat%KiNTg*YU#6ciZZ}wwwx?pdw!)q^A zCgqO~XI7=mk$a>MveAPJV{Z)KA<_Ot3yAY3|F5HZ)IamcgaMxJG$};skjKq{=*I(> z@W%Mb?us4v7X;E6jg8uqbj*Gy6vw`%eZ(9k2k9##TUfpOB1g}!( z89qrpj4zx={uUf*M;FZ?=u_)Q?ae^ z5I2$EN}Ha~`~QCmi$O7Yx7%Z&_=Y!MWm$;NViha+UK1Y|p($(!+vz%b=x_hvNl2Sv zQpXYyv|w9j`SS~gBg5|TR1?YR)A-0M^lU}j${bx1))ha1{{uordH5b6)|n0per(gH zlQP$L<;GI@PG~>q$^4W2oSE2A`X0tO(B&%UY>+PQR^Qp1aZ9^W@N5t=Fb!;vT^@Ni zWxFga?;XF~EdqU_V+uHf)#sk=fs8%u3bKky`Ow(B%!Kt@Z3v7vuOT!;E6KcL{sh>m_%+r3 z>T`L$HPuoGal1u9S|TdCL6z=H$}zOX;xW~?qZ10w$+gC;N3S#kG;QtXpxIT5VMs|V(6q#jQ8rQPw^(S;NDBkPPnpx?806L z_uVkBPAXd6uw|HkB5$PX%g8?D1m9R_LB~f}@roQ3)V=b*k>@2?z6Ob?iDalpOLki; zXO>KOZf)+D)_?pYMM6!?%A`_CrPoWAQYw0!ABuJZ%sx`>`iDaN9F2 zk=qUE6p^&+AJ7lY6GPFzj2ZfTZzRyMvp4ey0dTahWHCYet;F0^`|9;9ag=~(oAqm)Rks3er z4KW99e5h)vFt+NLeN9!5cpRug!!wsVOk@#{lZ0|?3^f~4jH!25m+_~=1P(j{ke5)O OyPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91f1m>Z1ONa40RR91fB*mh08lhCIRF4a07*naRCod1y$76K*InbD`+k4_z4w`OM$=^3iGA11KD({{uj{}5Yi-Z{?-*|X zLc(ply|!uGwM^vQf@EQ|(+_f8#h|z}CjiMdzRPi$PD2Odt3B z^a(Ff-II5@Gu7!-@A;hTcZb}l`=VF)->s{>SAB!tAEervM%%~p*|mP5YNHEAHo8K7 zwHxnW5{#d14{}4bUaCIj{G@aJ`<)v;?OauzbM;G{8|8Z7uybkdTQ@rAr<@x)$~ozR z+U~4Z(=ikTxnAF|I$Er1c)_JI&$?9IoLoJLiIirOstXoICM=a}$HkwQmO4i=8|3bO_w~WzKb8 z>D=Hko^5vk)VZ$fohytx*Yk*TMTmUiwa(SF^ZuFedCOYoI<9a*v6%CUxidjs=Wf5M z?a@M}{$V#(yKAHaWVq8SzM7B$a(ESlI|IME_vGSqqV~1UoqJ<2cK!x8biCU;zb_R` z3^>=g)CI$*0Nmrw37tKfRo&!Vq8cg&2?`Ks06>#f-1E%kosh)k$GA^(K=HaRaClrN zc$Oqyk#yN14iHF4G;qv$y*pBFxTo7|T;A;#-Ega)Zp?x-$Le$4j}$-D`|YCdKQwl% zrRUWkCSK8$-|$-lEkQnegUgM*BbYelz%Pjbc^J*R)yvrlKAh@CvHkoqody-@776r2m6A z(f=-&&uHEShtsB?R#JS*Vx$0PZUw`abQVi3U(Lajxc; zFoC#STRP=I5JD)qo(UP6R#9$Ss7H*PK}2*SDz1V<^g9ovE4Hj1^IF#Ja*fNskWIFI zZKBZ~e5Hwnxq8Fe{bTvLJxJ6pKC>yAOaG_h_?dTjXZI|1r=RkI9IUu=E1lZs+{q`y z&ab7TrNE7x3V|WlV9CJ^bSPS z@QF}atU*L{qno4~X+!a#*S7ZW2OC#@(tXTBWBtj5xYa-2(%*Bax~V30U7;BK7jN*u z8(lt|2t?Hyb_viLVkK)(tj;(u2c^#e%(*HrsQ@{KhyzfI#Ry2AD46m*C|0K!5xDjB zKp{GXH)X%d!Vn||c-cGUV|s@QR^Hr8bk%|orx=lpBf?rY7Tk)re%r5Ga@Rmp^&{v5 zH1x+CW@_5YRSPe3$MNoDG5JAn^z{1}Q?~^@k2!C_l^9jf(8cOUPL_Zqh0Pf4Jb^D* zFb)T}MRYR2O6$B-(xs|W5Mjn8GHFJ89JSRh$+efjm?LDE$iZO780|4?o5;G{NOYae zTYk#OPb8>L1juQ6Efxf&S5}!A$#`1T3?7hv9OYj_&xXa$Eq@agE}V6>i|)xcw0&mm z&s&aD<7u$zjt}jpaWx3vdEYr|YxWyIR?_qtr&W)aO!M-nr<7*jNs$hp=`4ht= zQnl0vk&K<8mWmM+3NFY)VE`yuQ{`$pni+L1aE&XwICr}GMeQ(>Cb(^lOV?B*O_GfK zH~@qnAypBhPBF)kFJLpuGNd1M6Xymo2KKqZBd1*d!IN&_&`I#}9LoF%HlPCOK?W>M zWI`<_Ls;v{`|ygVA^QoNm120>g$RJNnO@U^KG1pXqh9mcKOC%D_#=0hhnD;Dhsv72 zOy$*mV1I{SNPNKM`|fbZ9%>6TE?)dv=Vbx(kslbWje}Z8mRAYjt2f26qYwkU0A(iu zVr^HOYu~iobzHf|wO_Uzt8Is?s;_lPfTNryQ-=MnU&}K3jq@!bT8wbK0JIk1BQ85W z?uJkGxxRhJ-0AHvxHCKU8&c#z6d^zY&M*}bqU2LflrE!EHJm^ODjAogATEE4a|^EM z4bn}YazWE)hCfpeX1u(iyr*CKlCaD*_Z-}qPuJb)jh%hFd*LfCIE#@)*0W422eSR# zUiuvtZ4e2;GFg$hdH@VLEy@(tHY{0yHFl%xzHu{vU*=;jEpzVRH<5W01|mSh7xR68=pB7*j%ggx~>h)q38FxKt`Hb zLIA*}ywxGIm;LlrZsl99buFtG!|GG8aw|q?U}6NhXu~Pkrj#setV&ezl|VG0qX5(|Zg(qx=6bi{w%533 z6gQ9b=mPE*AKK}j|F;KBKPcpKB_xOeFFi+b73^32Qi~{D^3zTP z;|-zwFT85VwO{$iL4D`n4Bx%5_ob|OSn^AhW6k>yFH9A4A1;oaz5@eI+G|=FQux7d z!|Jmk;L96Jxg`olrWc_0n)U{_{LQa%>)v^@Ye8d|TtwQxL^b^JWfLR8`1wJ1=)P@k z@8^H$&OLY3TJLF;K(Mw0ffD-b0!yJMYi4c)MKBM|z%^FBE$bFu{TGE)(_N#VsAVkt z(u9``_%*+Bv@4ky{fHYn@$12XuO~ER>S@BIak+En_hY#mHtL;PZDZgJ)%@xdlXIKg zhF`qZE!?t-@pdcy=EdxRAo zmzy1g;c+3T@4mZOzwG0qpK52i^3nrnb?G7Ve?H%xs&XGejlUxpK9O)|_khmGE>ZiC zj5c8Kw03x89Dr|JzR+F%f!o}c_ub}NR&~1|A)GAH!=+cSltWC9I*007_(WYDUzH+X z@`Z9#5E4{1)VhUR*J9XP?#2g(a7Q?cfe9c-wuVw+mPB>4kW!hHG}E9!ss=L zM0F~0^GA2)p12F6$fbp_c9)QcSbd^6_F-@2)Q6~G!nJLnwPbtfTjBUM>VU~2!XmBV z#9MmnmF}|lyxGR;iYmDtciLo{i@geSC8N}JkrZ4MYy1s_$*HHZ?*T^VC_JoEd?dV`lE>&G+`3ngIrb|Hv)iuDPxcdwD zxo1E39XG-V!4N>$Xx6SuL@>k%(JcYXR&l)x7c{P#cA*x;J} z6IPc$a=lO2x&4ga0|A>XO^uaOqwG1NQiR9ygQ#k$ckAE%dbjBpe~M18e$gEnQnuyl z#s-G5lpc4dx4qy_V{jQfa>kw&u-gkzW(2|zTNiY`h| zKm_YEro8>-Z#v_5ZoXrnxb_=(5|3V7$t9Y+h-CQ0*Vk{nj+v>y@=iXy$?JK-Sbb2x z2oIK{Ou=HSRxeqIY7Q1l?`>Y)?Y92*JKW;yFEgqMkz>APhv=l(gD20rBlkVy4q;I{ zzrTmc7ywh1v=M@4@i6Q|DLMdrG^{der&@u4ujk3Qj#2pnIDi(_ThHsPptIh|Jq+bk zNKhOH!2m+tf@Zh)x(#l{tyj7BbxW8rlmSX1YPVg_{UZbzIdk4U0S7pA?~^vm7}vWz zb;u3EyuB8zg7SMvWp<&k{Myj|4Uf9}Jt{f>Fr^3PPFVjdd)K;D`cJ)~V{di4{~6mf z9VS*~XDKdIvJ~J!hPI7M-8KL9cIGbDFtG=A&s|h0hA3T49yof&z3{Ea-J$PqXXtbe zAc7FpOwD5NhY!;cqU?y$)12$7U9qX&1=tRX?Ts#ICOA|;!3)rf{JOwMb5_Byw4^D3q; zG)xr=%pVDa01{o>|MJUj-`5_)nTh%cQKtsjr(d&xiLsj*1?*ySY>*kk>%I{*uKvjI z->!LXYV_IeF9rs#_C32hsn2hFh4KFyWa%7DzaG0UJeR1wtT@Rn0sivk?%I$1f@^1( zb1_!Bkk&m@hz{KQgxmM^N8JEJBnNeS%*%Ud=T3kZb;IHv^YlgJb79p&S7gXoSkmT- zZ2%u-4LJ~1Oihlcx~!@p(&}9ZHjimr#~i;80wj*~I{$?eE^+X*^U>7ZIJ%7x0L9Wt zBuq@W;%L@YQT~z}H@S6hztMFd8f475SOl0r8Qu2jueg0*ewYbA{5z&Y0Ej^%6WcKd zJhgeH5a46QmX)6v`SkKr70sIEX8ypx?WvlEj?CMb?EbVn@Qp^soVFMu7&_tn{zLTL zR4k?0Xe(_Sm$_?y_g${zvQM;$)#&d&fy0bG_wrY)aD}DqIEK{FWYtGNo(|Bn^vDITln>nmoA(AsK!8&&`OHC=+>MAk z-4F1Yj+MCJ98ljPM;)AI4LZ%5+pa@dY>8?xKQ15+Fflypp8Sh1xflNZ5jX$^z;NR)jyziY`Q`zi2LC+&scqf^t!3#!8ky!e4 z0F{SK^O{BOn&0_(*LBspivWC>TmO;MZujT!cL%?_&1LCOkD-_+fa?&I*JWIO-6EHN z%{rIgw3I1u975C?C1B65vq><|puBZ}4Cn#=*?yOJ=8#K0{=7>Zg4jl2(?SBAL5fWG zdT@pXh`P)E)hQGKL+-IZ`Mf(!`wNJcX%T=N(fT>I*o0Y-X?ePk z>H5{Nm0O?0Eo@G#rx)iAnRovM7QEVDcZr&xH5ckpeCynR z%(-8T;U>rx-LXe@yC?4ciaYYqv#tnr`^at&mTG`+s)fQ=y6ih{blJCD;|kdS9dbWr z*ORS@fi=@v6s-^e)Xwq!bZIOyKLC)|0dl^$vYWaf%Fy^dWVAmbe?$H;P3t_|bJm^O zwhx;^-Zd`nz+e{+Yp3h8ICq^TD$>=}*vpo<{zIp+m?P>?Ixm#0st7QakA%F0bE6BB zwe92nM6ffz{cexL1 zK}((U2cdd#Dv;KL+Ou$kGjNCzbcF_HDr;IA;!I~f3jwO}NNQTy>CQ7DG>QU>T1t0= zIzljEmx5g1 zqEYIC1x+r0(?*wl9YaK{Z6UB@t~Rv^y4OLuuweiEuuEtnAX2eOVoU=@APkc`vTqaKRy43fcaj7SthZR$nbOCV$ z5MtrwE8G>o{3h4AWhJFXb+j7H{DY^UJ9Pik?(skUqRj`$22dF&RLHCKg)AhM7zom} zKMHd0j*-7#zpFBC<=xbrD&97{cXtcS=6!Db-2dnA{d~fv8RbuJ01YuPR`gW9&(Lcj z+U|9~_ik5<$#y;l98r8fL%5y)@LhM{2RmGm8X1ch;HAuo+TXI(6;K=l4d1NnifVGB zX6T@{C`;1H6MK)lB+8k0no-Fx)QIsX&~TJ`hFJ*kar5<10RZxEb^t~cK|{tBVChAu zFTZ}VD`M&mG9aae82O^x(usaS^H1UDm%4Ym^ADf4(Lum)F@OuSuIO}I-gB#4%nas* zfGlNFaUtT^`49KHou9kc97r!nXV$aD0Dg1mCYPuxc%4`MuGhKsvx9dv&bU@ky*Wd; z)AzS-+MMtbcY29LhpX!bi-(;Ln~}l9eB3KoeqbK6TYuwiG_ZT#?7j~GJ^k75xPw1@ z1`5O?CyG}GBinN~ZgAOm-slQzDSO75KAM1?JaMeoRo%bSRekkIm;T{S1HN}gfXC>fjn-N(z{g;1=IMxS`0$0eUW;F5cf;b1Z5g1Rb``61#@ zMFJ2Bc3(io3t4;s?)TAWJeDXJh5h&KKj|`Xl*VOpQkkLq%N|Ps)NJR#(Nk^+WGbRe zhHDI>NMiY7|9$&t6C;q^AX6@Ni}T~zNAtJ;-3fR9M`P?R%atyzxGTG<{m*~bktj_3 z5{oMSgSY?Ri3!EC+JtrRWwF9bvHL0-v*AD9g0<`Fc>!K+&i0SGr~dlu?(qG)plZhM zXz*h70qi#S=B+M=LMPTcN$pA%9|C$2>h5vrZ$9O!zVW1K-yX72EY<+5vkncHFvvKz z=?D>lGnP6-1b`f#0k{x@aeL`qj0orj9!TP2{7LSEqda@mB@iD)I75J32C894l1c}aMI_>JaTg^3W47YM|+6xdT zexNDznuTqC$J#TgLdUM$;~&K{5cYj$Ydz3}bF-R>_v6awBT9>90Ex$JFMyWB0zW6K&> zu2)zd>QyF1(15GHv(2Ty4$xuo9?GH{1E2ylY}c+u@dCO5H3FNWYKMgAuxGO&JR@bx?%UUQ< z+RvOvHkKo_-)L%27O?^XF4=V-m6F+;c%cD00nMvJZk~9ztAWiC#J+AsIkGbTI zLjWCPQwiYIQ)W>Ecm#B5^a8AzW(7PBDABly&gDmGB%tR4HfI6dkVN+!LK>yvnFrua zzW@<543(njk__`K2*pE^4&Y|RMI9zCeWsQ@kWm)8eyoNCuG>~GV)igbo+$a0QKR%z>}Oro9SlRuRD#S8{69(mkDadgnp+#Haq5O!^}P zG-{LB6#tqjkPNnK_2AS zN+6kjS>);^YZkyQ9>{O}#}iYj{{rCGzyGgW6UFS$dxOW`;jx^GHFZ>i&eHn$vY@_` z;@656zU6~&b=3{Bu<7Z{L0W4+^X%K9_+A>FXhdG3+yx7pT=q>{p?LOFVp1gRIH6H= z&`+sn54$R(_QP1y#NugOiM>ZuZmc=%RI3G@D!&$ znV|HBAko=4!sIiJCK5-_+JsPmzk-g+T!{+;1dJZUH8lJb0%*$k-1EoSS*F7^u=+^T z(X$1~|N72WTRPUaKja)2Ab=D=HIQMs*R-a^Yg>1?sw4eu_R&A8nD)H@_^Hc3u-ea$ zf7tKc(XAaOu)JWsVg}8|Kmwn#g?1>w&U!%r=(I;c2`!9_(-x^WbyJzsjz9bi^2 zA>|I6fTNRgufN>oU&k;7OI{_#kO~DX^~Cco{qIj0i!}<@4BRLH*V%0A5o;H4DgaJ) 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 Qc3)GT5CZSL=JP=S09j|@JOBUy literal 0 HcmV?d00001 diff --git a/scripts/check-dist.mjs b/scripts/check-dist.mjs index 62cf778..ed1be92 100644 --- a/scripts/check-dist.mjs +++ b/scripts/check-dist.mjs @@ -63,7 +63,7 @@ const files = [ ] .filter((f) => f !== SELF && statSync(f).isFile() && statSync(f).size < 3_000_000) /* Binary bytes produce meaningless matches. */ - .filter((f) => !/\.(png|jpe?g|ico|woff2?)$/i.test(f)); + .filter((f) => !/\.(png|jpe?g|webp|ico|woff2?)$/i.test(f)); report('hygiene', files.filter((f) => BANNED.test(read(f)))); /* Nothing authored here may carry a credential or a real private address. @@ -82,7 +82,7 @@ const SECRET = [ [/\b172\.(?:1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}\b/, 'private IP'], ]; const authored = [...globSync('src/**/*'), ...globSync('public/api/**/*')] - .filter((f) => statSync(f).isFile() && !/\.(png|jpe?g|ico|woff2?)$/i.test(f)); + .filter((f) => statSync(f).isFile() && !/\.(png|jpe?g|webp|ico|woff2?)$/i.test(f)); const secretHits = []; for (const f of authored) { const t = read(f); diff --git a/src/pages/index.astro b/src/pages/index.astro index fd7e73e..6610bc9 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -198,7 +198,7 @@ const schema = {
-
+
@@ -211,7 +211,7 @@ const schema = {
-
+
Monitoring @@ -392,17 +392,27 @@ function fitDemoWidgets() { } const screenW = demoScreen.clientWidth; if (screenW) demoScreen.style.setProperty('--sc', String(screenW / 393)); + /* Measure after --sc lands. The grid resizes with it. Both reads must come + before both writes, or each write forces another layout pass. */ const card = demoScreen.querySelector('.wcell'); - const w = card ? card.getBoundingClientRect().width : 0; - if (w) demoScreen.style.setProperty('--ws', String(w / 170)); const glass = demoScreen.querySelector('.np'); - if (glass && glass.clientWidth) { - demoScreen.style.setProperty('--nps', String(glass.clientWidth / 170)); - } + const cardW = card ? card.getBoundingClientRect().width : 0; + const glassW = glass ? glass.clientWidth : 0; + if (cardW) demoScreen.style.setProperty('--ws', String(cardW / 170)); + if (glassW) demoScreen.style.setProperty('--nps', String(glassW / 170)); +} +let fitQueued = false; +function queueFitDemoWidgets() { + if (fitQueued) return; + fitQueued = true; + requestAnimationFrame(() => { + fitQueued = false; + fitDemoWidgets(); + }); } fitDemoWidgets(); -addEventListener('resize', fitDemoWidgets); -phoneDemo.addEventListener('change', fitDemoWidgets); +addEventListener('resize', queueFitDemoWidgets); +phoneDemo.addEventListener('change', queueFitDemoWidgets); if (reduced) { const strip = document.querySelector('.marquee');