From 5fed6850c3bed1af3fcdfecfbea53d09f496cfa1 Mon Sep 17 00:00:00 2001 From: Ammar Date: Thu, 20 Aug 2026 11:36:37 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20fix:=20align=20Shux=20logos=20wi?= =?UTF-8?q?th=20prior=20Mux=20geometry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Align every Shux mark and wordmark with the prior Mux logo's outlined Geist geometry, cursor scale, and spacing. Generate the duplicated SVG, inline, raster, favicon, tray, and extension assets from one source. Also format the rename callout added on main so the repository's formatting gate remains green. --- _Generated with `mux` • Model: `openai:gpt-5.6-sol` • Thinking: `xhigh` • Cost: `$439.72`_ --- README.md | 5 +- docs/favicon.svg | 7 +- docs/img/black-shux.svg | 7 +- docs/img/logo-black.svg | 7 +- docs/img/logo-white.svg | 7 +- docs/img/logo.webp | Bin 3128 -> 2556 bytes docs/img/white-shux.svg | 7 +- index.html | 9 ++- public/apple-touch-icon.png | Bin 2229 -> 2024 bytes public/favicon-dark.ico | Bin 2766 -> 2372 bytes public/favicon.ico | Bin 2911 -> 2337 bytes public/icon-192.png | Bin 2548 -> 2244 bytes public/icon-512.png | Bin 10203 -> 9462 bytes public/icon.png | Bin 10203 -> 9462 bytes public/tray-icon-black.png | Bin 379 -> 335 bytes public/tray-icon-black@2x.png | Bin 627 -> 573 bytes public/tray-icon-black@3x.png | Bin 876 -> 817 bytes public/tray-icon-white.png | Bin 382 -> 339 bytes public/tray-icon-white@2x.png | Bin 632 -> 584 bytes public/tray-icon-white@3x.png | Bin 880 -> 835 bytes scripts/generate-icons.ts | 73 +++++++++++++++--- scripts/logoAssets.ts | 63 +++++++++++++++ src/browser/assets/icons/shux.svg | 7 +- src/browser/assets/logos/shux-logo-dark.svg | 7 +- src/browser/assets/logos/shux-logo-light.svg | 7 +- .../ProjectSidebar/ProjectSidebar.tsx | 2 +- static/splash.html | 7 +- vscode/icon.png | Bin 1308 -> 1191 bytes 28 files changed, 175 insertions(+), 40 deletions(-) create mode 100644 scripts/logoAssets.ts diff --git a/README.md b/README.md index ac1d6ba8ea..af87dced4d 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,12 @@ [![Discord](https://img.shields.io/discord/1446553342699507907?logo=discord&label=Discord)](https://cdr.co/mux-discord) [![X (formerly Twitter)](https://img.shields.io/badge/Follow-%40codermux-black?logo=x)](https://x.com/codermux) - > [!IMPORTANT] > This project was renamed from Mux to Shux after Mux.com raised a trademark concern. “Mux” is a common technical abbreviation of “multiplexer” and we do not expect confusion between the projects, but chose to rename ours rather than spend more time on the dispute. “Shux” captures our reaction to the process and bears no other significance. -> -Shux is a desktop & browser application for parallel agentic development. It enables developers to plan and execute tasks with multiple AI agents on local or remote compute. +> +> Shux is a desktop & browser application for parallel agentic development. It enables developers to plan and execute tasks with multiple AI agents on local or remote compute.

Shux product demo

diff --git a/docs/favicon.svg b/docs/favicon.svg index 929ca140b4..90094de8ab 100644 --- a/docs/favicon.svg +++ b/docs/favicon.svg @@ -10,6 +10,9 @@ } } - - + + + + + diff --git a/docs/img/black-shux.svg b/docs/img/black-shux.svg index 093a4619ab..8b4f74fafa 100644 --- a/docs/img/black-shux.svg +++ b/docs/img/black-shux.svg @@ -1,4 +1,5 @@ - - shux - + + + + diff --git a/docs/img/logo-black.svg b/docs/img/logo-black.svg index 9e3e8c7e41..887b5a21df 100644 --- a/docs/img/logo-black.svg +++ b/docs/img/logo-black.svg @@ -1,4 +1,7 @@ - - + + + + + diff --git a/docs/img/logo-white.svg b/docs/img/logo-white.svg index 5a5f0386dd..58aee7d8b5 100644 --- a/docs/img/logo-white.svg +++ b/docs/img/logo-white.svg @@ -1,4 +1,7 @@ - - + + + + + diff --git a/docs/img/logo.webp b/docs/img/logo.webp index 92bf2a8d7640da1019412ee527853fe466810914..79fcb4a711961fa8fa7ef5bbdc78ad27f7351fc3 100644 GIT binary patch delta 2066 zcma)y`9ISS1HeBsjFH)w62c@`*qB%ksBlK;Nkh_(0BWG0egk05DTjhu$Yzr9) z$q~vi8v0uKI&#z|HGH4v`3Iio^?tv9dovCSWC)&4j*dUX0l?S6&cnyU6axhSK>FY9 zf&Qbds|RWn0sx?TQJ^4<&Ynq*zc>-)HQn;b>SIe}t5f83OGOF0rSL;bvaxj>>C*6* z>Fp-CA&9&~`~M*9&@BCzg9ULp~6PG_t1JIp!<+i@;vtlv~#)9SQZilL7FaH-Bp%p<}D<(e>T2}{-eJ%&c-WB0EG z(cUMJTE71&L-c`-lt!aN?~a;`FzD1v1!NJuyp6M|H6pQr52v(fDgq~3O5_16xG+TfRY9~}z_)UR zT{o}Yu(iwtZVmq=ISu0SdUkD^%LFFTt4favTT~6f3;e~^AIcbXkdQfZ_0c*}j^Q9x zQPtLiO05lZ5=$tYRqFN;N<2W^NipH&B_}5zUM1Y z#Hy5y>4v>O#%Id-DX-gE{3zq{pzk$G*lmFQJ`>eP;eXAo4I z{A*rLQ}2LzbM921>X(|-@q!F9>ch&HFzT1Fcka-!Dzn0|Nkq2yKI5-B)CmcLe|f7I ze|3rI0MJgy&c-V@DT_-llCOFWrf0}%Jc0OXwVPBix0;qD>iH`5?Wu=ScY_yNc;7=E zC08fvLLMv~FutBMZUxF_bFA)I5ePOq? zu#y-ab{vOc5!jW5aFDL>yDZyNy=6CX$nwc&&rwm<%4JhbPk-cJr4)yF!rtm8+txa? zzFzXGq3D)%9Ze-jv$gD8%K3x2zhS)^6K4js-;c%2SbdtI7pasaaEz!7e*TMP&3Wm{ z6{BiKosL(;&j!eVVIyPq@b3_;)U2YY+*Zn-!BE;Q+HDwon2+j~^Z48`XDsUx=K!w~qTwKwoNGmiGY?qp*#A@WLU zBBBn;6optCP!XA-!%ya zbQ8^K_{$hZj{VHjaD%^Yye?Qb(YvYW5!=_3toNE3c0ra7+OBXj=TD*P#p#UZ;3~OS z$ng;A2~1C_%_E;eJV8_W-hv|i>8*VlN;`Vv&R=4ey`mP*R+y67Hya9w1OPGYUjkgmh$GhUNu`-3tPk@#Oj4ORVoN7HV@iAzk7&t*3+z3!xC7^_ z?P^aBvacXhsS@Z4eT)4{K1?a(Vu0nM=NP% zZy&A=U0OBp|@2dmV4lUEY_fQWhwG_L%ZDorP#k6t&!c4 z7jyR>F-amuI$73P|AX6-Or?pbog}@Yui1Xo7aaf#H!UjfRr0Su2b_$Xe26(uwe)$@ zX-0?}ilXM>)%Z1cmr+u&jm2(tB`Ay9yAr?bVD2Gg&sEDmh$89`7h#q@MWCHI5U0x9 z&eMD50(5`PklFK6-Qgg1*m+Vd(Da|FseyYP!~P)~p|a~4^lBX~vBP+Cg&^|`E)9d6 zSn60-%VSD~vfSZ_WC{#vt>Uv%)eZlH&MZ^IRt zA;M-FD=oCX=0OCa&ag}U`cPTY?Eb0LcaMJ|RwLf>gt?H94?OdYkigaADM~jBWZ)V^ zk`RKig8il<067-Q%&Z(xvGIMDdFXbU4EbB=-zilhZGhRD^B2DhbE0CLqs4?iDhmeS zIL@yPXM}V?VULe&)E|*X#{kA_F02#Bqz{4xuR9b!?dsb24uYr;Ban@Yr1ZvWFsilh zlDDs7GLR1(k>4H79WpTn#}-58KK*LyObH5tF4kBAeMS~N2KRf}qG`GPFjheLXC-jG z(n^Jba7Y@%@AtQDtl06j07eicUqa=!MAg5D`Z=kA}5PFWOB3 zqdhsP!ougzzYFYmFNx>jxSfsOj!yo{(xcliPB-h2#)WjFq?}5$3A=(PM~nJN*6|n& XO8W9%#Q#R@zssI)#EaulVWEEj1a<)y delta 2642 zcmV-Y3a$106Sx?EQb|TeFbn_yS4BclR!}%t3IG5A5C8xG{{aC10RTZvP)H6600057 z$N&HOrqL%!n;Py8Gc0%x>x#{hGVOdh!QGC9d103Mf`@sgxa)iiUYs)Nd@a+urfKr| zBRPZ5@B90{&k_+6Kym-a{U7&#-2ZX^$NeAof876Z|Hu7*|9@jAHt#&(s;oOE&UQcg zq|fK`y|BjUJL|DD$K`j| z>6P=}I2~eT)=V~s%aXtmrz(mf<*%M~ybv@0d zS96RhX6RYmVTNA4?QDuQM#~(=-i2Q>_WJ+I*y~q+$k^*!$k^*!$k^-pJ7ceT9%C={ z0AtU#ox%4ggKu;gd>wyh>?Iyz@IA!f>m3B2{RD&WK?Yy@3iPdE@MT26XF0;)yPm;k zIgGyR8GT34H-ypm4*FUJ(f0tOFAseK7=6#8&zg_EbVlDI`0YnuqdN56#OPZLzXRw? ztTv*5y5GLe`CyZOsmJ44=r;N`=FiDST6Xx2g;U1%Z(}1QPBw_h7ycPnv?oX|F@W&? z?2%0fm%F4ZUGvB0gw1bc%bA!)=(N`fR`TeD1kf%lcIm^738I%tRrhRD0_kl+of<$e zogq?qVItx55s50UC#0?vD8C;;^=)~6>q1z6T`x}MU;^tlX~NeKTHlrCd4lUF!hBN? zFMEZ#obdXwEc*$t@5?e0F}p=MX+g|(QSK+iZWN^_Wc-qRMUY)4$*Y)oT#|X1xmS{_ zF*8+?4w$)7k~GW=5v0z7na+X~6J{FNuC35g3n4x`wxIyC+BtHo=;|1XfnCU6W_YELpEfs`UL5AL!Br*~* z3nk%_UWgeg3Kw()jJ;eG{3ugyEW*7PNGdhWXvLV4)M@aN%SdRbh`D?(_GT+ICAGyMT_lW5HR z)#I1iz+wAVIA$(f<7$iyx<@`{4((kuJP8)fs*NDJa<@C(4hdRe6w#p^Z&ourbgVUy z=t%CXQ~M`EfnGG2m^B9$ySm$8aB;|hVpasaE{6>Pw9=?z26O$hGVHpqMX8a0#SG^9 zXJyzm9^G$vF@w4OSs8Xsm->Se#HsR4CeZ0W!Uvu z`*QV&8O-(1%CKuOnyx4@D*|4Z!>YY3+Z85edBE#(Xf0~D7uA{oOO^R*ghi zVfA9>f+fSP+KA>W88a7nGjtIxRy1ZlF~6-IviOvZIs9%`f(9bno9f2QKRnb<|4_nO zm17RA9;|)H_M*};bB-%f^N{6v#bf?{dWzm5dPwz{f1Y1o?~toT^_UBP@2jVEXz(w} z$NZZ+N$1c-r`3=7n>(x;hf-cL0n9n+8i&YLWdb4d_`GpB!E}do7HF#*iS9r}hSBi9UYwcDz1DCwap6TrNqrM@9*>yMZKE=bon zME&=g01mlz4q39!s2{U`KUw1tS+nxgkN3CGIYjmedCJFmowW{;?dGGZ$AuYshlsA) z6;V5`yju4VUF<1RIu72TeTeE$JFapZx=sHOk;C(wx^dmjI*2Iw)~!KR}w zwuaP-?q?5L}YWi-wi1i z2a>f?bhBGu%2O(SO*=)m%JSw!l!+(msOW}QWN$50qndu2D%#p(-139f%EMnZ)K@VR z94>F5Qfb()xnd?bT;4#Hvha->EM|hkAZR3R@($Hh!=xV(WX1>k$NUChKjX_&fe^F)3cLY9dY;_x7> z5Ow`RoJDA%#ve*^7%r6brZC}_a3R||S@R+6!p8869Qm{}poG|U{9_)IBuzavEcAOA zY4$)Vi@gFNPG2PpJ_jDHrW|0|$6%xVtWUx${l&Owe&gbk5thHm0*TcA6PBNjurcl? zFf?(0W-WNIE`k-$MfiKb@ zed`H);oj(bg}_(Z8hz6Ud`E5I3k@LfEhO-N9Z3XVwS&MnnZV~K@Eu73-_Pv`dsXR# zy}BC+dy#PjzPky09s=J3guTdY!d_?sVXu4)VK2WgVK1jOVb7mR(5o6x=O(T`?@7>$ zEK4KkeSZa=yO>(jn4tIhm2^(ysWLl>ptrgmo$FxQHuyd0;^xevE+ivpa&TK-0L! - shux - + + + + diff --git a/index.html b/index.html index fe36a4b057..aaf7151ab5 100644 --- a/index.html +++ b/index.html @@ -215,10 +215,11 @@
- +

