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 /> +
Skip to content @@ -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$oo66o=?l0~Cx%&aZ@}e8)icTlaWK$$a5_1* zn0Bo=p{<#Fo++LTG4zF;LK3t&kD?aT(2h9ZFjHVjTVlsy@F*S%=5J&wN1-sUgdCkxY#;qGy7U~w& zB@4x|+C&xBgoW2*hhFA9eLUd&-Z-6|MS%&%^R=)Qam=_)6_KJFVZLVXMrE~<|GKnv zY5C$9_@dJT98txv-)kDw>x1eI=uyY10PEl=Q{4j(OREm&2$IAtkhiiz5e&m*gToBC zSA~TfAg{^bD$=Vg *j9d1r=NT-g8SE%tf|))rQ08BySKeMALIE*_nT4?hUfyd#$OP?PcBoOFpSHs_ zlw!sTC5e;~of5G7D#r6O6&}|^Yt=>>qiVNI$t;cUiwyBhi?v8GFsYDqg0l=Sqvg*b zdsIcOx^b3aD*8--4CGp+p_I<1)ab=@f%gIuX ;h zvw`Y6anAuJ%f^}don7h|G0s-GI?V3c_pbo5mjF+mTAJ>$x1YzL4r5P4GF{i4M9Q=W z`3W4<83P)N6oyPz#2O4+l0`2KOPVWakC`#8q!q?cU{D3+x1uMgF-AsF4^laKw3=%* zeQi`GidM%(QOe7*N1`z5W)!5Rl~uD`#wlI+jyP1qqKWbaNTX(QD=$M(6JU&e6Nj@Q z8Ejgw%8Idcc5fIeLQxlo2rE1bIYm?f>qqiaSxTg{mB9t|kXyJn#4xM_gOB>&0=c2w z6&W4*43T9i)pj!DOpXPG1tCF2F{hq1-mewqOT+<(xPMfvD(11w4&OOMW~P>flx^_y zWT)4-)N_kp&j*7xLm_DAp^z)(EqCJ-7B$KJFr(6|3odeKniKfTmn&IC*ij%Gx&<{7 z076~<>A}c$KM53xMk~X}C`wX(;<;=NIzoVPwtuCXJTyOUB`H6nI_~1vrTpR!=K=A; z_gv^2WDtCP 7k*4o6aSi=kcqd{8(=-ymt+W`{+X@G+WTI^JguuYBZG!m3|B&yA67@d z3LcuZhaG#84U;qf #3YXTxx&_Mt+*iOlm}re)djQWUrIHPSYeg` zokS8brnJ)4ww_PGm(mvp>dgciBuoWR03nKT_6E=nUUP*szLCD%$1AD?rxiEXE@_P` z&ZI=Qz#`=Qvtf^Ja({ zK91WgB*2PiUc6IyUSM0tK(Qhq+BkN81b>W}L(H7J7Rn}T@SRY ;8}nc5hNQ9 zTe*1I@g?j$nCZZ0D8vYT&xU2bA-Sl4Fr^k4B!q=?1z4GOnGRJ33gJJ{GB4To%L9$} zHFc@^dIc3@M_5~3R#K}Xy}Usszo I#er+aM!f&gbZplmE5gumNQT14!X-Edi>IVDlSKUHe zlI2c4$xA9!N*xs^y=9J|VNro0iB{(t0}=LBi~3_-A*zWQE*7Stm1LiF1ewR@Im(&W zYsyw<*zhi =gqKZ;R)GMl51?MZhpU;JqD?*%)T}wyMGpotuJH-(kIcp)O*%+qE z7!8x9tf}q*P6U-8GcDPUa^pE&X20QCF}0JZkJC G6Y@R^KAt#9TZIxonf@%cpVL}&$ukA98DXzczMe(Tb&`^2J)_4wuvcm@_5s73 zC@xPfJ*Z9d2&%7wAxl^n4Z$jgkx`xF+J!mKls{?h6+bp4jN{SgvQ;Q3Ke7L~Z|os= z=9vW1kbw{P>_2kWZU3J?#0?*7shN`b9uQns+sR7Is^4YR%cDdN%J)%-9#_)Jq0AKG zS6?neuM4Vb&Gm#xQKJ<(u3uCMdjK%ZU{iW_;YFBC4beN@m1Pw6K*cj#L8GV&dao*2 z5`IJ} 53~`c@8T|WlF}1=)GQ)@(W{Go>3=;WlXJU zW!{%^7quYFA}+on!|5J|^|_c@8ImbM)GjGlAw{c&DkI8mYNmFt_fzTtM-HR%%PT2s z32_6&fi|r+D`G`E;+r_1DS1kvmyzetH^Yd_SW%6Da2^}_x%{ P)uBk)n239W>te#*&zidV-&t^iFZ(IHimDft@W2d&Q5ED(F6r9-r;S zl%Mi=Q(j&CZCsGr6 tpn{nJC{gc}0?Ka1@_okj zN-iZ{K`T*Avkz~>U*Z)tlu^SK*|0x~5VqEE$F%a2$WVqb(6FWDxlMmfKB~JKZCRQU zsi?ZMCza{ci9C@Hg5Jk)GPkHQm{_6`P%5*S^RB#TYcmfZ7Tfh?N@DZkRo~I~0p{O& z=IZO%fvmu;pxV(Si*cyP{zKY*T^lt9Qv4WgNnO%>fc0G|Ps)*7UgMI`k+TYOd$PJG z$+D1r9M>pbD6c00Z)r(qY@aFGxq{e!is@S+fE0e&z2&Cmu?jT|YJC(KixyeAlMpav z$WXC#h&YUP?wk&hm9i{{D5L35Q{gpztht|BK2s~heVo75r-Y!h VkncrQ13eM2C};?Uf=0XKvP z?`amc=H!)B-dWP^2M)Vn_!!C_OTiahxjz{sYL0tt> ;+IA4U~PdUZ?0|hhPEni4cvf`&?@q@VNQ41n4 zeXznYTS^Y$Gk(vu?|0`O*zK}f{}=XR^p+EprBy*Li8oY!{3L8YIK?75o9!|Gy&UY{ z03UX^rHB1w*^S!15htKcW>;|~&XGdllPP!{b7V>8GaVT=EXq@vit^hTdT8r&A%G!) z-gBrkRY-|dhsEfvLR@})A3m-8oll&~6fftU+C=_pj{qMdyf&X=3RZ*=hNwjVUAupq zTN|ugOW)F3(~q_vw@dNk>-el^
>uBKc&mR3XO80OU}9j* z>)Xd#Vklqi!D_0k!XPCh$0UsA>gSr-({|%kxDXHFk!!pkS)`2+J ifi)+sIGqU<2)5C4vLl?R#+`a5u0&~=E0_Pa>CsZ>jvxqUt2Y#mLbzRS- z4wE}f6?j!Oz2Kpb(|i@q D+ z#` J~r}<*DKHu4WGfRoLP#G#0 z2eluZ&}`j=JWt~1Gn{?2_*%9-_cgg76D~FaO Bf%3H}qg4V;)#D2miBei> z5p{lmox0GC1BqC_G+uQ|r2Nf$NT<4%A5r~O%4C= DiSK%n&p7NT+?80|4A2T#doJ*^{Navs3X z!t(V6&(Oay$~HQgXOk2@4d+v}#}aaM4B5s2 zpnZYLsHZaX_)bcn0AGW*?$~zRxukH=5L<=9H|Vt|T`3^<3yayl1^+-#8!T!1Hwnwq z)TPp?oGFM{O3ORzZ*}Or1No^pOIDxqgtI{}j5pcrxJ=S0S)6SJQi){rj^2wEJpo=E z4wi49e$notdR7WdyrLX?J#bhlZLs_ltC?#V-}|x$%n`=%oy;Se&Be{y86^Pd0gE<# zZJ}FaHBYMPK)$+t*dHq ZsDL~im r+lQhC=U)HsARpkn+`Z#VHxh(=F}SXMTA9(Bj=pY z{zkU63qQvUKKvP0M%!1yrqp=q?GXO`;?N;Rmc6AO+BP@P*173Mz6`Z+|7fyf#CO|R zG2yxW3?v6!(+V*13Y-VmgelbqHBObs<#?Pe#>TYBqAcI(F7 yT9oB9rx0%Hd|p~RrioPXC_)M$ z2gQox*+nVN)cewl%8LjgG-9zfsQ+TB2l!f^U0l5omJb&wl|kOHd@bX$rE9Y8K{$<@ zmayq!Jd&?0ru =Mtn@qR z7Tv<;$1Ea{eZN#GWe~F1JZsU0o _g}^>~j6v)4ulx)0q2 z!giFnxsT|mZaUx<(kJ*1PtICf@KXJ3)VI@}+vPOn=M8`u*8Ir=HD)g0dNstN#)8c@ zO}?A%N d-CKrEt;~3C9F?!H~aF* zqgg{W+`AfB*jmpjDLK&26^7V+dV<}!HM-XPge0yZ02hAi21ar>Ij@bm{JO54#Y_uY zeaH~;3_agZny2y4W?Tk#nDz{{mVgvq7AJ~s (1w0}BFtdil8AwYRuW-K=bT-ce)eY!CH^XZ>X zmwv8iChH~RbqH_*JTB}mgHZ=@SXcu`G=x@}I#Bf3Ni(sRoy{@phKoc4);spPli%Cn zMzrn`F)$Mf$hU8REp2kl2ZVqRiAMEQPXyXQRoKwBx!~2WdS #wJolDo`nUbEJdyANM%@WvU}1Ms*gNf3SI zA;H+R<+?R N5_9I;;Z#4W&SY;J+r>h$DZ6fI`QVyl{&ra>BY zt{oK!Cj{e#z0o-iDvvg*SH g(Xov6E4BtMd=?r%WxRr z%d6QIio*J7j*2N_Rv(0|_ujYD^|3jnwz!kk&pdUhNH6;x_Wo!O)4MFP4J&53+mEca zWMnXHT>e8p)&8Z4&o4HE4dfLD90bk=#qozR5#8pFeAn~L&aYNj)9qvggwaM=CfVQ2 z{yNHf#sKEkvh`To4eQ;pFFguE0c_@ Wf{lvP^^`DjdEyT^2vivOVu?b)(|fc1xrt|VK@0A z`Vtst jOsa=0-+88vpFVEO3qQB856>oGyWz~ z{5seLBLfoXi<73zXj`%;*kJ>96-pk}S_e+wi(6dw#&xc^0&O@A)yTM^ohqdSYK% (|;4Pi+h ! zHKIle3Plt^k(Z110xYcWnq>Rz5nyazlTVRd!mNyxr&0tal`{3u`o{7HIn)N(?v2$0 zcp)w9zQA}sck5=_*%{YL)g#ach?(@a*na+n(`L&rqOdh#99#FH+t|^JjVjUJCs@lT zPb%}SQa_N68~ThgCCVVs2rn$x${*k~hFwORX{IvY$a&RY&HrZRt>o^^4TeGQS zhw({cawFW6PU)k@iLwEZmKtmKDqGbOBS5Jb>LLh79b%`_yD%qVu2F;P9vN9e;Pc_5 z3xH1tm1I7hCKGcR@XNBc%th^1wt%2s6jzcCBjrvmYMcYO*TkDQ+tAJcW|>57r0(hO z?{>+j4lxSCaf7ja8j4>2i?4Ofo0hqHkfsfenPw_?;$*+MZ5iBSv1Qn8Kh|qg>u2}E z3XwrwCm;A-a`$N6@+aJrABUR4Pyu|m=hNB5mfsHi;^?)mcSn~y`507&9EuB!5~)Mw z(J!Sb^$f9b$^egu0{9YJ**9O|@|zc1Tf&N3as0sU53|ScH+C3u z+g30b!MfgbrCWH*WiEm4qf!%aj;4)ETq~PSY8(48_UFkFFGM;aHtjObqk3^^eWMPA zu$tGh)AmN{heK^m*S11+&EMw!cEd5}K1#$eR05x8RhR#Ifjs!oeDM|!f3LXG$~P<_ zJc|_-8M-C;0+y&h>LR_IHfT3)%}EDzYX8n71{6Ww=VJ{47O xMs`Mt6lS!6=p6UW6D>Ar~IO3>IzUPe~{O%(I2Xs zaoF6Vq5D04qU{ISZ4DR^CPQ4a(v$3tPmcRn59ZnB;bt~~Z}C{x>+y;1Kp*Q1wDg(= zD^O~H+}0PP8~BQK6(0|n69K^FYKB>wBN#cz*fZ)FUoKxLbozv;DN7+ahvgtg3q03Q zNj7hP5D^q}fT$kU18R4CZ=DhXNwBy08gpx?2?A6CA5R%s9tC_knhNj?Gvn{_aAj>Z zDvyC~fG0n*Mgn+E%Zk )QgVx@+-ngDA-cC1k;50rKn!zJm!Ggm?oDhKjK;PG8B8R637&Lxj zba=xH@jm C;8nGJ#Vx&+ >IPvaG8fr-OpDwo<#mJ%n7TdRz(N3%x&y; MWXO7{A4pPZ5f-O6N zw~w3~f=-5-qErhiFD%o1-ZTls7d#{`yfF|(R4509XeJOyMSvrX04TugP<|+6p^;~* z%!lv2U&@Ur21q9>uB(8oovPf^j7w863 Q0ya*)1-6101rnvsPShodtLl zIyQO~lFLoY3^^EO7Qc0?>;9RoraTjI)}Wl^rhVXVzVC+E;M%r;GlY$jfejv?$ML#u zpq=cbQr&)-k6!=j$jIe;rc%99#629Pj!q2w{Hs2kCEo_mOWxpykA#5Ne7}WC5EsB; z?e^S!)k>5UsA8@_hgJjpG!r>}+YX{rV$_gwCImP&U=(c1p2o`+=tQ|tUU6wF^8kn= z04gzHU&9uF1YmQH #QhCMHRBOTZ#d%rYDeQ?RVd?RW!Rtlx$aSPCpu5t6y=`)=2R4lF*5io(l zX9W4B-LFip!uAs<`pnp&Pp5~TKL!nQQ1io}Z`kHB5f@joHz0tQS=f`$ppd|T9U+6n zfQbW|3e|cX#SXsjvxc;`?Kv=JD3z2BqKy(%6iG_vS$&wnC|#l@WcPBs%-^({uYd9_ zKrDB1$(lq`)iFLIbeSE mhgp_F7r3xmfGGk1T z9R1ga*{Kr*VC*ghWv)=OsKu@L#hYxhsOP&oS$_rvOJgmf96f@~yLZ@4yn*lWY+$xg zRD1zjr7o~~`2^_5-m>1wPM+Au?BPKiBhKJCj7XA+G%&6}9^wSj2jZaX7)fY{?WM~j zQFO3?`S+C_F24q35mM`OF;<7Tb!GWjex!#BrJm*^QTILPeC;bN8-=(Ez?bb_gd(>% zb)${W;(E+ mLN90#KXm6^|wbp+gP&Z zO_%kIY(I{iz48}^tNmt-@l`+VMouwPz?=G|R2q!S;{j%@hi7_D#U|J=uz)jW)0NBS z<%A$KN}@5>uUcr0(hx9@AtM~NkSz|0$%A~R6d!;hGg%>vCDC+9pl2r2G2gE1a=ELP zGW25p9IjAY(t-m8T!j4uiwmH95G7X5e3UWU0v0_)93gk*QkT1Vt;@b1d4A(+Otamj zLq8BFDQWPkLmbq24vLq^O5eMSar|?kySe~Bief6@qa15qegeHl2AgI?hWX>i*-Ud5 zx}Rpo@94igWa}m-9a|_*|AswWOkg?1jO&_K4|)yD?;K98f7ET8{D9S KA-RNpNuZB g@|gk_y$`cj?6@qU6al4AA2lknC24`7Wge4m zZgaQG!@lkF>{0Y0U%s+;mo2hw;R~!gkZ1@rq%sZ>Q@JvY%ZblwKSG9;v#Ce-yDG8y z-94DaK`43PqR~sa6LRVM0X9X=Ng^_fz9Vm) d@rG5%;@Rs^daLb5>-YpoolK)Re2(M7EZ=n_HnBT~lu6jRZ}S5H zR^xrK>k`o8tYRdH?^T2NP;}l~r$qoP-79_^ue{b%^HaPqtyUr>pE_)^U4|Qvt=nx{ z7UP$Lqhvs$)@xRQhrY{dK}FOXqTmrex}Yy&HG=fo*t$Fj@FQ@C{eO8cAFW{14E{nf z8^@x4EUohvT#dZP3W^!tZ(6-0SKIPG#+Gc|JCl+Zr`CC1z<2KcAb-V&`>JH-3vzEj z ;zRGFWp)Jben&z8%Vy4AmYi(CA*tMH0Xvwjg^Yd3NYKM6XI>^o`8s~Ru~YY#mI zy&WU}{h#`dJI`FdR!JMK+S~Yt`e5Dt7 ziv(~ekNRl-UE}qtd!I#%KN>n*%1;4BPV7AZ>1&ufSo-$YxaIG@!PUx37h l zzPs4G^q+HgSM^!cdHl>D_+*xQ^5er*TR(IR=e*@! dIf7JZf^mS=tCt!X8*{z)=i*&9WLX8^;39vE9GAAyO!VfNm z2du<`K2dH+W9D9(X i^cFw4H+s?pw4kL-5|6i{uN9Bc6! zzDc&H0bJJ`Hn~;ry~VZTyrC^>sG$XMvnr56a$ZVp)LB*?A^6~P$4#NELjO4Qj}PLq zwJRJE$Z~0QRW|Am>Q&ptOdTfVEP4^UY`EsN-$ZVFZ1~fQ4=dJugL>lP!tFt#zWwBN zjQ2m|oql|y>w6yL)rgU-=-|qwLdqUz1N5c3 ARcV6Q<-f)@g!|UY~+V3#RpUFYksb=cT^s4bW6G7$$BkN!-$kNR8D4Kdv z+rDE_EHVpeK6OGY9SU$3LnbKG7q@|9*|PFJ&YI?x0ST@Xu05poa;*jd^ 8zWd5nP`77+fbw7#bgyMupwAFf!3EnZA4n(g#){nDpuwHjLc7{~9* z^WX)5U%>Zrko7sOfpE`aFaO}s;VU0?_nS&t5q-9ssP(f&ndaSZ9m_P16>lqM2k!QI z9zr{#608LaG~D1bEm~ex8APGX!65sWzwZ{;@wyH6I_@A O9;#U0UTWn~gG-8YApE&4FKd{FQAp32jXPItgffLYW$`!?HXr{3}_3^X_ zMAtI=n%S1KxB>sA0JTfG6xB=8m_8w|B>-=04+M1c^a+P-87R5!nw4$=HvL-GCTf~D zZc{1GDHrl+I*rBe5J)}_S1AXuSie!q1^q`RmNE5EoniA{rp>uUH=kkB=8l1M``6uF z9$0#DK|JN+!((^lC$9X1;~2mCUEQMBVy8vOQaf=0`xwqtoZ=o}O4%9MecTkfdQnK+ zNP7D0kDkYn@r28 3J}9^lr-=5OQEF_Q%}K*TeEd7;^k(b{awRK5h0-yK zHmm|j2FQq_ty9&p)We{v>$1b%Q}sBW&eAcm5tYjzqtC9G0}CEZu;T7pFLP@@@Kdhi zHLIDUVCWfhkvV!(T7ESy?b=gk;Mrr=#&QGz8w?>To~f>EoXCU--K*g>?W$ig>{T`W z!Jyy%W%rjg#scOj`hwRl4*1Gu+s7tS*Zs~R$JZ3pcovkMdOjhGv>oQ)NxYPALyy z%e{DT*D<69egF({w3EjmGWGZuAG0BiIZ4Da4j?pLvCMV7bqhA|ri#oc!E6a~c5KC1 zB5u-p72lM_ye!vpEfSG}W!scX?(i?*ioI$CAquqZ&2-kG_<9b2rDVxh0bb&&L9`?Q z6R^ymUU7L}kNa8krp1&sDc371ILnRp($Qp&)<1~F$D|^FR{)(nB>6O))-0X3@M=55 z=CiJG)t>~78$Or)tEO44c(YVvzC*p~v&cU2XQPSBesdoN9VVIUuff8^H+>kcbX-nt zVZB-$s0P^|tXF>^g XWGO?8E!$0M`B)RUyyRNI^0RjmY{|7C8v8Wsl?673cW9 z&f>sYy^?2}GMk$h#X~+B6u`}I+3Z%|xW>wfl~bz^Me7?iA)-!Zt^DfQ45_NI+Kp>@ zI(3(AeT;GaFbb-ym?c~LWU?8rC tV#*2#n#iWw` z%R+JFuCaR-ot&|ddA_)0;H#XmyV_2;51jp2s&Q%Hjhy{8cl3LS08LcRgMb3+=a3_4 zIU)ccb+k4Uw8ocFw%BkLa |w*r(ci%A>s4>z4%hDtzoSZ700<_x>>-WyreDtAE2g z`6$8=ncIp8$YO{%2PZHe=P6Z{l~6qs_nufCie2;7EBGS!GE)lUS5s2Xcq@vYK$dFZ zqG|WWQUN0)0KOt_fLF)QCn#18^9?mjD#`q8Tb_VOvTBYTKI=wUPbc8d6k;SBLByT- z>Qn9vBF?@!2(r%zc L`s(AUz*Xqq0JUBvt4K_2?7wQYwr{JgEt=e%2HWvlc-^Q5kW{(J5|@7G0de zZgG+cAFa9-=7maaSt0SIfZnu{{Nb1b2NY3udwkn+A9ID~dq(eRC@r;$lU&OAB?Z1J zGJN;KUibd G=`pA?#DT4=df{rFE(pV8NxddKwFk4IaFjhpyG5hos-xQ>M#_^f;Vc@ z&147gwfof|UPu#sgSUn$Vg==`L*@5AxYwQh)($uP{7D;G%nJ0lA4Kh)uR*?Ngake8 zm;3(=RjvPmyW1-*vr;)PMR>`9Z CP}O-gf 1W%|j4>O-;BEPnnrZWsI1 zE(;Wq00FgrV5YQ_xl~?B$*UFXXH+l(pkp{G-%%`$BYg6_R=~%$Fv?71FaCO`S&btz zu375D;>}DO=UY|-iNb2chOBkk>V6dB9y-R?FR$2+_wDZu_Ba2KT{MtiFMW7 ;OT}gFueqi+R~nyu^UmT?I%`1>pcXve?j1{QC}f z8YF1k(CylBqmn+5;VYCr@295JeHMSh2`zyFOa>?rKyF=W#{a2{WczB0f`*8hrVRN| zf(lU+D1U+l82!7B+tBp<;|JWi$M+j2P#jqmZR;~-pfvWQ8pUnaHAgE--2}s8ed4aJ zBfxO>+D#Xtt?&xBEoJruoX`B?~Vf@Kwb-y&_H8Rrg V zELI+k4$kih6&q1#2(4=@TQO8X0WPJ$?vRCg#prZq>*#sMc#&a$dyv9z=+&f3dPB z)^AFamSxMp!^ubCOGNQ13Yp_ZaLYjX^(sdSsx6;ZBHXChqVB}kx4YwCe$whF9b?*| zpPHxkDKpK(3vo39(jjGdA*{ZxtGAGD{G^{~x+nXYPR;(jtl{MaepL10KV^r{-wHmC zlhjjg;Z48i)h)eFU+cDUHdB%YBvT00IrNT1Lmcdq=OBmlAcb+LZR|U{nBdus-(sz+ z!_?b|wN0F%3dL-cadcj0UUj(4ydZ#hM2aDveV>*WQ?-5Z28H+>3nIlUU? d)+Ql?@P`8AST7me|hf+*71@2L=e)a!5nrgoP z#n|bm6g02fu*LI=`jSNQG9MZ3PG++o oX*~$h407vnC=JAtq>>!_lZ1Dgpp2U&M_L|qPbsOJuxvP~25G+~Wl2wpXr1rIu z g+(2umGc>w`lVyyxJ#CC*E zykk36tXAQNj!X~mdqISI3N;HpGj?~&i4d) $0SO@hX1KIawaMFj8Whu1n%SGklCU)kzwvQ3=@m|$1 zjw0X-F~SE>Hlv&-kXvrm%zE1DqQ;d4*Lm%?6Ez(l?>|@lgmfg5|5$^n_mc}B>T7BU zioX#Qa_<4?%fk;npzY!->hzs=u|$n`Er^;zU{zF@M+SK7XnuqQD9}dnvh3OXK1^Sf z2QtXV(5TQ5Lf6DGswAo2!D)CB0$4zg0BawL()6x?4DfA(3a-QV!~=m$m?*L88Si4Q z6*S6GoK5ra+8HZde~|qT{(jJPe$p{AQgJ_tVD0=#6kICv&cLthJ-?oB`o1TaIQK4p z;NTKDhB95oC%*ywD25UCmciITr^9lkBPh_{>QkLU>erQ^$3p|UZovW}gSdd6#pe>> zqvu4mq!Ka4w#f^)8igCxb8mna@VORci{kZ6@$H%Ni0(C#X!TRf?%{I~+GeT4)(glZR$Y)a-P-d!wa-{}nT5##=s)cK=TFw!NY>6NgLC^)EZHpC|T4m!0Xx&K-bZ|o#Si8Qy=Jud=!A8T^jq= zJr4}{TpPf34?ts}Q ka`tQY7tMx(C4G5Y;$l3K6hY z8YgI2!LugD>IV&3g8Ic{Uc<7Tu72ScvW42OO|(`WdZhrJ7F#H5ZT#q!b8h&p0oF%V zT^Hm>-r-H0c>`a7?nWt01TuZHW0)s3kuB_7W6;^B_w(2QV(d z3!O#YF=B+|&m*2Gy;z3<94gjmq^gs9uC;TuEQV6xJjBuY=S1DM;}xrAU I;TsrF~t4 %WFLK`u#zwrfIZ2k@HtFdw7}eO>8I@ zvTGQ2EdluL!9-sjiyG4Q>2S>>pd;9LTVI*d%2v1q^L@B^F9c7RT#=0(6(guwkoEl3 zpv#T*Vi-8W=9DjZ$!hjaYkIcWkU0p$Ij3#Qr&j0HbpPrH{&c;KnBZ|uOU^ZqXLIez zVsSxG80m%qEM|1TT5oS5F&5w-m&GV^l1><5;Y5FsNF6H%iBrjB>SW$?r>lJb{Q2Qb lzw2 bGE`w^W~j`}s9*m%JF-@qKNk=Yjs&1>8;~q1 zou>%$1Vo@R8bEg8p@yqHpGODYbY8AISda}s8wD4%e{RRgTVGc=l*^xQp4bj32aQ(H z<+n%KXZF2yk9?of-(>#<58o;`P&yuzhTeOhn8_nQ{P1a=nCaeL1Fhm^UXT4=pCfR? z-|5PY6B>z{X{KNowIQCaG0;(e4XOTg$1$01`cp6wv+N&x#IZ>p|0|0W1}Em(V<+@@ z?s$YSIJd^cj!3+AE@K!RU$yBjR*z)}jq+KWE@QR~Iy7^B+H@N~b3#JFwDUSU<~p|< zsExHE*t>2kpf_axs0>E)gQ0MnJr Hc#(Yx_`FmCZELHoGNm<8i)L+=DYHe; z8qKy!m8Nvv^o2 !z?pv|1$i1+ +?%@pdJ%QTdB 64{rI+szCFfsgZzVam%H8#{CwVip>}^>GV*f+09H^qAOr~j0I((iodGI9 z06+jfF%pMDq9F}^(=reNf?EJ5OwVvb>|cc+h~FZ0N9tdEzi_|D^GK79tA8c^C-TqV zhpIove!#z{|L6YKJBE3M{zLsQ{vY~(Ko55wfFG-UX8wR5wf>b~_5Z>A6#mHn HvQ>{@ee1*?;-({T^0+d;hcU4gA0QfBWz5U%fx&K4(3f z`Y?XGo)0_~fmCKkt9N5We=}OZg*?zV3*K hq{agHwy+D)u **iO{q9codNMX^@enYzphU;IyNrPd|9_(0 zEo=~9nAFs5Gp^k({#Jvv@aV{9c<2@>qVPGJf3FjM7E|jvTjTHRG`ZsWk9>4$N><5@ zy-7#HIO(*asS%7egq7{x z@oM0OTAqmR#L4prg&F;!;?{D?8Gi;T^x^-+2DhEJ=6mYzNDp&DBa!wZ2-W7WTKnxa znEN`Gj9Kyd7i}4Qq$O_}v}66~c$FDpUuy3a{qy6bZHe~+Rb2kEt~4i0DV0HVoWW}; z$xG{SaMwWDB?mv6{f`D7l%R7^uZ0-U*hWC5q~HTrMys=-lp~3!jUO~lu6!21krQwe zj*pjstN|IVvk*mVGR3V<6^Y6Jc&>5I2)%3D%%BUA `F3e{pQP5-+;+MmwQ_-hQVIMU=2fQkkQlAvqNCNBLs75)Wwgm$%G z;P-t4xxQ$*_+SE&V^S`Um~SJKBu&Ikrh8ADFXk?0WA8lS!k7mnzp;#F3pQ>n*ox>N z_)M~#4M*!1TLzEW=(P@V|J-Ix)2BOlRTbn!|4&ViIyU&gM78ixQqF8}`qj#t&Be94 zNp6UoPjBY+xcRj@Gi(>%T3}3edHe%R96b6UtaDYA!RUq($MP%Reps)6=i@-j_-kAF z6}ZOpzLF1xw4Q1Gl_#$O{3n!qn&!@o$WNbS-|a!Usj&BAL@zh~*jCba^)H{&)L-mT zAWM<}s<$Kaq=y@7d;LJR@cGavZ>PU|sLMDjklhwN#ao}ug+ cJckMx*BT`7z+&ZA=oi9MW^L06x$tIopr(6SpiMfd{zoN4=o(MYd zD_^9-Ve+PD%sLig3i*_Q%h*x(7(vPuHmvoTueKcyp(u!bYH$^7uC6s*n50|y126T$ zG~w?2oMCC(n;O 6?%iGVfNYl~NiYL{ZEWVIt Xqk2uOaNzzu zI27HH7r5aj`QTJS?gv8y=xpqVSPA90=dEU~bg <-aX%>Ky`6{pjWG z!5@I9dWXLTGSCX&2){4{EV$e=Iyiv8I>hB#TjbeTPd}?K!z=0khW_acO<1OHIbp>? zybWCu52-8K45XLGL^cRdzb&l*hp?-}7ue*m`hpOI!lhV>iIsG$o-Gd3Y2Gcr^wdBO zK}hO}icpbSSJp_bta6#M{?GKP80RrAzBr1b>cs1C7~onNWjw<;VeZXb4#Z5{a%A^R zC$N>^NL5a5dh}Q1u(X;7195i-Rv3&TnMSKE%(`k#C;`m0_w@|`6OXbXIqHApmg*Zp zwCoHx7Z_amiMcrm;rxSAM$0$4tJJVt8y08OTGC2jDSa&4WWR7(m&-qbQlrk8?;@Hk z#o4>^P%Oxv8CdANcV;G*=|=*$$XzK1&rz9dR5C$}20eL=l%NkhO4?%GT%-G3ne!~l zV_{zA{QQ)h_=Ac5{;Hf_L4s{)f5J5%2Zs_{r`0}bBPGh9X??C>&O`an#J0#B^wzon zv>;dDfLwY_TtoVU)P=CO=Pde{F&+w}W;JWu`u`M6&2zH;GU1h+*kWunKNFz=W)JKV z*k+Hkn5bPt!&^9abOTw07F+WIr`J_~&|Ra#gdxMEIV<)9X%-}YqT53qoCE-_u?$8N zC98cmvid9iwiET}BjYXd-re!nEF~WK6ptyQr*5b3wCZm&J&G(-$JoI`0}d 94F|2c0?w7TzJ@=BEoI5QLz^lCu z8`pWSj_y9+9=Y28Lr1lFWuhB_Lx!k&bRDgtcR|WG^`if7$4Zy)SQCp+ Bi$iB&TWrUnO}QKrUQJH1?}ZL zW&@(F0Mr$>sY`w^uShh8-6k+E;=Rh9GOYV!^BcS>dl<3OYH1%>d|@gk;<9T_(74pC zF(Lf>&7r$`VSmKvV@h$RYmP_4G((yq8#berwf^#W cM$1el!Bd9CDF_M#j39t 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');