From 0ddddac9c93766dc931b1d4fd78b87f9cbf7eb72 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sun, 15 Mar 2026 15:43:44 -0400 Subject: [PATCH] Add maskable and monochrome icon variants (#11762) * Add maskable and monochrome icon variants * Optimised images with calibre/image-actions --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- public/images/icon-maskable-1024.png | Bin 0 -> 7155 bytes ...e-touch-icon.png => icon-maskable-192.png} | Bin public/images/icon-maskable-512.png | Bin 0 -> 2996 bytes public/images/icon-monochrome-1024.png | Bin 0 -> 10586 bytes public/images/icon-monochrome-512.png | Bin 0 -> 3315 bytes server/routes/app.ts | 14 ++++++++- vite.config.ts | 29 ++++++++++++++++-- 7 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 public/images/icon-maskable-1024.png rename public/images/{apple-touch-icon.png => icon-maskable-192.png} (100%) create mode 100644 public/images/icon-maskable-512.png create mode 100644 public/images/icon-monochrome-1024.png create mode 100644 public/images/icon-monochrome-512.png diff --git a/public/images/icon-maskable-1024.png b/public/images/icon-maskable-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..8378900472c25fb7f1f3af140f6df025bf749170 GIT binary patch literal 7155 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 A>i_@% literal 0 HcmV?d00001 diff --git a/public/images/icon-monochrome-1024.png b/public/images/icon-monochrome-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd51b0f2309203109f96f7fbf315416d945ca59 GIT binary patch literal 10586 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 X9a_p+PtR}F#JFUU`@+omqJ94lpe9dR literal 0 HcmV?d00001 diff --git a/public/images/icon-monochrome-512.png b/public/images/icon-monochrome-512.png new file mode 100644 index 0000000000000000000000000000000000000000..95097567e062604898e49b438df347beacb59c55 GIT binary patch literal 3315 zcmbVPiCYur)_-T1gd`yQ5(5{4M1iu1SQZ7$u!_o7Kx$i+xPl-Op(@Cd2~vdul?tvX zi3Ko!>d{JkQMJga&V1 zMq|(b0LwN7_=W)h6H6FS)CkpD#(G33i_pLbzrX{B*Q{CNb3G7nwhX}Iq5IwGQvvb27HqQ04ZnbhT>zc%mJXedy}tML~{R! zzlY9LdKmfdqEh+L%v$6X#F7zh2xVwu6AOh%r6Fl&z`I`8F zL%fObqIyM8IWMN+y5L6n>x5h5rK*PYl4zT_S#d^E7&CzHG%7o%606yhHVD$!)-M>7 zvhensD#cWk=7jIWU&X4PDZ#RG`o#UqvEteT?_u-C*;8{vb8Cga_m4lvp4V>O_Tg9@ z{!053KVMM$S5Lm+{q<4r#g4gL%-fZx8#*_lvV}b;2KQ&9NL(kyXfIBp3}y82KRi5q5`ny}N4tKz5f zXmQ~BbcBIPU0 zamw7(WaQ55=>>5f#j#Ft%tB~U@VKH&whnqX^t!nZS8%k7RSLn|Jmf+-6kLoob0hNw zeX*G1q%{-%^Uy-Xvwi)0;jF6t@&iAC;C2v8AICpQjs!g!?{7_&Ted(V!6rY%fOvr zHQTM625Iva7T(y7SJrt`f0}nF0gKwF|h+0O(2c>TgK+2bD2gtbqzCl3NfR8D2s*ye3ogC)?ERVsSCe@QwB0xYj&9Zek z3RuWs4u%WfAoO+r#FMqN-u>34do(^t_Ai&9H_C2*X|pZO@eJtuLA*`xLFtK?iJaWS zgJ(&KEAU6b58~G|U6+k(W-`Tc@yw@4I7^kDsp3sp&ZwU(Yu|HvzU?JkIr*!q7SqZ0 zl>Jr)?w#_|?o%1Sn%V9$6KCjwrsnBGsqgMIf}wQ~y}(x*{Tm|EU_DiQ6M#)*f+l!9 zJlU3horNZc0rS$AvYzO9d&yobh%?sKl^6{T8A873-NS<{eH8iKL>?3Ybamohx&}cW zl*WeHuWg&I$ekf&Bosmwn%s?-MvoyB+0T9qdC(D!iEnQQNSos{ban<}PX-W|_=ST4 zaHW%-)5*(8!5l5nQvHJG6(KirgkLN)qSq|&bJFI+Bn2BzyGR;m+aGb0X&FK;rtEHpK>|@`En70o@PQJah3sFqRWj&HMPbQFcIq$}KM<>P4 zE3~0s9;tdw*vN~l*)j8Zt=?3ht9)=L=1n!Pr&IL-q3Cfwksad}rC(+ogo+OW>LKM= z6EhRs$<V*m}$jK}`?q6FTH-I+AJ{r?`{%m?(7NTCou`QQB@)@LWr@^}|LiIgo@d zv~^{MKzxwomZu@|lWv4r(>nE2^{b&X6_DlN$HPXVE$>a4ot;teL0k0vjFumEmQ-Fi z+h2AQ%h%(qhFAb%p(7y>V(kuHCf5i+`*nMv1aaH3N~1bQ=&dhFJ1@GqX_2IhY_o(M z{@^LI23{G3Zig2dHZ{f~)^K4UCN_RtXo$j9h2Y+}Za^@GVutz>rL*3FRamjtEf(HA z?-LKbX5kX&-EdJM=RX+8Kf&7B)^wrWF8^70N^>sY1glGNGNZ^S+w^Tyz2a zh*BlHvl$qO{k&}n6e8R;zROVHOmqw&T9dI*n+bW42z()tnM38+ZHIM)FOZ4Hbn22r z2PL-eQ=vm-0+5K3?AKXJ+`Ji+>@PqHKnYCYd~pG+w8H#DpRVQWp#(ND$8IVMy-k2M z&IB`|9)L_3px_D$*P8?^sU;j64E(^tZtXgxu21A(yA#w+XlH>QKJb93``N9Bfo9Xq z*n?(c6huRaqha9ET=cyVM_pf#4q$_DHEVb!fL<H=MZoOq0Xy|p5-gTkEHTIQ z;(+BYg3kZLTRTCSD?;G_%v+yHfX9$hi33<7IZo8O31ByZ55mM(P`fp&PbH|IF9bV0 zMa&ZT$tFxG&JeGt!xHs`Q9q9aL+5=oHe(hf4^mMPP@}nNSldD}gHW}ibAV@9-hS=` z5EKJ8?Q;1~W@>+I!EV95yWV*6SFXZS()-KYWk>5UCw(T21h_+g8ZeXn@`&C^R#>EH zX$DN(9saUCjYO$ACAP;a#Hk&g(3hDb-MxFrS^qW)1@pSlaka2e48$dw>PxEdkx~Ff zTIJCSGT~aWO%M7gb*to8gBa(`CwB0ea&kO079OO*ts$RA6vLhpKJ?u=xGdAsL*3&? zEEgX5@?@j6Qx4@tjlo0)M%UHZPvJU{KE+}y%n=tm5=AsHg>q6!X|9e}ojAE+_&gN0 zmiY@@hh>vHwD{Tc0Q#pF>eaW<3F6B)n8?$OxGcQtW=mOyKi@@wl>0op`?r!XozS5i zi7mxfjH}l-vz7NK2>mNg2E{i<)BX(T?Fv&FUDZJ7FVy?jSA=nXZWRu&Kfbf`CJv$$ zUvmPXOk1F;>sAr8#v=@RiLtQq6O!CuFuK78(mJQQ-`w3$iXMb2pY)3(XjMdwQ(j#x zbkEzUa8Bva(7rhkf?y2C>M-V<5%=!<1Z!^K^iEu#%25xfGRQ6lN3mgsPi~_*rx~;y zw|Y+h@e(+@3Qdgm&241vt^?Jj!5{Lh_rnn_mS|!x#}}$nN#`vmxA6U58GPIM9gl=( zmf~Tw-#24V=DMye`&rKSlaV8PTg4f(f*2doM8J#DL0;VAGgGsjzSvk%a{0+faqREB z%GOqmCYu@VXhRwGm|4U*_GDZ41J@JEZ0<#ESr+d}{#9M*(&A+G*AGj4-42W9as;~h z6z-W=Nr=4SH~yocyqE~AxvsYOXb7e)pfe043%47_Vew+qa*vOl%wb0lj}p*#OVHPe z!fD(0!~|l+E0wP_OO9`~OQf5XSm6~+w|KH1^J820vr=4Y&zblYMHEFtLl>#sIIjzn zXRL=qX&&c+rT;cTnu$*#RmaR>adxnC&Z>`oDT>xXy#C5H9p7D?T>kVrgQ;mZA8-C> z-|4)r>{lr?1zTqrx01$kmEm}dmk@cBlAOFA@^-#XzpFN!=0D>GJ@{T9*Ao44JXvv( z!EvK_sO{ZB>!^YrT+ohcYnnDQE74LOVlDAFxgcfF zXmzWw-&XJo+ma!mm5h>9lD2jS`OwhqRA@(dNGH6V?7z79W{}PhFaQ4ir43SX+qC$$ z(wvw|y7R%oW0%|NcwId6r}X2=t`m-; z>_b-6M}5`WDyK@m5|4%nkN%zXb^pXf=K;}R&2X475-zI7{v~{|c7;0@+r1Wjn{N@1 zKiC2p;x(gduQj-g?MSrYsJ%Gr>2Yu|*MSrpg8A7pRk?>WdmU1Xs_<)q8~)^Ze6{+! z=_z;Ui%t9_+V%=N9$)Kj=i^M}vy2Zr6-z%N|C^AewcV%l+7{mD1}_0@@(cE@@#bXy EAMvq!tN;K2 literal 0 HcmV?d00001 diff --git a/server/routes/app.ts b/server/routes/app.ts index b55031d1f9..b6fbaad024 100644 --- a/server/routes/app.ts +++ b/server/routes/app.ts @@ -160,9 +160,21 @@ export const renderApp = async ( + + sizes: "512x512", type: "image/png", }, - // last one duplicated for purpose: 'any maskable' { - src: "/images/icon-512.png", + src: "/images/icon-maskable-192.png", + sizes: "192x192", + type: "image/png", + purpose: "maskable", + }, + { + src: "/images/icon-maskable-512.png", sizes: "512x512", type: "image/png", - purpose: "any maskable", + purpose: "maskable", + }, + { + src: "/images/icon-maskable-1024.png", + sizes: "1024x1024", + type: "image/png", + purpose: "maskable", + }, + { + src: "/images/icon-monochrome-512.png", + sizes: "512x512", + type: "image/png", + purpose: "monochrome", + }, + { + src: "/images/icon-monochrome-1024.png", + sizes: "1024x1024", + type: "image/png", + purpose: "monochrome", }, ], },