From 55695c2d1caa50fbbbbb995f4abd950673798c4e Mon Sep 17 00:00:00 2001 From: saopig1 <4x7sw862st@gmail.com> Date: Sun, 9 Aug 2026 15:06:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E7=BB=99=20WebUI=20=E5=8A=A0?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=9B=BE=E6=A0=87=E4=B8=8E=20Web=20App=20Man?= =?UTF-8?q?ifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 收藏机器人控制页时浏览器只显示空白页图标,移动端加到主屏幕也没有图标。 新增 web/public/:一个蓝底白色八分音符(配色取自 --color-primary #335eea) 的 favicon.svg,以及 16/32/48 三尺寸的 favicon.ico、180px 的 apple-touch-icon、 192/512 的 PNG 和一张 maskable 图标,配 site.webmanifest 供 Android 添加到 主屏幕使用。iOS 会自己裁圆角,所以 apple-touch-icon 是满幅方形。 放在 web/public/ 是因为 Vite 会原样复制到 dist 根目录,而 Express 已经在 serve web/dist(src/index.ts STATIC_DIR),静态资源又不在 /api 鉴权范围内, 所以登录页也能显示,无需改动服务端。同时补上真实的 /favicon.ico —— 没有它 时 SPA 兜底路由会对 /favicon.ico 返回 index.html 和 200,浏览器只会静默地 继续用空白图标。 theme-color 取深色主题的 --bg-primary(#222222):前端默认深色且不跟随系统 配色(stores/player.ts)。 Closes #142 Co-Authored-By: Claude Opus 5 (1M context) --- web/index.html | 16 ++++++++++++++++ web/public/apple-touch-icon.png | Bin 0 -> 1420 bytes web/public/favicon.ico | Bin 0 -> 1262 bytes web/public/favicon.svg | 10 ++++++++++ web/public/icon-192.png | Bin 0 -> 2051 bytes web/public/icon-512.png | Bin 0 -> 6186 bytes web/public/icon-maskable-512.png | Bin 0 -> 3913 bytes web/public/site.webmanifest | 26 ++++++++++++++++++++++++++ 8 files changed, 52 insertions(+) create mode 100644 web/public/apple-touch-icon.png create mode 100644 web/public/favicon.ico create mode 100644 web/public/favicon.svg create mode 100644 web/public/icon-192.png create mode 100644 web/public/icon-512.png create mode 100644 web/public/icon-maskable-512.png create mode 100644 web/public/site.webmanifest diff --git a/web/index.html b/web/index.html index 139121e..425308f 100644 --- a/web/index.html +++ b/web/index.html @@ -22,6 +22,22 @@ "same-origin" keeps the real Origin on same-origin requests, so CSRF passes. --> TSMusicBot + + + + + + + + diff --git a/web/public/apple-touch-icon.png b/web/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cfab085f2ebb6097a8673fdd206192a7968620 GIT binary patch literal 1420 zcmZXUe>~H99LKlsSXqWVs$ggT;S*j1Y72PwN$=f{TVXc^<7EtTSdE4K=< zZ$CV$8*|rm9>%tZTwL+xi*VUYi)-_1bDD?W+!BvR_vrC_eBSTR${(F#Lz1~u9av*B|&Is1j6{JFU2b`se7bHlA{RRkfExwjpM9;3otex zj%I9m{CG3NH~Uk+xA&JFYbcw(*=zz_ZZ&@?XpK&6@aPNUFT81JlT!%c!7c9U#^O4f zZqD8J0dw@A1#Gzp5V8!Jy2L7m$r4D1WkBK*#uY|Oa5^6h%msw{@h^@Ko+S$?wc>st zgs5%qU6}j|{`LAqyW{*F>AV)wx3^pjFqd#T<0Lb!9|rm!IX-ffB}*pFOe@5iBJ;Gu zJ+s3T3k}a}XT~~YN3&Kj%9Qee;-1n2sWWwaXcQ=W-={oPJm)f!j4aElm)!R6=5%WN zlsj!>$uXjM-MYN*zz(MUuDm}a4H9xpJA?tb_-GNp09|7)$2-E}m&Q9_G77s`DmZAI zMkOr0O&@Tg{(K@+zj7U1G8)-#Tj=@5Xv~iQM+nb~=+z{0x+{JE?o9$qP}G`-<)3as zAM)2F57HvYD|EZH60{>s*12n;hfvBc&NdVqKcRGuLg6&qyliq)Y@8Rj;rrIq*b zvMj^5h1_C-I;VU3)y9`V|O8m?HdA`RA?xxi%p571+0q!CUd3OZh3FhP}pBkKa2ZNn=a{(73Z zoxhj*2HRNP!ha&^54+xF)bq{{4X5++!lv|{shLB>;Q4BVY$zCsNw~;!~UPz)h^;YNllo0CMP-=2zm9rnfCN^~(Gun$Pn)1=rWm|&w zKjK$2JIC!6v*Hyeqwf4`0rR9nJC<7O6`YR<1;lM#$Ic8ZNSduskhGZ_DlV2x@a`Qh z3HmM0E7-F_6h2fvQSNk6X6KVF^veB-@n~B0FgduQd(Vs7o@7s0l2#Vv#4>T$J+M-R zV8oSG-VseFFA3T8sv|H7OM0q2729NZ{FQlDC`OzSQL{P}R&LbTQBPEs&kAndtBYrm zM%v^>?u`k&46BprLiaT39HsG@=WE*8ak_JX4cLm8dHii%lV;fwJ@B-H3hldW%Dmy@ zQOg>s$~|vB2VnKkGvZCt*fA1jR1tNqw-&{kKLpN7OUfe<-BZ~Iwas>B;2gyn<&(BfhpFy*)5qF10f*DB( z#DxRLAq4xv>l9N@QzuRwyOb%o4TTRSLG9;(X{88XrtSP1C6QzHUnRsSeizy2oAidc zT|qN%R8FXmhu2qAIW4xWV<@B(9HD*Nkn5eTPr898Fpwkb310@$EzT#_EoGV|yqsx3 e$QP+L;F)80tncA7mqJ6zB7DF1rwF}IU-}PRMW%cJ literal 0 HcmV?d00001 diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b057b4bd3d81a0c7de9f1a970482c611b8c1336a GIT binary patch literal 1262 zcmZQzU}Rus5D;Jh(h3aU7#JALfLK8R!k@#)z@P)f1_ltm8WRJ<2_Wta@N?(olHvj? z<@NM%2?EkU6Bqz$ED)N)0D#QG} z|C(sfjp$C*kT-)of*^t}DlkCiKKGV$DK0EPm~;~nAeGZPH0*ltd2IQ!{;$uZ6o2mjSE z$b68Kk-bpy)81i6W1|~q-;0)$4%yym>;C`RpLk7u&Zm%4hm^C{8&csxV^Hwym;Nj3 z1KVHd-q@6Cy}wcS0Q-t}4O_N-|L@6IQhZ?f`v3pl+y7>kd9Pr~C%HcJHA8?+vyS$> z4}vnPH?CZ|!l*E7!mU8|9v$`uE~S7)El*hj4lU_scDTtK^6TPWnFdRSC&{x!T^2n0 zcJsA;!C{A-8TpQU4Xnm?3|i|>7BTEgXtitz*vMnVJYSaQM~xrHfv)HP!5-cQFRuwU zk$egw>lY-nO7eOAJz=VJ!f`>2!-=9jd&xkwgs%L+9!@*$vX1D zw?!fTo6b)jKHiA6?r+s@FUXj}SFyP!!CH;^o~g9R+{=w`<}ouQaWu*Y*9V>>5I4Xy z%U}SGn{cL|?ZCKs3yGVzQ5(IEI0)SJ-|5fshW`h%Q`GD!No&`(PMun?Evg$xhjK-) zed;CMEhA-PDJmKsx8vy76VK9$4QFynM(|B~^YPxB*(ZIx?c zOfIpuc?9~Z-&~P=AvDEp^?~D7CyUx1yk*$7gKLkV(IcaqPntNM)IT{A@>x6i&{;FL z7adoWd_7eSrfJQOmn>x7y7hm`HvZ3#rhnS=i0RjZlC*Q{l}a*}1P(O;4ID$nfCHx4Skz`_EWilVq&e%_;22u)5{yA(=HY zD(R1#WEo$`FDQ_A>`Bm@eZGs~lG3Hc{5sW4rO)_T*qE3b8y&1!K0LCrs@9xW9;{o< zwB!Bi$$IPWpLz0cvO41wPO&*NqE76UW7;Rmlo#AIiLt6}`e_b_$2qG48NQmT?RZyJ zWw|+kcO%24Uf~1s?K9?zU+O&Q)ManPctYjMt2GQN5|2V$bC0~9A*~z>2l~s=c_fkObct*@$+mFnZsy#D@mK2Fa8uO$ljFS&&l+0CLO< + + + + + + + + + diff --git a/web/public/icon-192.png b/web/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..deffd54f6a8a1a7999b260fc27386b1036034b3d GIT binary patch literal 2051 zcmbVN2UC+-7ruFUfj1z_8>9+ZLX%=4;!s2+p@SG_4pV&Y1@Jb0<-5JF?8 zT;$}bW_Y0^u(LCfvoQ}P)Vm|iY{F%Alys#veM9}Bg=b@fl@Euv8~62$zoCD)E9%{_ z?{F?FUE{01`AdI#mL%S1Tzq5TgCENNmM}hgly|h{IgR)`zea@Lf|6dGDi2|BlhAmd z`RJHTN93H*8d@5h#>uL?nAhF-GS6!!t6OB2YncQ`R(M4uQaw4lQZ=dn| z%UU#|=4Q*FJuRa9jmf4O9g6GP9(}4--n>mIAWD9Pr~w`NcD!0x_E_eSnF~xIwK=z~ zJP%Fu`L$_E#v5YmaI>n>PL@snyp1>jP`2t z+O3NRK3`5@Wd(Nr1a)pZ7cP8}z&1B@RK8G`m3cC8pA|EhA-v^KrA(aZske}37af_} zWb2-@4Wf!6GNCiq{8vFh#M3I>WvjU<13&`QJpsC{)%LT~BU>gVgDd_^i}U+ntkL8n zWnok@nm@73V=j&qRf?#9{C1&eG3c*zbGPT`|D+Vk#5`vK#wCgU{H^)fslh_u+>%5h zjvp;p{x){5=e-P$A#Pr}=3)k6qUM$feKj24MPT3iFYXmEo87qvk#2z8(v$=c&h$4G zh(ztm{|&)_N90C50OhnTNSVbNt6(aSgGfLIhhi*%pl8E|-fHjXTmcFPvg7PLSTd-e6@Fee6yY;EMkJ$DxXpD@D2KlL;!q zgzd&fgPK;&n`z0lr!v>IKw1d`OH1$MpdFgCzJ6YYZ1su|q`2W83UIG}w(Ba(R;lxx6ws3-{za3X z+|7qu58fQj1M^Er8?&+;0|o;#mVJd!EpdkTB|{@$6dRzhjBNqit7R`p#AVefWj3cw zv0*chXq?|hSHPz1#`PB%C4m&VbJ9xkRE*PWyRVA`sl3^WZz_?*NMa4J(H}lRGS&EE zlGtYYi@32cT8~=FeP?Cl7#Um~VBO@1pcTfgcR*n;F2O>CzX}Wp|IO(%`=u+_Z9@rI zrT1_!P2|l&+9K%~VxAbQ#us-?`mhJ<0KH1j3D1~WPx2VKJ22vfA)fos%GR!B_3PM~ z#|7hscRHr_Ml2cyj~7P$R_y3p7nz@{!C!cKot9kU`?%r*{7^2#sy}!z83-=WY--F` zO3_(_EY^%FvFVNFXT?-b7dQ$HsGMFfmUZ-Gzl+?G*6%0Gz8m<*p#0sp4nH?;|GNP* zC(dSf1sA%IukIImf;3_={q!dSc9qAH)zR?_F(WVvK$4OMOKuJFd(Id&yTSjxP`q7*9Y4hRy z1(+O1dGz9s31#gjc)2hq0MwV=CU+x_dpJLE{{)xrj-2=z(eZNUJ=82wZ zyWKDAC`o12S1mFP^#W#w^I~Q$EX>C3)5#MxRn`3cayx%TxvnJ=Wcj)?rREMiT)dpC I9U1I@0F5?tkpKVy literal 0 HcmV?d00001 diff --git a/web/public/icon-512.png b/web/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4599a1b94d1bfdb48802b85832ce53a634e871 GIT binary patch literal 6186 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 literal 0 HcmV?d00001 diff --git a/web/public/icon-maskable-512.png b/web/public/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..6961a09b249d7133cf4da57283f7582c7986ce64 GIT binary patch literal 3913 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 Sgc=n9d{+1^&;NVa-v0udZC^3~ literal 0 HcmV?d00001 diff --git a/web/public/site.webmanifest b/web/public/site.webmanifest new file mode 100644 index 0000000..28e1a78 --- /dev/null +++ b/web/public/site.webmanifest @@ -0,0 +1,26 @@ +{ + "name": "TSMusicBot", + "short_name": "TSMusicBot", + "start_url": "/", + "display": "standalone", + "background_color": "#222222", + "theme_color": "#222222", + "icons": [ + { + "src": "/icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +}