From b36457328565202caf7c722e61335456052f8df4 Mon Sep 17 00:00:00 2001 From: Lucas Berger Date: Thu, 18 Jun 2026 12:13:50 -0400 Subject: [PATCH] feat(17-02): generate full icon/favicon set from logo.svg (Task 2) - Run @vite-pwa/assets-generator minimal2023Preset against public/logo.svg - Produce: favicon.ico (861 B, non-trivial), favicon.svg, icon-192.png (1617 B), icon-512.png (4221 B), icon-maskable-512.png (3353 B, 512x512 distinct maskable with safe-zone padding), apple-touch-icon.png (1110 B, 180x180) - Replace 3 placeholder stubs with real generated assets - Update pwa:icons script to include post-generation canonical rename step - Add generator intermediate output filenames to .gitignore --- .gitignore | 7 ++++ apps/pwa/package.json | 2 +- apps/pwa/public/apple-touch-icon.png | Bin 617 -> 1110 bytes apps/pwa/public/favicon.ico | Bin 0 -> 861 bytes apps/pwa/public/favicon.svg | 51 ++++++++++++++++++++++++++ apps/pwa/public/icon-192.png | Bin 699 -> 1617 bytes apps/pwa/public/icon-512.png | Bin 4086 -> 4221 bytes apps/pwa/public/icon-maskable-512.png | Bin 0 -> 3353 bytes 8 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 apps/pwa/public/favicon.ico create mode 100644 apps/pwa/public/favicon.svg create mode 100644 apps/pwa/public/icon-maskable-512.png diff --git a/.gitignore b/.gitignore index ff8d6ae..c739848 100644 --- a/.gitignore +++ b/.gitignore @@ -63,6 +63,13 @@ apps/pwa/test-results/ apps/pwa/playwright-report/ apps/pwa/blob-report/ +# PWA icon generator intermediate output (pwa:icons renames these to canonical names) +apps/pwa/public/pwa-64x64.png +apps/pwa/public/pwa-192x192.png +apps/pwa/public/pwa-512x512.png +apps/pwa/public/maskable-icon-512x512.png +apps/pwa/public/apple-touch-icon-180x180.png + # MemPalace per-project files (issue #185) mempalace.yaml entities.json diff --git a/apps/pwa/package.json b/apps/pwa/package.json index ebfee66..d012e6a 100644 --- a/apps/pwa/package.json +++ b/apps/pwa/package.json @@ -13,7 +13,7 @@ "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:headed": "playwright test --headed", - "pwa:icons": "pwa-assets-generator generate" + "pwa:icons": "pwa-assets-generator --config pwa-assets.config.ts && cp public/pwa-192x192.png public/icon-192.png && cp public/pwa-512x512.png public/icon-512.png && cp public/maskable-icon-512x512.png public/icon-maskable-512.png && cp public/apple-touch-icon-180x180.png public/apple-touch-icon.png && cp public/logo.svg public/favicon.svg" }, "dependencies": { "@dnd-kit/core": "^6.3.1", diff --git a/apps/pwa/public/apple-touch-icon.png b/apps/pwa/public/apple-touch-icon.png index 69ebb44546a0ab9d79d304b6e2f25a11eb43c15f..832b77a8b25bf8f894ebe5fcc60193fe144e943b 100644 GIT binary patch delta 1100 zcmV-S1hf0;1l9Y;Myv5l|D+@ESokT`(p00009a7bBm000B%000B% z0kwNlYXATP#z{m$RCwC$+;Mw?AP@%dE5txT?E8P&p-mv?6n|NGuuwYm`9#G~&Kt?%7v-!{5vb1*twr8isOo6)nmXPldv-Ps4*VRNk? z#y;rxTHkxonvF4xX(2|7F}<-2uEb{4b6Yd*oDkZ+f*D^(pF6pT3GEVrb`krRB@()R zbSQysG%WTH4-Ncc!^WG-OIb~4W5VLY#cew6AAcTNc*!NGG@pAnUqw&*hltjzXfvbD zDjJZ{d=;(xr@4n!w8BN}X{vZm7&<^t^9Wl$H$FSw4jL8BCN5jHJhjpWHFuj111h>@ zet58L^x%ibaK%LH5N!^iH6mJt=r-(me&(Bx!)u5h5YhIEA3vsBy@l4-K`F(Vy-`Hlv=2|*Oz%(KoER1w6YU0w z>v!D}-7UM`Ah6NTS~K6HyWkvI^MV$78h;_*o1&uakJsTJ;+;RU*DTPZ+kY1>`ZZm% zNcYPr1ws>=(1hMV+rCF=8XkluG@%Lok!Z6-o1)O`YMA~T=VKtrjPZdp$oa`&LKFIv z&;rveJ_-F{Yaw8wt6VCh&XrU|k%j(`3+>doq*0ZNN8zY%AGsh}l}pdnxyWCg%S9=k zdNkfXe2LI=iY;i_+lm($zR~*AgeEkh2~B816PnP3CN!Z5O=vK>g97d?J= z_Ijhn0f_ zY^yvkCnGCopXJ!HeRO!RqFATrC%v!yA-Am8Z(B`PYg#4er;oVjz6_YV6ENp2@Ekv6 zE;p&bbA0NXxjXOzPniJtjr$Z0O&bnp0Ws$c-ckW*)GHY6P-9l$aVh|fe2vYAGK4e} zQOwsdY{Il~n&dV?6oAn=85ZUvh|LxHU#$WB zVV{hu=4A++Q%eAU*yn%0yh=1Lgmc)*LA?Oj$w4ObMMGGH01SR)Hm-`)rKg0OV!zp&I2}X7d3gERzq0*wkNUwE^U1^4HoDKU!TRp{#4T`+kA9-#sUxoM)NU z0#KJpbSg^+0_QJ1c^nf4LU)DA4lp{Wm`CW~2pAlX+aE}%N1cw)u05Fn(O&K&OE~4r zf$;_B;~_1dvS5JUdYMFFqO|Au&GChSBnAMCTSD72x=o*f?tcKcAOO7DPBDRJTik()8#y7= z(dI-N0MqkP>dW1-7054lo3uL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/pwa/public/icon-192.png b/apps/pwa/public/icon-192.png index ce6e1c8e93606dc067908039d2c59c05a56d4517..cb3e1972c0f0ee9b5feb23e36c505264287f5e50 100644 GIT binary patch delta 1611 zcmV-R2DJIR1F$^X&ij?EmxZ|MTqj z>gE0O?EmxZ=#g5y8raT@?3gLklF69f!CXHT|qPRzpD3WJ##5 zvW~d4hX4Qo3UpFVQvfah{~KFK@~wW>MRYp=000SaNLh0L0DlAM000B%0kwNlYXATR zmPtfGRCwC$oo$<{AP|NtY(b*ZMs5H9FFk6u3HXKrG98{TwR^3*&+Rb7AXm%b5ET{m z)k@AOqm+^zL@8tGIoaa=hwb8A;b1@O+#k~b+;BCbwJVBz7@SUF4qOAD}Woo&3_d@>NbZvfVT>_S?mA+WB_mr z;Gzf>jsqZ-Ar}C&aO+yHUPyx=NT@5jC1z{4gm)IJ0NfdP?yhPQ5*n*k4j(wnDB3zzzqQKNkQlUGybin zvI~HWbANvX4gePTw@6?eV6=QXDyOyq1Yax>B7lK^O9XZSfEx)y12FV&C6#RgWSsja zun4fizXbwo0E^3~<#K8ZK=9QPApmUfzmdQW0PszMy#Y4*-;~NW05Z<^Bd`Eq!T$z= z%>b**r=@bb6+m!n5_!z|}JVwGBW$1E3#5 zWcU^?72O@+H0)q`86AwDPXHpWFJ;~9kbldz%w|Ju%EjG}_yl-c`17E-gwH$&8k=%) zhwl}D%m6^Y(SR8M5+H!oEaeCRL?1u|2q0#2Apf*_b2&i$1CU|{fVACS)B6q7SQVi3 zUxkXIYa4m@dL3*y`<+gIB2zB@ExiNW)Ch>lZb1c5BXIW(AT)r&Bm$)d;JcYCbbkOc z(e5aX643$5{Q>AiyQ9MG4{*}~U?K_B5u^j${Q{8sgBh|1af9)WQ>~)qT>-e?@5C!W z`$@^7ulh?h0{pdH7r?a$-0x+p-`7j+zs+LL0E$$A`cY3ki`8>k{i*|K3JyU22nq%O zB?qK^Ob88t%mYXpf!RC&@m)qWDSyL6e%PtZ0|NlwCo)ZPtt2u4nFH`Wk%10yS`Kj9 zAArskp=p3}Fo*rF2UGy{!PZm`=wrzLdO%DCpn2}DY-r>eOof2@UlSLj0U)`y<tp+{x~oE2dbez(hkk3l;bB;Vn5aq|G}F0 zk2XbrxGetTeeoZ#jQ@yh{D+L=Kjyuzroqk!EIBMw8e|Y?dRVLwgG8|S_IKTNU%q;0$`x*=deM^Ic1FQ!a*rx={Y$>MMZtJ{sHr+DO8bXHhusA002ov JPDHLkV1k*U;==#{ literal 699 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 literal 4086 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&t&wwUqN(1_u7Uo-U3d6?5KRWz1x85MVxV zJ-l>lxar#Vr(Oy(4Ve0#df3I^w`bt_btIm_p@oq_B9(!`O_HG@kc}Z>$|#pkq4DCQ z_NV`y|BK~}7;G<{RS+I!j)nuFL{Q-KC(qzC!xs>FVdQ&MBb@08>am A9smFU diff --git a/apps/pwa/public/icon-maskable-512.png b/apps/pwa/public/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..15ac59c3baccd6f10353e9ab651275aadb4ed0c4 GIT binary patch literal 3353 zcmd5}MlXLQ8e$1JZA5(SSt^2-vZ&kgz zb?es4jF~*%QQl1sz;QzKxM=__vNY@%vAJ>7uS{%u#(Xp*Qh3v36N~Bfv(M&ympai} zamn_k_|5#}$-5sch!|=-`RS_5-rYrIdrkE0bpZ41{X<H)!eLnWC%>mf|!}>1?s$z>L ztrI+#A3>R{JF=~8{y>74K|I7pgiPIYs6(Kd-YUL8yw-c-$|3C8-b zaJ>47i;KB!6f4S|sl(c8I!#D*@TbWT;~G&V)j<>vdW4k7? zvs$_+S0P2se)5ObeV86g?HInz?l+@2qy*BxsXCCCk(>vvjVFVUl7$4AdQjKVGKx;4 zYLeOCEu`e7t5Sh#-#;k=#GQZB?GIRdtsBP0QDPSWUoCez)^BTl`t^#NVP_~OD(!h_ z!ke)ud?D8aT59``7B=}8&Sg5NeMgs3uWCg>hkVc|homO$+5%}I<8rhw^{Fs7jzLQl zrY8v_P}xMqmsSNByzxM)MBzwM_=}e1>#4NTSipZL@rOneSoqwVFA8MBXuE-dfMGw? z3oUECj@Jv6?yTE(8nH5Z(K#!_MR1)F!nl})T-&u}bkZZ{tu=?_`ka$#BsJx>`FvZJ zFFIg)Zkx+nZ@OYKwp-%`v+a93IAe_dOOQt9{xiKRg_uVDjvc_`eCx_MptD6C0SvXM zIT6ydR|H>iXUVO1x!x2E&DDj#@iuj`FL2rz?@J>_r@bxGue3L4=r**s9dJb~T+BD@ zvD}Bx6n4nLuxDf0>do9 zB0Uml+rC;t#VoNb8xO2#i=PdgY>Q9y1)1|GT%5Q{XZup5hi%)$={LTq`n?zD58}u$Jh~{hG<#v>ib=YbN^y7nZ*P8vnu2AY?d3+Uj@O@kS z7_tbCZ{s;K7mKQ+X?U%%-Llunb%%w$5)*5fVY}R&%ErQKUw$z8)m+iJ#)bQbwZB{= zQyE{YaVW&`y+kr%!zw#uMX^;;tkzhTizkLQSD&||4RKua>1pxu-uwver*LMXwRJOule|Rd`}6-IZB@ zroxW?LDcBcJ9m&o2Mw)!dbQ*3bvEf7d@x4q#i^b6xxsV*iXZnN!ZUfxQmO}v@7-=0 z9xpTbuT_^(GO-0RQA$*6F>4unX^8&RePhz<~cJ#*QKLEh|x@+Ic?4mAiRD)fiS5+vnqNJ6`+^JrOu65>|FEY18&yiIrki5 zsnxLS8_3kxE28x-fNvmMvInJI)dRPA=Js?5WWRvR6ndBC(L}SQkstgrU>ePbF}kv= z|5=_N(U{`W4^%SHf%LOiuAuhqaZ^c&`9#f7GGRT+4je$xu`L&w_#TfATlYkO+n}U9tmT4?BGCWgpr$(onuXc^@Wu z$$z;lPr124xr}!3atOa5W4XHOplIV{er~h0rF2&(wPR>vkm=b>uH3HXbixZf`OY0M z>O)QUw8WnrUWX@HQbuq#J(?7NkWm71NR?>&ZBi-dt2B4Nm2@pr{Q7b??|4#rbr^PaZH%F zX@HfaK^zS#$CfKJ_;w_PqZ|$JpeCJ$Tx zEo#k{ftuc00Z?OG#Y8{_wN}tA6TsYlS2Qv59!)3*V}*oleqoH2)p$qLzg`W~RKvzC q8cX9tQ+6;-@K@Kr<`1EGsUUOBc=B}9