Loading Shux

diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index 351f330a25c890a735b1b8694b51e566f598a5cd..d982c0a23f8177a1972e98e2aca4cecd20334636 100644 GIT binary patch literal 2024 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 O0DD`sO^ua*%6|YC!}13J diff --git a/public/favicon-dark.ico b/public/favicon-dark.ico index d887f7e61a12f45d7ae1b55e77c6501c720a979b..ffd11ab43c5a3193dd399e551641c6779eaae522 100644 GIT binary patch literal 2372 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 literal 2766 zcmbtWhgTC>AAOTRXrT$AB@{&w0qJOvu*3$T_o9e|59tU&lnzd$Eb4+NAgmiHtMryd z5md?u3a*7BAbcngK@xuq=6byGDeRcn?OFcd3?71(`$&&3`N{BGn;4&5p>h^7TAT@3;L9Bn#xOO5e4J36AO3lqYtoa^r-vF(gLRSFbm!+?j$zl@;Xx zkt%TqIo5QKVp*C^Hh!2%JZ1V;^lTP1V}IlRm4pwa0k8(7W4BtRt4@_?P4y@i*{nk5 zqfe5~tC@UelN9O=oNGShB|4|IJr=uFjb?nFtg@^deZo)N6=6T!n01J+=$jO(=DQE0 zxxUP+_!ImdWbh;gWAQMb($)_8Z1)3hw~Y4(s?Z4 zPxHWAALC#^HK96Ai{@EY`86$^}v3lnA6tfy@|FL*eP{ywxznU8vecC@9Ipz%zY{=vq8_z<;k@a>`eIABesTlYbRk^<14H-9Ndt>0! zq2HOMUf&6X;g;ZYpxCgvX%F)-4MpRlg`e?qo?h~@Z(TRUf*Mz10}qiv)W94w6}xRE zHSrV=?6Mj}TM`PqLR>4Ap8Avz>4E!N31ju6^$GG&N4Evfjit?cR9X~dfgXoe->LPb zF5SffKh$+b>TewacUVpL?%D+cN_>MY@vq$-e82qiDtwWjEW^b#|M;h>k8|p~Ff>_4 zoXJhoT8|?1SDQZ-1b)dn!W#SBzlZxhfD{DR%~)Z}x>e@UoCn#k;pjNw@#AuHR}SlM zrYaf*Jbl;=(vk$TE#sQyesc}~$yDyBWsI?5!y^NJfZ_<83gzb92t!@QXtIA-DBLIe z$OBMtkosOD0fT`_9PE&2;e%11^1TNsI6^K~akno$>;h?}pj^@DwZVWdptN8tIxYr3 z%e}PI$~wns8y--5%Dr_WCuqjE3{t51G;CB?aIXRb>#BLYjr|y};oKMgu#Yo2s9zu= zx!$d-%lqeAX(Efk%d2y#VR-QFMB?WfWVEj55ntm_R~(u=EvYHJMp^`KwTs50rGQ-( zEREfp9QS)tpnVnjx2RM)pnLmBa=(lww*Tj zSCEi~_L*Gjj(1s{3HnQuwi}3#*iuC`8(O!S?m#ROL-oJ1!Y*@0^@ zKcZu5qIa03$+BUIP`%l+=rk+|EpS3C7_a><1vi!e0$Qhp=yF5H4Q*!x^XAS3o O3QSL0ov1uUz4AZ7@3_(c diff --git a/public/favicon.ico b/public/favicon.ico index 5710a4d9ed251968dc32a5a15f5e2b3ca0f31769..8c3d1b321d96a615a0714d1b465d0cab003fd622 100644 GIT binary patch literal 2337 zcmcIm2Uio@79J1{f&xmp7ODh7C_$7WA|MK4j6kG^7QIr%P=X>DASeP>d@o$|5g;@b zyrD=$Fq8l)!2~G^Mv5UwN8+W|P+lhfhC6G`I5AA5bTk3!m006s@ zXKkGUKuq{321xD@EVjUF9{v1Eh?nSa~ubYG3=VF^(?`01t`sU=3^vP@LzHLS{ zqto|}P%i|cH7i(b4U-l#(-N`Qk;lgC2)|x0TXk%kdcV?y32GB;)eB1M5j%xQ{)Ou> z8lp|dw5Bl!`(n3-PvSaIv}XbKmm{*&tg8rk(zv$yA(l5OPMtORJYJVYN46t~RwgVY z(j69iiBtr|eD2Cu0Af1<1wcC3jr0_@>PbSeFAs8*5>5}~jMPAR=kaGqe`xhyA5e1# z{DZav#V?ATfU-13tCvlX|NNSXTxo|s%_vH4`7}9C5Wfp}+B)ep+zaQkmU#qHiJp_1 z?_OXJ@W4M8iiJNOL0RG&koc?i!y3RLK&gp>M4ZKY$V$b1iH;>D={N8+`q?{Lz2BLB*-S~I5{Dn%d{7e?R|E&&-IP` z5Mpv-hn33D(@G)Dy>5a4>2Qd|Nr^^J#xk!vseoS-e=~Df8w@@8NmXI^gxCCssEH#? z2f!BC#Z^UaS`{q{h$xy7D>wbSRgnqgAe)?ukrbxQCj{9iFHO_zR!T?X*Y87meOLI< zY2;jz%s4bHHD>4mAGrZzts+%TPV*?4{y2!(O#fc1F0g2)d7RqPxqLap;QZVc zEqWndvMw+s0X&fgA*%WI6{#hR!P266#<(u|dB<;$Xq)ES$16?|vCfgGIp3pk4tu~j z(U|9d_8AY~_=$`w_%pa3$7X=|G^lS@iZU0dqdyb{8*ku(L&7trlyE+HMWKTnrpw<3 z#2gS;7r*%NO3o1B{AhwTV~BpIOIca8?aH@v+q)~xcE@ZE&A`{xe|tV$!>BCObNmP4 zE(SdTNJ@Vh4hM%QIMW;bcKeHk`{(uFP=81@?PmkyxX6Q)Dha5D6c%=L=g zI%xm~m`KZX0rFk>8gstM>iTovJ*9G^QUB60;|e~br- zxR4jqf7QFSCMmVb*bxN&iL6)Iz!MHat?$<_YvMw{uOwv7H zrg*=?r*t5M<`rzmS^O!Ip%$G1X|@cpZ~!Vd{kO;ZkUU`KnyhN}flaUFJ^Dr53t=cq z3M^3)2o&^11Y<&HdZ7(x=gL*@G*-4`N(=3M6(|gi;IlLN;J6$>Q~(&_o#m@{mNQPD zs*$=Cl6G`iLe2@eR!Dz4oT?(x_|jzoDI`>9seJ1g#Y=4F5qu4#q0*$p4|`Z|k#bEW z8lL#{3H6O%mcLu7273P07o>J+^)0xJiHYz9Yh`xhPRlen~{(&mMY;?aaC3<Nyt|}m{azl%PXfDJKz@2_y`-??Rn1UPu)D6~DR2a?pJ^DQR#xAb+23B$y&UMH zttG^r@^d`HjKlX>HE3M4^pw#TnKTu*<%MLCPLw+HtbHnYyvzbMu(!n&*D`+DesMEc z?AJzjaZ~wc=^|~Ys=@O?xmBNX9ggECvlC8|HJMw^oB^!w6HT-JgmM(VHG6I0GrYx7 zByfHKoP?03eh%Cn2!jc6G6(A|bsFvTu!k+Gen2wxf;euXIhNX(~NVo27^hGmwwK zDcqdj>dhW$LAL7=I~enujg9T4`W{3xkGnbOc8TCLsD+tO)vbsP(U(@I$D!t0tl3f5 n{4v~zupI~fh2H?+BXm=GHhr>N^6P>*7$0fpXj^vb;_d$f!MWUh literal 2911 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 diff --git a/public/icon-192.png b/public/icon-192.png index 886d539786caa0037e72294c6849b0cb25db451c..9450c96cbcfc20d017d5832d22985ab15c615e5c 100644 GIT binary patch literal 2244 zcmeH}=~q+N8pd~$BME3E47UOj34>s36%Z-NASuQRK|}^!4v0i5MGS%vnT$XpPy@F_ z5ef=2s1@S?D9RuK0xbezC>O<))BrLxpiD*}pai-5aQ}+C*8OnK`S3jZ_rA}5_ged; zd3(7LH4HQW07SYw%@=+f(TAW0-@dXiJp8Dib3e)g05^_4m`b)U697UCo%a2~xSLZ2 z`vg~*x-CWvOp|Ke8&@$p*`8OoM0I%HPVxP9G)En`x%zmz`YkgZ55nKtT2TcxG;wh8 zDM~djW$al)51nl^GdQrsb{Sh?Gozy%2I?<#M>x*}m(HK1?`Sa)B>qVe;`EpdEFh4u zPjCR^%HUI}91_nFkSK^;dmTdH#;w6(QyQI;u^3m%M*zj^G(9Mq=%C`)sQ{Zo?Zsl? z%Jd-)Febe&MlDgNDO3W@1*Mc2t3h~=mKwB&rXkQihv2wJaCyVr#^?q$DY@|oP6y@k z$Y>WV1eT-9Fpy=H%Yc;Ttt7M;eO)MK;$gW)v)|A{H&D^@YXpk7zal`811E!iiQrdM?>3gftC_O12nWIN(tp*ApCp^x<|)M zxX|w0M5RbLC2^E<1?Atz;H@N$2+9pwO=pOfBgF#9>fEdcDGCh)QsU8E)X~*MX=oOj z`C<~TiKk^+7y7CstSab5`XrNT^5~MJ>a4#e*`e33#8dI;=+nB>JtpPHDjzI{sNz44 ziZ|^z#q+N`^ZM5!n}`9YF~b9ePT~d$Lfsp-_+eTLeZK>b8{pvW9E_hp$KSQppR zk!u-SexjZLmThzTx$S*F>)WV44E=8YFcj&!wdb-7nn#Pe)>E*Q4T}k%=M?w-?#W~$ z{leH2j~N(Dv4?*QzT%i*E*Y;WyY@pz&Nk6}GMS1{r5|G7y}Vna`o&sO9(VuH2Z*EUhLI21Y3V*7rrBZt7*F=S-L;E0k|3fFzewG6yCE!!0_*wCME7onW)7bc9f z5LZ;6Y~uO%4iweyxx60Xd=o4sw*_rIT;{2^02`f_J`G8prSad&yYj`Xt^&tg;QeJ~ zCE5t&ZV&LlDo4dxqWw|P?|a36mIds~v-~3bN&c2#hAr-FyE5Y5uIG|?@#V#2HR8wW zh{0>}$$p_7rnvnG4AnQ*U6jQjJH?&*c+e>w#<(>LQ&KG+9?s;tn2lYFqsb8@b!+U)JQZw~e zB{MRq4?_dl`rv-+FM2Sxa=hn`I#{;cCd3^L8~QD^EV{YuNzzK9WkBt-8p8#sN>wNE zB#ifu;QX{q3I`VD*E&1aoiN#FT^=B;vVY?izXnq*5?450?ZWnL@j3m6mi|bMU2|#; z+)Z)AV;m2(X(23mCq4Ya{pjYpCFRs?BNwL*4oTpW{-1~&+*WPV``&<{N7+#s< zqGOza#FA^!w$POIQNX0*9Um`flz{sMR#If9rN-lkJ4FG50cc_4^JIaX|7d1 zcmDZ$=S)*FJ_}1pA0~i9FDe|pYYTQKIH>n#Y_yZ?oKbz6&5~zW9L7?my994Q-{X^e zv;`3Zb@$(Gjo6p-Ej`apLqPz+W5wY(M(1^FFEX5YY%8Cf<#v8<)e;G841RG0H>ARos0CSA;BRy()TyS=(wLDE$Am@;`X3 eoMV+Xx%iyl9;y6Jy&nFS0Qz1pTA3^3(tiLJ4U3Hc literal 2548 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 diff --git a/public/icon-512.png b/public/icon-512.png index 0c1f7184f6f8bb2ecc2018a31a3c31c71cf66740..37bd8efc0c50751aa77b713e564421cb54919a40 100644 GIT binary patch literal 9462 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 BI+g$c literal 10203 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 diff --git a/public/icon.png b/public/icon.png index 0c1f7184f6f8bb2ecc2018a31a3c31c71cf66740..37bd8efc0c50751aa77b713e564421cb54919a40 100644 GIT binary patch literal 9462 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 BI+g$c literal 10203 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 diff --git a/public/tray-icon-black.png b/public/tray-icon-black.png index 445076da22be12851213adb8217b08ad8c3eb55c..db70be3ecdda56453ca9b0d895d0b7e49e942750 100644 GIT binary patch delta 287 zcmV+)0pR}o0?z`FIe!63L_t(|obA-HD@IWq#_^8`q1Z$rh2=G&$Y6SRlfhy(Dj6*@ zFfjQ8m`sLuGMEf@WiTnTNHS7%>%4V3dG$Kic%M3Td(QLgd(Q87@1;_uAJmI_n`)0jYK4xj@!$wqP7JDgzygJp+YT>Ti&ErKstEdyw(3v<}SX)@&Z zaFag+ij!U93XKG~kQ6NE09F$72xAz=Zn8I%+oJO}!i_RBD0;sgeh+Er3H#{zk0BQt l48ul}2JI^XZrHsC~JvjYX#%TtqT!f%8XDQHK(Sk|}^x3JP7o%9jA-+?f zr@sW%4j#J*$3)!})G*sE!82A8Mqz?4TwxDG4g1tm5P#gQKK8hlFq7Peti*lsquE#k dp{J((<#`B)3}EFc!sCAi+}StfVoWw)bO_r*Nl2M z>%j$lZ!+XJZeeK^1lHqIi(x;)6Ddt#*(g@M(e(#=%My5;Q~Vh(@II$5TZDy03oMBg zeZ>}Z4x7+oJcx|BShT>tNYTLt@AXu?iadphMG72`6s^&i!;x`)MGEvsijGADW`)kP z3)`?EOtu%(i+>cTMT&lf&1^Zkv_{(ny6~on0pD;BXR$MEUL92s$k-HCd$b|%a1Lu# zU?;BO1Bx313%~ zKzEo>*3XZGzMrl58SD^eFcRKhlt4#lkM#=PjyMC2WPep8{A5uA8FwN@r!;0DGVV~3 z0^4)W_?N@SoSjo00{s|MNUMnLSTXwA^Xw* delta 582 zcmV-M0=fOY1oH%tIDY~qNkl-+AanJ2Z^YIP#gp|5n7z26tomFIoei1K`}HZ4}O6VB>r-D z@9rJs1HUo3?}vNu{oZ>AZQ4Xm7jOcY0-mMC}iy^!hmcU?ylh%qr zwuJ|N0`36kq^TXj0cMopmw-+jB(DhnS$c$%Tv7-;#$mDwf#*0(AMoct0zYNaI?KA^ zEqn!T04W^gN`DJW>35(6TyyEI^Z;d_&1esJE4$c>z_GX_Mip~GTV}Yul1_UnN{P!M zO4Qd!kvSZN#06m2f`ljkYZiiT+Y)Av^9ZO|64?OKM8FX6AixA~R$t`OpvEC!Qc*|! z${d%a^Qr8O!q|duN+UI7l)o_&p@K#D695FVeC(d;GaGFT8Nu UOtwExn*aa+07*qoM6N<$f+@oVbN~PV diff --git a/public/tray-icon-black@3x.png b/public/tray-icon-black@3x.png index d8c6725ab42da92a3c092a0af5658f348d5ecd1b..ecbe72aa135ac781ff7d7c072426e85713ec95c9 100644 GIT binary patch delta 773 zcmV+g1N!{z2C)W^IDZ1;Nkln@xqHFbKWErMPp<%Omdkh4@wjz;7Xuh58wW7phFq!R49UKlmqL~QK^jg1t<$aP@Qt%W~Cta zq2DTF&I>`%edWMS=sB*8xg!KYx0C~GJOnL}``Sg|G;jhq3hWgDZr@uEObbEK1?9k2 zU=`65J3(7KFQI8*T^^UvUGzpF)4!F z(R@3C$udBbY|vvu7UUQN)aKC~%PODWa+(bZRZtfdKz)P>yZ|PJEGV~mb`W?JK@#tK z*wBL!l*@FfdTV7*X)8b?*GQ0{|Ls=`<@W9h&8Jc$`6QAFrIIcbiu#`Tq-3Bsf=46cR_nRPMtCjL93N< z8{#f#rpLf44?%~L@`^cHlmk0~6wtpHIpx5&KJ=wyCrJC6W#ws+)#Ntuxxg%7nY2x= z$}L|Tt2_ij?nk`mB}k;Hn-v&4LC8w@QN$!#yMAfd$5xPIMUfXGf*f;zml00> zUD4N$wVwyN zVq8W@DT?aWW)ms4_>Ijc$g+;q(&q$W42cPC#RX&4Qro0=Ra$$ zum0E5{=fEGd#&~V>p&n72n4)f05Ba`1?&aR0+)d-&;Yyu8h?SNl%f)a%mnrT_kpiK zRK%!43FW|c;AN48s1q~@*bRJEAVZy?IlwCg5>yIW3;a+ZK&7C~K$n8#RSH@HbSg+( zrJ&)!2L(y16;!Jr;Yh2X(ZF{F2}fE5ZB>wLq*+i_L9&r%K`jX%^f&MbH~=gKW&k6B z3LKy!p`0u*6@P~rmq1P}kil^#TFQ9`l;HuxECn6G6U-3#Wg%!I9?@zcXeSb?%-QqD1nZ$z;3zN)hdGo$P?Q%&^cA2+wj9nZB+cHb zy+D%k<-#;Stk<|PE(4A!Dg(U+7NL-Nz;gwHa&y%wU@*$a04wCnqoL~h zK#pltG8s4tG#6RY)0i#JGGK>A%uYjA6|e=kW_e_iG;Z|rOt&q6%ScL{@xXG~w$uY{ z{UE8jlz#;ECGBnsZF{DTUTj7uW^dltp1uN&8(A)EzU?u9J0+t)Ld^xOGxc zj)BrW+hLjDeAfl#s7W}?oEMa_9ByVl^Fol}j75Uad=hlRBEk1Q397S5(5$b#5H!W| zh{cr8ofk9#cw?F1Czl0{mFrYVwjt)CO-TzXmw!Ezx#P7!N=6d6o!f0MytHYyn{ zGB7at1DH&PHyKO@yE2%RStJ>$k8WLcI-=XT>;2ZP)AxLT_xn4)?>#rmYSf5hU@;Le_+Q8>O!Uv2e8DI$S0eOdQ?0@4e;4f1RRwA+$jAK3E zzc89&(2B@I3>OCdSi~%*(3@h=gWG5$@Ae+&*u+THkn^LT;N=hDD>}&rL3e#vz!uJ; zkU#R1q>QM8D_o-+87@Tyt0@L+5qXSBjA1X@n@i2$qJ+3xCFFeeJH_uI#xo8uP&wq{ p1@N&NKGQPVLq&dW@$x>x6%|Mi^vxu0_ih5rHrn86a3 z+f+Gi=nk&%B^kA(;bFD62}9EfFpPWIs3j3>WeiU&IP#k+W`8l1sKMc3HCWFar19XQjPr?8pW#cDV&StMh)l#Dtm7*8uHVl!$_5?-(p zJv)k0tcvYq6IjOq&hgel@*0JO`{I<+yj>p_aNH!Ql3UOSPGUhfofcGMLGQT)=*0-; zu!qlB&_i26G)LokIP9jNj_Ga*9J5Uz!f gW@Ghd8q+j<1OKJF@48D^7XSbN07*qoM6N<$g1!%+EdT%j diff --git a/public/tray-icon-white@2x.png b/public/tray-icon-white@2x.png index 7f3984fd85379d5704b11391a4ea78ccacb29270..e8549f635cd66c8512630bb661e705836bb25452 100644 GIT binary patch delta 539 zcmV+$0_6Sp1jq!CIDY~9NklJSKOfWPmUc z%A+oEM^Yxp00T24%#?|dw@kc}l$4R8Oi)rpQX+m@waQ87taI+U_wIcL>tAQ~t#7aY z+Gl^?w~8W@$z(E_Os2EJT$~w&-?-F6Ctx#9;TrDa8J^-U&VOScX0;&DZ*-Va?_tw$ z0pD9p@*B6XsB!_U#iurt{RnTQG65_e!l^gn4|Z22@VH6vXS~4sCUM~q=9Madg^8fA z*o5wy4K2Wf#F~p`3+zb*?QihEo`_e8w=lL$fuo6_Rf+0yFtM($Oo4$!(2<0|^w{dnT1v8}Gfzm0{sMhuiC&=t#LJ%8TT&OmhpRwR<2C`BNEJBgr^ zMFTLHSa+aIfvrtu{LArU4pZyQFdxM`X{t&sD^s8wk47-@!zw!Q47?tJq#rP+bb$b- z;>s`*KEdqbKT7Wd=)NKF4twJFybulSwj}OeT}b dWQvaEFBIDU)Y*>5M2Y|a002ovPDHLkV1lA;0-pc? delta 587 zcmV-R0<`_e1o#AyIDY~vNklsj7& ze&3##|Nl8R%Q|$Z7R}*xDh^+q0CrTc-b)pD(t_~C2w+8po3<2zZFRix4NhT8C~DnJ z2WS@Tj|_hqbFC=($V!}RVuSyW5BW!fns+V2K*U(qsLa}MblwWR zQ4uZptGtkg=l4ebW}v9q>B3eV4^rMnjIa6d3#Wd9ob^Uf15A+esi_^S7~NN{-|O^574# zX@;XXNkoCXh&{rQyiQCPya<8*CjO`%33uoG96yT_IE3x>-g*6PzpqA&zIvY9p+h!3 Ze*huw650a5j-~(r002ovPDHLkV1l|!7>57= diff --git a/public/tray-icon-white@3x.png b/public/tray-icon-white@3x.png index dae2290bdcaf9598b7fff42f68cce008349346b2..5be7a8a8a339148d206e9ba7cd235ec5459533ad 100644 GIT binary patch delta 792 zcmV+z1Lyqk2EzuBIDZ25Nkl+_wW2O|M&Mk zH8)e=_r5*zo!+-eBoswa6h%=KMNt$*Q4~dqKEPU_t%jd;kbk6y0S&+&;0$mH$N+bM z>%e8;EN~E50u1SepzYL_i?)f50(JwBfShBHZlD#|1PqRqAYcG+1o%^-fM0>lu@D4I z0^Woa__o=q-UY%V3HU_K+!hA%+U2SLr2 z12pnH}B*V_n^IgeV-xzz_jH!TM?IS867_1XpCBybEk4D1pC=G|^!16@ML{ZR2$09TXtadFzeHJtn_!(fLPJiIF9P*98Dqu|P1W8iq3I_NH z+>qYUxVQ*1SM#k9g5`j$9MB`Z6(ouE2hIm*j@j~CZnJ@23d&2c0cZ&^ffvAdZv_=J z&-MWiLrCI%sRP{`LHPhv%&S+nU{VkGU+&W1IK`SihZH>C1X$}J$9RwYS#TJu<+ARlm11X?y89DX9x1fFLCfIdTvw-QqVriRPkt*ModLIPU0nclYNVdcZjDMCONy@B*A5~1EqgcZ}vVtVBrB#yD zWwv9{B%&-xlA8&<3^Dlka((Sc3(9+4r-08D4B9D$?${oK`yi;`A0Jz!(-^dRZ<9Y` zO|%N?lb|B97D%7@w0YnGcY*uB1Cf}KRg#jIblKISD2k#eilQirq9}@@C`!T){sDob W!x0;iQhMG10000y9e+FV9d=_+MPq4b8d!$M z@hJ|OEQ8Pla0VX5F3n=Hf^Ztv;}6Yba)NLzzSnFfBMA54FU_ZZL3j{T+Cja7a4U{$ z5A_McIrvSxs8!G=?PE}vobz!+`xw+E=wa<-P?w;XJGGHPU4nic^Fsf@7ubjuxEkl; z%+Pk?B*v7p9e-DZu7Zokkh2N%LYKjkOgTSeVdy$IJ5$iJp%26*f}+8wwcv?yqNSAYFXr54jGNmz5M0H(XBUz#k3 zu{k|mo3|Ws7CzAo;^BvT87jv}_wDJ)(}b?; zXR%BZng}k#OV~SMNna03ac~>fW{hj9kTt+Vcqg-DGA{28xuy>@e{1cW3pyEGjFl;E z`2Yu0&wuLH2%3eok1IH~7Y}zWZmpmZ;lp)!4BJvrI4)0iM$m}JeN~Eca*2)4`JEIr z0~Vyyv&S+gctfWJ&5-Iy*~_dCg63r|w{5);6v3+*6a1!6f?mv+;4gg=v?F7Jhk79h zmuHq(j&@!UF2RqP6a2lif^cDaoobvkWLK*NnSYL$7sq$JaARr##fs(UV+4mM@>V5+ zQputV+*bsR=GaVct=vKXvAl|);rxv&i=feLJZVoYoAe39vhIQ+XgE8E_3+CbG|ih> zG$L&2^%6UPyH632_EONncyN6--PAq_n!;CD^MB3@bzRV2yp0FqJ0!D}QnjF^6@GkV zPd*yE(}zytljr?($n$kP6LTosg7b2O44Kax_$gzonv4H06bgkxsFr^LjYZDOL8m~S P00000NkvXXu0mjf_#2Ge diff --git a/scripts/generate-icons.ts b/scripts/generate-icons.ts index 01af89d257..74253aedbc 100644 --- a/scripts/generate-icons.ts +++ b/scripts/generate-icons.ts @@ -6,7 +6,7 @@ * bun scripts/generate-icons.ts [commands...] * * Commands: - * update - Regenerate all derived icons from docs/img/logo-*.svg + * update - Regenerate all logo sources and derived assets * png - Generate build/icon.png (512x512) * icns - Generate build/icon.icns (macOS app icon) * linux-icons - Generate build/icons/{16x16..512x512}.png (Linux icon set) @@ -17,6 +17,12 @@ import { mkdir, rm, copyFile, readFile, writeFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; import sharp from "sharp"; +import { + renderAppWordmark, + renderDocsWordmark, + renderInlineAppWordmark, + renderSquareLogo, +} from "./logoAssets"; const ICONSET_SIZES = [16, 32, 64, 128, 256, 512]; const FAVICON_SIZES = [16, 32, 48, 64, 128, 256]; @@ -29,6 +35,18 @@ const ROOT = path.resolve(__dirname, ".."); const SOURCE_BLACK = path.join(ROOT, "docs", "img", "logo-black.svg"); const SOURCE_WHITE = path.join(ROOT, "docs", "img", "logo-white.svg"); +const WORDMARK_TARGETS = { + "docs/img/black-shux.svg": renderDocsWordmark("black"), + "docs/img/white-shux.svg": renderDocsWordmark("white"), + "src/browser/assets/logos/shux-logo-dark.svg": renderAppWordmark("white"), + "src/browser/assets/logos/shux-logo-light.svg": renderAppWordmark("black"), +} as const; + +const INLINE_WORDMARK_TARGETS = { + "index.html": "boot-loader__logo", + "static/splash.html": "logo", +} as const; + // Build outputs const BUILD_DIR = path.join(ROOT, "build"); const ICONSET_DIR = path.join(BUILD_DIR, "icon.iconset"); @@ -72,12 +90,10 @@ type LogoTargetConfig = RasterTargetConfig | SvgTargetConfig; const MONO_ICON = { source: SOURCE_BLACK, bg: false } as const; const APP_ICON = { source: SOURCE_WHITE, bg: true } as const; -// The source SVGs use viewBox="0 0 72 72" with a translate transform, leaving -// ~68% internal padding around the actual "m" + cursor mark. This cropped -// viewBox eliminates that padding so the mark fills the rendered image. -// Content bounds (after transform): x 8.85…63.15, y 24.5…47.5 → 54.3×23 units. -// Tight crop with ~0.5u breathing room: "8 24 56 24" → aspect ratio ≈ 2.33:1. -const TRAY_MARK_CROP = "8 24 56 24"; +// Crop the centered square source to the outlined "s" + cursor bounds so the +// mark fills small tray images without clipping the glyph's natural overshoot. +// Content bounds: x 14.37…57.63, y 24.5…47.99 → 43.26×23.49 units. +const TRAY_MARK_CROP = "13.5 24 45 24.5"; // Targets to update (path -> config) const LOGO_TARGETS = { @@ -98,13 +114,13 @@ const LOGO_TARGETS = { // iOS Safari uses apple-touch-icon for home screen installs. "public/apple-touch-icon.png": { size: 180, ...APP_ICON }, - // Electron Tray Icons – Wide Canvas with "m" Mark (Monochrome on Transparent) + // Electron Tray Icons – Wide Shux Mark (Monochrome on Transparent) // // The source SVGs have heavy internal padding (mark uses ~32% of canvas). // We crop to TRAY_MARK_CROP before rendering so the mark fills the output. // // Pixel dimensions: 24×24 @1x → 48×48 @2x → 72×72 @3x. - // Square canvas; the mark (aspect ≈ 2.33:1) is height-constrained and + // Square canvas; the mark (aspect ≈ 1.84:1) is height-constrained and // centered horizontally with transparent side padding. // // macOS treats the black variant as a template image (adapts to light/dark @@ -225,9 +241,48 @@ async function generateThemeFaviconSvg(output: string) { await writeFile(output, themedSvg); } +async function replaceInlineWordmark(relativePath: string, className: string) { + const outputPath = path.join(ROOT, relativePath); + const html = await readFile(outputPath, "utf8"); + const pattern = new RegExp( + String.raw`^([ \t]*)`, + "m" + ); + const match = html.match(pattern); + if (!match) { + throw new Error(`Could not find ${className} logo in ${relativePath}`); + } + + const indent = match[1]; + const svg = renderInlineAppWordmark(className) + .split("\n") + .map((line) => `${indent}${line}`) + .join("\n"); + await writeFile(outputPath, html.replace(pattern, svg)); +} + +async function generateSourceLogos() { + await writeFile(SOURCE_BLACK, renderSquareLogo("black")); + console.log("✓ docs/img/logo-black.svg"); + await writeFile(SOURCE_WHITE, renderSquareLogo("white")); + console.log("✓ docs/img/logo-white.svg"); + + for (const [relativePath, svg] of Object.entries(WORDMARK_TARGETS)) { + await writeFile(path.join(ROOT, relativePath), svg); + console.log(`✓ ${relativePath}`); + } + + for (const [relativePath, className] of Object.entries(INLINE_WORDMARK_TARGETS)) { + await replaceInlineWordmark(relativePath, className); + console.log(`✓ ${relativePath}`); + } +} + async function updateAllLogos() { console.log(`Updating all logos...\n`); + await generateSourceLogos(); + for (const [relativePath, config] of Object.entries(LOGO_TARGETS)) { const outputPath = path.join(ROOT, relativePath); diff --git a/scripts/logoAssets.ts b/scripts/logoAssets.ts new file mode 100644 index 0000000000..79966ddcdb --- /dev/null +++ b/scripts/logoAssets.ts @@ -0,0 +1,63 @@ +/** + * Canonical Shux logo geometry. + * + * The outlined paths use Geist Sans Bold at the same scale and spacing as the prior Mux + * logos. Keeping the glyphs as paths avoids platform font fallbacks changing the mark. + */ + +const SHUX_MARK_PATH = + "M15.06501 51.48912Q11.80420 51.48912 9.48087 50.55164Q7.15754 49.61415 5.95511 47.96337Q4.75269 46.31258 4.58965 44.11153L10.78519 43.90773Q11.07052 45.49738 12.10990 46.33296Q13.14929 47.16854 15.10577 47.16854Q16.77694 47.16854 17.67367 46.61828Q18.57039 46.06802 18.57039 45.00825Q18.57039 44.27457 18.22393 43.82621Q17.87747 43.37785 16.91960 43.03138Q15.96174 42.68492 14.12753 42.39960Q10.66291 41.82896 8.70643 40.99338Q6.74994 40.15779 5.93473 38.87385Q5.11953 37.58990 5.11953 35.67417Q5.11953 32.45412 7.60590 30.55877Q10.09227 28.66342 14.82045 28.66342Q19.26331 28.66342 21.77006 30.70143Q24.27682 32.73944 24.68442 36.16329L18.57039 36.40785Q18.36659 34.81821 17.36796 33.90110Q16.36934 32.98400 14.73893 32.98400Q13.14929 32.98400 12.27294 33.65654Q11.39660 34.32909 11.39660 35.42961Q11.39660 36.24481 11.78382 36.75432Q12.17104 37.26382 13.04738 37.58990Q13.92373 37.91598 15.47262 38.11978Q18.97799 38.64966 21.01600 39.48525Q23.05401 40.32083 23.95073 41.62516Q24.84746 42.92948 24.84746 44.88597Q24.84746 48.02451 22.21843 49.75681Q19.58939 51.48912 15.06501 51.48912"; +const SHUX_MARK_TRANSFORM = "translate(9.77845 -3.5)"; +const SHUX_MARK_CURSOR_X = 27.85346; +const SHUX_MARK_CURSOR_Y = 28; +const SHUX_MARK_CURSOR_WIDTH = 20; +const SHUX_MARK_CURSOR_HEIGHT = 23; + +const SHUX_WORDMARK_PATH = + "M14.2080 48.5760Q10.3680 48.5760 7.6320 47.4720Q4.8960 46.3680 3.4800 44.4240Q2.0640 42.4800 1.8720 39.8880L9.1680 39.6480Q9.5040 41.5200 10.7280 42.5040Q11.9520 43.4880 14.2560 43.4880Q16.2240 43.4880 17.2800 42.8400Q18.3360 42.1920 18.3360 40.9440Q18.3360 40.0800 17.9280 39.5520Q17.5200 39.0240 16.3920 38.6160Q15.2640 38.2080 13.1040 37.8720Q9.0240 37.2000 6.7200 36.2160Q4.4160 35.2320 3.4560 33.7200Q2.4960 32.2080 2.4960 29.9520Q2.4960 26.1600 5.4240 23.9280Q8.3520 21.6960 13.9200 21.6960Q19.1520 21.6960 22.1040 24.0960Q25.0560 26.4960 25.5360 30.5280L18.3360 30.8160Q18.0960 28.9440 16.9200 27.8640Q15.7440 26.7840 13.8240 26.7840Q11.9520 26.7840 10.9200 27.5760Q9.8880 28.3680 9.8880 29.6640Q9.8880 30.6240 10.3440 31.2240Q10.8000 31.8240 11.8320 32.2080Q12.8640 32.5920 14.6880 32.8320Q18.8160 33.4560 21.2160 34.4400Q23.6160 35.4240 24.6720 36.9600Q25.7280 38.4960 25.7280 40.8000Q25.7280 44.4960 22.6320 46.5360Q19.5360 48.5760 14.2080 48.5760M28.8480 48L28.8480 13.9200L36.0480 13.9200L36.0480 28.2720L35.0880 28.2720Q35.5680 25.0560 37.7760 23.3760Q39.9840 21.6960 43.1520 21.6960Q47.3280 21.6960 49.5840 24.3600Q51.8400 27.0240 51.8400 31.4400L51.8400 48L44.6400 48L44.6400 33.1680Q44.6400 30.2400 43.7280 28.8240Q42.8160 27.4080 40.7520 27.4080Q38.4960 27.4080 37.2720 28.9440Q36.0480 30.4800 36.0480 33.3600L36.0480 48M65.6640 48.5760Q61.6800 48.5760 59.4480 46.0320Q57.2160 43.4880 57.2160 38.8320L57.2160 22.2720L64.4160 22.2720L64.4160 37.1520Q64.4160 40.1280 65.3280 41.4960Q66.2400 42.8640 68.2080 42.8640Q70.4160 42.8640 71.6400 41.3280Q72.8640 39.7920 72.8640 36.8160L72.8640 22.2720L80.0640 22.2720L80.0640 48L73.4880 48L73.2960 40.6080L74.2080 40.8000Q73.6320 44.6400 71.4720 46.6080Q69.3120 48.5760 65.6640 48.5760M84.3360 48L93.5040 34.9440L84.6240 22.2720L92.2560 22.2720L97.7280 30.5280L103.1040 22.2720L110.8800 22.2720L102 34.9920L111.1680 48L103.4880 48L97.8720 39.2640L92.1600 48"; +const SHUX_WORDMARK_HEIGHT = 62; +const SHUX_WORDMARK_CURSOR_X = 120.5354; +const SHUX_WORDMARK_CURSOR_Y = 13; +const SHUX_WORDMARK_CURSOR_HEIGHT = 35; +const APP_WORDMARK_CURSOR_WIDTH = 26; +const DOCS_WORDMARK_CURSOR_WIDTH = 28; + +export type LogoFill = "black" | "white" | "currentColor"; + +export function renderSquareLogo(fill: LogoFill): string { + return ` + + + + + + +`; +} + +export function renderWordmarkLogo(fill: LogoFill, cursorWidth: number): string { + const width = Number((SHUX_WORDMARK_CURSOR_X + cursorWidth).toFixed(4)); + return ` + + + + +`; +} + +export function renderDocsWordmark(fill: LogoFill): string { + return renderWordmarkLogo(fill, DOCS_WORDMARK_CURSOR_WIDTH); +} + +export function renderAppWordmark(fill: LogoFill): string { + return renderWordmarkLogo(fill, APP_WORDMARK_CURSOR_WIDTH); +} + +export function renderInlineAppWordmark(className: string): string { + const width = Number((SHUX_WORDMARK_CURSOR_X + APP_WORDMARK_CURSOR_WIDTH).toFixed(4)); + return ``; +} diff --git a/src/browser/assets/icons/shux.svg b/src/browser/assets/icons/shux.svg index 9e3e8c7e41..887b5a21df 100644 --- a/src/browser/assets/icons/shux.svg +++ b/src/browser/assets/icons/shux.svg @@ -1,4 +1,7 @@ - - + + + + + diff --git a/src/browser/assets/logos/shux-logo-dark.svg b/src/browser/assets/logos/shux-logo-dark.svg index bd86a94214..d7c1fbe0c7 100644 --- a/src/browser/assets/logos/shux-logo-dark.svg +++ b/src/browser/assets/logos/shux-logo-dark.svg @@ -1,4 +1,5 @@ - - shux - + + + + diff --git a/src/browser/assets/logos/shux-logo-light.svg b/src/browser/assets/logos/shux-logo-light.svg index 093a4619ab..fb94ac13bb 100644 --- a/src/browser/assets/logos/shux-logo-light.svg +++ b/src/browser/assets/logos/shux-logo-light.svg @@ -1,4 +1,5 @@ - - shux - + + + + diff --git a/src/browser/components/ProjectSidebar/ProjectSidebar.tsx b/src/browser/components/ProjectSidebar/ProjectSidebar.tsx index b9d99c8eed..49fdc762dc 100644 --- a/src/browser/components/ProjectSidebar/ProjectSidebar.tsx +++ b/src/browser/components/ProjectSidebar/ProjectSidebar.tsx @@ -1968,7 +1968,7 @@ const ProjectSidebarInner: React.FC = ({ className="shrink-0 cursor-pointer border-none bg-transparent p-0" aria-label="Home" > - +