From 31b94014e0db2de98748ba03845ecbc25e0ecf89 Mon Sep 17 00:00:00 2001 From: Hiep Le <69354317+hieptl@users.noreply.github.com> Date: Thu, 6 Aug 2026 18:25:57 +0700 Subject: [PATCH] fix: ship multi-size app icons for Windows and macOS (#16352) --- .gitattributes | 5 ++ __tests__/scripts/desktop-icons.test.ts | 83 ++++++++++++++++++ electron-builder.config.mjs | 16 ++-- electron/build-resources/icon.icns | Bin 0 -> 112968 bytes electron/build-resources/icon.ico | Bin 0 -> 30338 bytes electron/main.mjs | 29 +++++-- package-lock.json | 11 +++ package.json | 4 +- scripts/generate-icons.mjs | 109 ++++++++++++++++++++++++ 9 files changed, 242 insertions(+), 15 deletions(-) create mode 100644 __tests__/scripts/desktop-icons.test.ts create mode 100644 electron/build-resources/icon.icns create mode 100644 electron/build-resources/icon.ico create mode 100644 scripts/generate-icons.mjs diff --git a/.gitattributes b/.gitattributes index 6313b56c57..a5b6975d66 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,6 @@ * text=auto eol=lf + +# Icon binaries — never text-normalize (a mangled byte corrupts the file). +*.png binary +*.ico binary +*.icns binary diff --git a/__tests__/scripts/desktop-icons.test.ts b/__tests__/scripts/desktop-icons.test.ts new file mode 100644 index 0000000000..5fd84bc14e --- /dev/null +++ b/__tests__/scripts/desktop-icons.test.ts @@ -0,0 +1,83 @@ +// @vitest-environment node +// The desktop app icons are COMMITTED artifacts (electron/build-resources/ +// icon.ico + icon.icns) that electron-builder auto-discovers and uses as-is. +// We ship them instead of relying on electron-builder's PNG→ICO conversion +// because that conversion emits a single 256×256 PNG-compressed entry which +// several Windows shell surfaces can't render — the app then shows the +// default Electron icon. These tests guard the structural contract of the +// committed files (standard sizes, BMP small entries), that they stay in +// sync with the icon.png master, and that the builder config keeps shipping +// the runtime window icons into the packaged app. +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, it } from "vitest"; +import config from "../../electron-builder.config.mjs"; +import { + REQUIRED_ICNS_TYPES, + REQUIRED_ICO_SIZES, + generateIcons, + listIcnsTypes, + listIcoEntries, +} from "../../scripts/generate-icons.mjs"; + +const resDir = fileURLToPath( + new URL("../../electron/build-resources", import.meta.url), +); +const committedPng = readFileSync(join(resDir, "icon.png")); +const committedIco = readFileSync(join(resDir, "icon.ico")); +const committedIcns = readFileSync(join(resDir, "icon.icns")); + +describe("committed desktop icon artifacts", () => { + it("icon.ico contains every standard Windows size", () => { + const sizes = listIcoEntries(committedIco).map((entry) => entry.size); + for (const size of REQUIRED_ICO_SIZES) { + expect(sizes, `missing ${size}px entry`).toContain(size); + } + }); + + it("icon.ico stores 48px-and-below entries as classic BMP, not PNG", () => { + // The root cause of the Windows default-icon bug: small entries stored + // as PNG-compressed data, which Explorer/NSIS/taskbar can't render. + const smallEntries = listIcoEntries(committedIco).filter( + (entry) => entry.size <= 48, + ); + expect(smallEntries.length).toBeGreaterThan(0); + for (const entry of smallEntries) { + expect(entry.isPng, `${entry.size}px entry must be BMP`).toBe(false); + } + }); + + it("icon.icns contains all ten standard macOS representations", () => { + const types = listIcnsTypes(committedIcns); + for (const type of REQUIRED_ICNS_TYPES) { + expect(types, `missing ${type} representation`).toContain(type); + } + }); + + it("stays in sync with the icon.png master (npm run generate-icons)", () => { + // Fails when icon.png changes without regenerating the committed + // artifacts — generation is deterministic, so bytes must match exactly. + const { ico, icns } = generateIcons(committedPng); + expect(ico.equals(committedIco)).toBe(true); + expect(icns.equals(committedIcns)).toBe(true); + }); +}); + +describe("electron-builder icon wiring", () => { + it("points buildResources at the directory holding the committed icons", () => { + // Auto-discovery contract: icon.icns (mac), icon.ico (win) and icon.png + // (linux) are all picked up from directories.buildResources by name. + expect(config.directories?.buildResources).toBe( + "electron/build-resources", + ); + }); + + it("ships both runtime window icons into the packaged app", () => { + // buildResources is auto-excluded from packaging, so main.mjs's + // BrowserWindow icons (icon.ico on win32, icon.png elsewhere) need + // explicit re-includes to exist on disk at runtime. + expect(config.files).toContain("build-resources/icon.png"); + expect(config.files).toContain("build-resources/icon.ico"); + }); +}); diff --git a/electron-builder.config.mjs b/electron-builder.config.mjs index 4b84f79e4e..ed40b4ad05 100644 --- a/electron-builder.config.mjs +++ b/electron-builder.config.mjs @@ -219,8 +219,9 @@ const config = { // Treat electron/ as the app root. electron/package.json provides the // Electron entry point without touching the npm-published root package.json. // `buildResources` points at electron/build-resources so electron-builder - // can auto-discover icon.png (1024×1024 OpenHands raised-hands app icon) - // and generate the platform-specific icon.icns / icon.ico from it. + // can auto-discover the committed icon.icns / icon.ico (generated from the + // 1024×1024 icon.png master via `npm run generate-icons`) and, for Linux, + // icon.png itself. directories: { app: "electron", output: "dist-electron", @@ -247,6 +248,8 @@ const config = { // main.mjs can set it as the BrowserWindow icon at runtime (used for the // Linux taskbar; macOS reads from the .icns inside the .app bundle). "build-resources/icon.png", + // Windows runtime BrowserWindow icon (main.mjs picks .ico on win32). + "build-resources/icon.ico", // Scripts from project root. Mostly Node built-ins; the two spawned // servers additionally need RUNTIME_PACKAGES, restored into // Resources/app/node_modules by the afterPack hook. @@ -304,8 +307,8 @@ const config = { ], }, ], - // Icon auto-discovered from directories.buildResources/icon.png - // (electron-builder generates icon.icns from the 1024×1024 PNG). + // Icon auto-discovered from directories.buildResources/icon.icns + // (committed; regenerate with `npm run generate-icons`). }, dmg: { @@ -324,8 +327,9 @@ const config = { // ── Windows ──────────────────────────────────────────────────────────────── win: { target: [{ target: "nsis", arch: ["x64"] }], - // Icon auto-discovered from directories.buildResources/icon.png - // (electron-builder generates icon.ico from the 1024×1024 PNG). + // Icon auto-discovered from directories.buildResources/icon.ico + // (committed; regenerate with `npm run generate-icons`). Also used for + // the NSIS installer/uninstaller and the rcedit exe icon resource. }, nsis: { diff --git a/electron/build-resources/icon.icns b/electron/build-resources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..15bf1af745bb298d475978c7475eeeb860d78a07 GIT binary patch literal 112968 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 z z@*}UHn1vQMnxD+On9B>V)8FpVykyj3E(%_!zrS<-8=vAXLPelRT=)%0E|-Kl#XXN& z#6<~4qZT!xwj?2K=tbW1P&`}|8F@SPuU72079Y~b`bq^GAdKKG=3gyD1|HOZtiwfY z@E_~Ud(r>QcYF+0w!b>WTZ44!$05K^z4{=TT!YC^I@u%Ant*<3%PPr8k|1dx6ZT% zaBt-^%y4!J)j^{=?(6Frbby2Yk;3lsHZJ&GOWJzO0I=Y_0OY#04r z_y!I_NRNQG7aUGE%Q9||areG>qB_?d6FPsO$TqR7<{^WeKY~W|f=N08Nhto7sDJ}W zD99VE=Y*H;=bUvAA!t&0-`9!AvWFKE2s|p0^MLV`RGl^!FN2EFtHT0oFcw^H2h{uh!59P=R zp^@^P1N$EzZOL>nh9Hbe#i?DRT=skIAcVJA%~uisw9)#RO=O+XL=akZ)X6E%tUfW9 zhMX7LN{}n%C^*q(0StXW5bUu z>7cyO$4NP}Q7T(ebCaKei0ez`Mf=Z<`yiBgLxRQF*Xy=H2vR&~8l{bA(v-3n2^Emh z2fFjwu|QD1iV|ee_!10%I*M;bF4eN-E&}R2(vFX^po8ucwFTx%c@i3)e0AGbQ1Z3 z?Eq%Fck4NI2yG&=2Vr1n*kcWz+e~;6L?dij4nh5Bc8|C4NJ6#}-&cKjhy?OyILwOP zlazG}0ad^0FVTB==*Fh_cMufSa{ze*SkaVx z&f_MmkpIp=C^4;bBVqL$i_{jQFeuK=qpyS&onbe~=g(je4AtbI#+eY*?;|8!_yX0R z^u!E?sIsEB?a?y0x&QQQ{4r|0{h|0Ou}buW9{Ap{%+sxd!OHvpP88{E!xbFD3+mD z*7r+W%)JlZ1CkIg#e^dI{k8_Xi&|cp9W#lL5;^|rTy4hPM*L^SWq0;IP>g%F6=HLr zCns)a+l(|~R)4JZ6p!)i9c{~G2_tGrKf3(~8Kjwt5>CAMlubui{zyC3vbtp3c*t{n z@^MF{+{Kzv*rNBs0qdfWmNJuRVYUSOF zpp$Uc2xCWiY69a)A|xToRdW;eW9R8k;EfE*c~PN!HNpMRZAOlwVshN(oFxmNoql8P z_uviq$%qx7#m{2dnrC^AB2Vnhe&f(A25CV=@g2&qVKR_Joni2)6u&npSAPYr@&4$n zp{jf57LY`nS^Y>yyyPLT#~SgkQCa>RCNs5(e{n(pw5M$Rd!y6jb|VK9ClZtALI5GmTEptDhRF1j#5BfdJ4?vB=_KJeRSp4#hw zwD{RTVD^L@JyB4OxZ?;@y47JBylLM?nQ%hI0Lj@tmZr1s?+QLH=%2YOXvSeWG1B%*nPW;QN%j$*t~3}W>8R&tRx!;xiK_T!?ycArCrm} z!lZ&8>e*c)ble#cJZ8Jt4;%zzeG*%&yt$Uw0&Etbt zHWJX?VKcDhJe%75>RJJd+<-_(0Z;CHlwi*3>mIDkTk|;1QDl6~bE_%nMWIn+!$*8?>#$H9D|$F*?)@Z&f=5cVNI_U@W~}Fgno2-$msM-l{z@B-0Y&7V zV~OK*EId=hSv4Os9jxlRidngL#-EMZG_h}pB@{oNVVlU)%2RAyCi1`#zA#u`5-k!ffli=-+2w+|F+blYxkOOJtQV(B3>{)wVv?b8csd zxngaf7irdv@_R7ZY^k3)JrS*^TBJ1FVh|%4E@#6G@SS5|8{3a&`sMT0p zvKyZ2_%TQv94zZ}9(=$PUck7r&_ZCZjLP_c&dEf@=rmqwsUtQe~3^wZ7ta*e1_bKJQdL6=LU( zS(r*OBqU={WGG`gPNnO()0c(sil&mBli0fmi7@dyHbZhJKAL`r;i%oaRlebDG3(YK zh{3TPQE%(y9i~JaqG*YKE6*cj8Yo~Deve<8p#aQ+TSvH$! zYenlO^?YWPjE%k-ZMqP*wW8{w+@4zc6yp!ixYOG4w#yB%GMJ?W1xjpFiLW~Rx!HySpej!AH<=4HMG1qfaT*Q zf=vyl99lFx-BSY{pLE!ZgCG8YT+DsLOow45hO>t+6sbS?@=z^xb46#P^ZW4qp*Brm zq8p7$u(!PID@Zrl4?3eEX; zkEQQGSxZXedXepG;G=C`+VnrZ=)eQA)G3rtIlWQd*&gJDQ^*fq@ih zTz2L00Z)5l`E)gA`L5ZVQ_H0dgf4hk@o7|b~_yUlKhpf0^PqAV_;zdtsT zd(?q~P0^Yp4m<#@U@kz$yknK_@o^(A2R(WHno~1@@?oJ8@XlW+rVgHA&ZymW z1me`qzTK4VlB$-iz-FS8vp8#ZE9bW9Kuvs3nMzTsXm9v=YC(J3S(lG?4@JbRADb=A zPUH-#j}BaaJ}pyXD=cu#Zs`5Qx+<80809js`_Gwh=`E^DVJpDikk z;W2znu3psIxfR3oR!OSV0K6o(19zc$vr9{7;)P2Z6wE0*wGw50w87)nHu%K)S z@C&)NSbC7U0`$Da<5J2fcs06{g%P2z!wXc|(JsT;RK!d}_)L=2wtHf4L03t3MA=nx zoqXvnKFP+UerqebL5YDlPY(6=YWT&ntl5FbiFWa<=pqIe#libqVxQH(rf%JaNOJI5 zh4pDeN&?yExL+7oFw|#gY|SHLbVc#01il9_Apq)Q0s_>@WO~#HO$EqnGyOrl4TylD zt_Y~$h=M$X@Zo!yz>2!96Py z(YfxJFw1LMN~5~DZG2~tTL;q47n3#+vMUgy%rE%hleZX93Y$GlJP#(OoH7zd$#C&6 zbhgN9KhayaAQH(1enPPu)ccrK(x+Noc*gKmlF!Jt8S+JTRTo7xL)x#-1r5LVx2WpY zqS}fMZBXE9+g_)AIfDXq-3l*|w)n~XpfKt=nN;(@K|EfHYYof@114dnQ${86*BcOp zm+?pH_1poEzo@9)0Oeu4kv*xi zw&%|WK(F(Zh&I!WoQeT6rt!il;ExW6a}M6t&IAtgN%U7ko+DS>*hU)7k_Zx}0^}Hc zx+VS1&Gu=!&5stPv{4pc#=r0VKJO4ms=d!twWinsbHCHIpB>&lWNJ05iF?qk8a$r@ z)^G0Yk>{`Y(|TLrIrcs9(rFSjtK({Vu6p$1gFAb*4@u7W`VP#^@9wE@JHnGKBiXxg zr!aXKK9lY~dckwIlkBrc3u#k|s`ou>bDL_}>drG670gjCX%pC#Iwm?C!xm};|{OVv!!uo<5lOv=5L z%MBcmc7LO5!dMe`@*(_*@I9BCQCG9FvWmCnWjTFiHajLI&{yKP47)EpU@OM$nKoiN)TsYuGZ6&0c=V^84=C{@u+0pj(z&C-J6R^0jTAMI-Z+$RwxlS9uOh)a#`_J=WvNxHFkpUabf< zx~qo7oHpGe1JvYt7BtO5wn!f(=pvyjSVLW3oZ#uK zl4E@J6cg#bD24Z|!-qYBH{GI}&>wPrd2AxowfQ|>+?*28*`k|*%j~o}+^1-K^)Sr3 zjvWNrjC-`6RBop@WyPn)Z&XgrGOLJ}?oq&wKCn3b#_n0s=*{QXs8V?tuaG$F>H7Fk zu+w}n7V@W+cg3@wdmAR^kQjT`TUO{ZYtF9wCLaJQu~@jhS6i#>1Y{T4e~=4x)_Sg( z^bs?nSU1XNFv-1P3h&ml&8RJrZj+%l3tA*#hV@X%cDA$C6P*FB|H#YXFsqzV9WC=f zqu8FZVA^`Ci$qhQ1J%)+ob*DsKP2BN%tTr}Kl8Q3E%Z{nXB=2Er{u6HM<{-IN2&NZ z6a3l=cFK2$&@l#PhoU=1!7tZ~DS%mQfyxSB%|*J6z_;Q>h2)VhkI8M3JM4!VJfv9j z$BEf;`cpsn@02bEIwfvJ;Qf+H;oAO+hk{oEQSg?904)0WB)IDokctM+)csEx1U&3{rXNg&_x`!{qCG= zr+aAinWbAY>@1L<3{8hvx26)mGX21&ox6#On|10?ew#an-fQv2;=a5B(@vqjExyw( zN={r)a!Gl&q}~sB`v9!IyIaG_BS#whKPVsAHMM=$nbTTg5>w6RyIbGqmGT3%0x0zZ zSeq1Q%gTOke0BEThOQxrEBl@;3gpS?cv6|py>*$YY0YBFoRnpx`FL^A8^Lz?8SuVM z?QSzY!QHK|KaF&}v7r%HGdSEx6>+gq*OiLZ^O-FeKrcxGX{@GgT=tA%{v`q*Q(wmC z&!2bJS(-&6*xnyZnZ1$kp>c@K=J3(aN2fUDYg(f$U*v0tpU5QT?bs7CSf9i`b+sg_ zjyuWMtI#K8@*#_YNHB=P4a($rP>&Eb=XwqpOj0({Hgr6IWcP5iC__4-xR6of;l4u>$i= zN%kQrOUuMq$B?m4;lX;Y9}2_Co*)QAMy@pQzxOM+aW_ulnjp#iZUsNV>}M8DLKVsT z9Y^%L7sKsO-|-QRK_t`c&}Sx>+9i2(+mYk_<7!}bC`XYp4~VE$J&^W7jXHxR$t#yF zN1pWd^bm}(2)TnL1D+NKQV~DKsx8Mu^qm3-EEsJL5upwf+{X)YH#DsDL@J{A7UCt}nC7_e6uT=nD*FEbt(d^r0Fy z2ok`pRK17@-12G*gc@%yFX?kYg4kA6&r1g0JQ9fMkc z$JpZa>mbXKP>ssgS56ShdeY{$MkD$V1YLR{TXO?~rh6%F3aJVcLhWQvU!U0t6?oax zeU7rEgz{(~#APB#k&p;QLL4m->b=R+Om=8U zo-!C1_8Uz6ow>R0Bt?Wbm z5L(QK$_|a-4KPnrw1ixa~`@7{92)&EAE7$KVXV}*yf zcg91gQlWis#)riE{WbT9P%4QXsJk*Pp^#&T*k;P-i#;k10+6h?@Tr~5Eu{|_Af{84 z)(N&u(i3!E&i?3bUJv9hRIkmK-frtSqHVlhej;!7$5&&JTDkoaZDX7u)(JrhvPv?E z2lX%gxcLB~K{I*-*xZ1|+XH4G2=BOxqJ}J}9zA;W$WKX0N$K$6!wL!ta&mHq4jqzR zB57&qgG(eOC51wvBqb#!BqYSe#YLBB|Ni|VA|gUdBq%5-ARxfc&%bYpczJnwczE_M z5f>NNo;`b5Sy?$bId|{g&B4LJ&d$!p#s)YnEG!rdhMAd}iHV7kk&%Ic;nuBN)6>&* zbaeFe^t4!_p`mecaoMp%R7)f;FW=D6uziWPEm22D$Jp4|+}vDRS{lU?4Gs=&U7{~v zzJN}*ED`wb{rmSDH*UOm@uGu+LqtRbF)?v|etuL`l&-Gs zh7B74&b@HqLTYL%5fKpq0YPSF=7R?h@bU4HNF*U4VQ_FT0)fcL$PgA5_V)G$kGiX? zD?2;e%F3#+un;`ey1KgY@$nZgUVzA%n3z~eNl9#MEbveL{r!uJi_y{1o}QkywY9mq zxo&Q5k&%&MVPVzP)wZ^_Jv}`&H8qoylL-k4<>lp?nwl*wEqHi%^Yin)y}gEphK`Po zF)=a6j~~B#_ilK2_@hUUK<^qF8sPe!K7alU$|EBq;7UzR-QL~~3RP8A;Hsym2d+9g zI^gQ(=Vxzk4+?*XR39CMU&!JMYD(%5-}%tY`Y)K)awBF^@JGd97BQHir2?i1WaV%% z3Z!`qW-|s83|GGqH^v$hioxV#Y5=1bGrYte!(b*sVHP&?KcWT9?9|s0&;#fv7jp+= zj$y}OOtT~xg$8L07z_9J$4G>n3#K0-!|>S9KtAN$qSF<)9piFyLJhoy5;3Q zFKLbIao!=k`gkw6ITLrVd;CWZ|TSvO@((6GP=g7clt?5nl0M?j|_5oiduT z9R8$FUZ?F|-aslOBSb^;q}eer`K(Zj`Tc&bFspsy1COotyPk`)s@>*UV%4&%cC1U( zC~V_`MJ79I?kUO?X&BcK1Xg9 z;FaJYg39GL<(0pL=t8!mJx}huY$6QlYwf8-Wg;M=R6Np`w2-yD+hwLB8J4`8+AACB z*a|v~ZV-x>(d2EBt0Rhj4GOAq^~QMT`lGEhH;EWMLhRPkeaCJ43VpU$08yJJd$c{R zD-3PR9&*L!Jnhj-6w2rDH#(oSXzx}}5YgNq>_o$9dYYRLSuNVctLxQ!7t-QLlj zkMy6z_4YBoKS|zgZh_)bDZdM_T zuJ$IF>eM5RcN;F`GjHZ+Ym3XP3(SdnAW(?ZDfU0G`2}shbwKM?m0e%u*+aYVsOAFd zc?sj1&*ONgFn1P>U0p%8ltzy z8J&cOLH6j!^ZK47#~$maP$!+HIeddUskZ8{Se_mCY(l^h0ev-5?lFPecaJ2Ce;`bB z;0=DN({}$-d4FGBQ*+<&ed)dJF?=(Fhb$}63Z>{{FVywU#I$%+-8<}|yMt?B;*MdF zE*U9hiSDpbHtA`H2JJxByuF5(Rf@Qp6E1xmAeZs(d09ha9o9s)z;`h2?Dk5uQnfkx zPRrQnI`pWeI~Cy*HM2Z=&mCzm_>mD8BN1w%GDwGLA!`Q-v9s030L>AlEagC0PH;7HHrU#t zV={#hPmpv@2YFshu>Dc{DdnKWj8Z-Y@2R`gBSCp{q--;L?oQ+r#gn@BJu=d88!X|_ z+&>cG<#RzzQ4$qo6qrJ4OS(fr3!$zHK-0weLc<1Z@14a+&^b+0;%q+?iJ^S!T+ z%p$WiGhIuuzm4l(J}nl_RLDw`B1e8|J>lmH5GH$ z3Tmtw)AUFLrlr-$wvBnuTO^jrB!&y41^km*s05f!L>s#vxSw|V%9ptZQHj;4`s*~* zg8q$pevUlH)R1GA8LCK*3HQ=3{fZ{2mYR&sw9_ZrK8Ba0(_e`NEe_0onUo>C)->m? z5QW(@v&oB<@Ja5d{8O@A*?LTi5IKfpcfXuNd!L+rdzIfn-eblp#6z-YY}e))pIi)Q z-^uDX|1o)9Z`&;W0b=)KWk(kK^itz!Lz$05=KX z3n%~p17He3Fb9?hz?WqL7zRL=WdsAz20$STeRRLlEd;n>bm6eyF z3>YfF2g`s4+{H4Q0U!gw4$3707zJRFWe@{)cEN*MhA(k(aR74w;6g@51^^1cF#w1F z$OSM;TU%RbXehu0!0`jr0(Npfefk722LLMoIso|c`t@soDgtl^V2;_@SpaSTnDh7d2iOH* zMF42-+_}@;-JO(_WM*at;10kjV88%H0iXs7fV8xwIs=+*S#=t-Wrq5Q3 zBxmp?2}12r36oP0gs=DwW`s^fQpi#l>Xm(*7`nzhsjD1No43H(^yl z^?0!%Je@_;UFS>ljx@=KwYh^|$eTY1qzRMUn4P-9oal~0KJX@GAn|&FseIGnPv|F3 zbF=7je%H>9S!MAZTZJ4GcvzJw2%ff0kyK4TBbT7v9z{&QkKtZFJGn&tmW7ap6L?ju zJR5Da3%=S66XeQ7QDs9K+66~G$%ys!l;}c9#VOv$47Ks*xAwoPUw{nM3utGbNsNEe zzIYo^MLC*cf_`qykj?*=0#(2qW6KriK{o!yB|;G?lH-Rbr+?jw#%<(5m|q?>|GSP0 zW(3s5ang)rA|1j~F{6Wl2HfYKMD5#VCew9Q@~H?y^09{FS%LuV*WR;=uhc>jX}bhW z)Pqhm$0MTir9RrR+?n335gh+^aVM~}D~`cUR^sh2hd)T!)!$E6`MHWyluG8B5N9c$HZhs-wIum5iUulPK?B*sdh^g>@H&94vW#TH-ZJ_^jmwGxi z$!Su#MJfFa^|m_fQ!!@9-dm~F0=s+lpV7U!n(yrPawk7ogUR(HpLz^-Q&AI!&2KJ0 zIigu@RKMe_>Y~ybpFpT$84ZJRm_!L6eg#>=EboVg{D@pD>^MrY zs$a@%w^ z;-3&XmuXPTE*g4vM*Zfj)8dvdW9cUhf~mp>o@Zpar*w?RJ&sKFy+`mixlc&@zPAxP zY5v6F!b>*!C5L;4U)m0wR($l$;Q}Z16Nd}d=OBpiJwO0_EAWQEw*u!2{3`G%AaJnk zSV4K`&YfVb3mhDX5rFsra36epe88mwCk31-@Npm_06ZyhqaX?ZoDOi=V0r{j6R4az zbqct%lP6CCBfu{M54h|%fujT~*v7_2;1HL6<##W+yx<2u4tNmYXMx`YqXH{o;E6zA zz$*b43D(=dI|FA8R?grF`1tq$9}0YpiHQktk-#$orvuy~@O{7!8XFsfr8w}Iz#joG z37lhTX{m~e3UKjY)eU@ZK|#TjCr^MMOiWA!t{FH};Eus_ICt(GSgr%G0URrc0sseh z{``61UcdXkfq?<|?}Me~kipZZPr;KP8X7V%FaYo%B_*Y`wG}J!pFH#+9_&G{FL^x@ zm%>k9Ff+{=_IQpMVGL#h10gV02+V0vSaLQ_m`zLhw+pDaVcvjB&ysVS1|{GW{~#?) zVMcpiJ7WmG=?N`b66tMX>gz~{ASA&zXBIN0SHnx07l{=9;z42E^-wEcGeBCrC>}*1 zE2FGaoG#n!GVI@wSS)F+oqSIlRqd+$LgyhflXHvQ~ENwQ|(nCSuL&BVBy5%F!ptI&IGunYznF#CZXhfq2ZN zff4P`_-O`WvZyjQ-gIX3&epirKvCw{x-Wv`Rtf%1Dgioik1GdRIu#yC5{kx>AE}8H z`e1#?6T>uEq1ML{V7%+_Dg5zxrfYp~E?z_IrTQchVSMH0-AlJN9?k4lzwH?Q!S?h; z|K6(w3ixTazM5ww4yvb}rq;Qid^&*Pfvk@slWb%Z^;N0ha?)gHuUaBBkJRi# z{cIA7(9GS}9@1o*us$v(-pHeRy^hlKK#cF}G)0@YoSf=9q%sz@GB*!w_fAwz)2gz& zb`y0$`l+g{@PhWi%jP$xooBlG#tg(-KMB5}r0|IARBn)Un9p?G#QXXR`xn(V&cXt` zO{EtaOsQIWWj){Jn=+~6cL=y)JjlO#QBX|`mPw_`+mSh05ct~4BqjSW?2z@F(V=r9 zme?q*(No7py5+p$)#z!NCpWeD4XHF014NyYk9itXSD&G(ViBZjH`VZ|cq!N+p6VMj z&UsewDDgw(E!pxV=vJ4XNdn2o9xtFy&~7t2c**3vJVRPGde2@^*R zH1SA6R)e|LTpVP>;~Fp1E{wH?;$izO6C2v_2ub_hMuxyf1cl&L|9@NcV2=)ni}~dZ44&*&`yXY9BaH84yf# z(Qs^DE9d!qNl9SOmvSCe)1&*8IfEL!wlBui&m(J}`p&#=C9;Npwm+GLQJ@*MGz;HL z^%w$`um4&0{J7=;(=J%afH@b;EFcOC=GpHP>+*7Cd5Ho7t6)A|o=m}f{XLAj96()O zX#hC>Jz@%GNf0hwUSKRQEx<&H8w$k@e}0dBE(borkU`WF%#~nu0b-xaK~1n)0Mp;{ zl3;lO0HT{f5)fFBfMpLTd`JIFY-l6pHeOItU54_ZFp`IT!3yGrBZL5(F9ioDe;O2A zz)S)3UW2*A-rFxasMZ2J+{m|?DY*V*7cco0D*{fC^U?#6Zo?#D)l-gAI=-wyl$!fWx?TNEpfmq(q5I{rRh!T8f>+vCT}J@NJ(KM}oq z9~sx)^D6Uu)k8zLs-Ha3&)XHM5H$76d)vhb9L`h4_nF-j-RB|PXXDX^hZ!|ggEZytfr<)rd@y;j;ed)G$PIs2J>*Jgd*Pw&3R^BfYl z?)ua$<3X7EAUM6tC5x{6QCs-^g_jG_K z;D+7{lG3k+C_~jUj(${}aaet1)~Z?25v#^!`chD~A5J{ziZIx!~Tz@7nk~^|0e# z1ckqI9KYK)c5eM${eOZU{5SX~jN^C5@c)nh@BRC&>-n!h=s#3{=Ny=%v9Nf=3WJiBC zo^|MdzdsNT#DIX__xfsfVHvPa{izJD9tg$#>KO|+uatph!L9(z{!X~#z}i}G4jaMM2OAdO?PA+-+u<_U$Nw&a+YgorHu-?A!QRmiws70AI)5ZzO&`kx zCqUrh4}JcweXxV{gRMVnAB1k#w26I};PGPn`6FY;)x*_at&GcC*#|tvwGylcw_)?O z%DC-o*;O8J_2GMg+hD?#`BfS0%8!7A zS#JWn_20W)O9vKM*@k@|R`RiRtWkKKhvls&2is&dAYuNO2_6g9-dbgB`=8ChW}h24 zW{CM;C3w8JwtiK|mHnME@COh$2?C!6`JW_sytuZ0RmYY6oiaRrcnkKgO7QsqD%-GK zc>LgC4(8vQ;PHdAMVNnUg2xZG^D+O{1dksa^;!f8^Dj)`U-nxj_%!&xEn&wF=iuBO z=HHfZ#}Ajm8GX#ZC9NDgwhqUA|LF-k*0pkQ>2#LB_Eug!u-?H$}z5|4nA_h z{LKm8+x?#t*gJ6nC*SHp`T`Q>Pb65s9Hc+|MJs$$O903ng6820BlvI~&dI<>v~Ujo zUD%adkaP5N=^Gkg2CGD#1xU#=0!+qfrEDz4*FWFtmUs=c6#^u9hEPp*YRvw#U_w?4I z3(H{jR_6aS{nhr5aQCC&@#EIll3&SRsfVqvl!MQ_td?MTn7=XypM$R|kF~K!Tg?2ltCX zLl`(tK@Af8O&K;$p%4C_pkI7X_J^<(F#R)m(EMNYGuhv5!*=ky`s>ky`&f_M@5=n! z?f-C|9mXuU&kXjZxOHrKB_EzEv28f{f1TG}se_eUc@7&sZ-Q;Z&EfOaxb^jxSN6NI zzFs@4$*pB;E&ggYaCxxa%5$SI4<=X+OSn4NbD+4qpOs-7@R`V;$za=HtOgUdzMdSG zhtK@2M;4ZWX*JoE=g43=n1{_*w&T{}Gi%s7Rvw#U`Kw|7CF9_-TH9K@wRFIlpjFQ+ zVb3M4c4i1ZdxXn}ZNtAwTpqT(-t#!H4fwpw%KTSnXu#j(58-gw{vW~Ju>HUCECp=; zuRJFJ+y5&uDr_I7zXFFYTmH}Wf4P78AFFGZzU|5VYCjHcUvsam9c=#O0fdAG-QcFR zd;PHmR}U`3_F%h<(1E4>BCtKQv}c6HVJQ5c;;>ccF<|0ne9*i^Ka=@Y8*JcLGCyno zv-&^8tN-M9em2&>v~6jU1edj9i`aHJ$KE4u{0z4pmya#4){g5}aNBYD*z#)aKZ_UP z%C8j%g8%qGo3~*bKWm5e|4h6B*8el}D69|D@2r)VHGjN*TU)MnRsj4H`u|ONU{4wi VSlIO6t^Zxa%D_3SHx2gx{~w3`4fp^6 literal 0 HcmV?d00001 diff --git a/electron/main.mjs b/electron/main.mjs index 3f2e5eb6f4..91b677f299 100644 --- a/electron/main.mjs +++ b/electron/main.mjs @@ -54,14 +54,27 @@ const projectRoot = app.isPackaged ? __dirname : join(__dirname, ".."); const buildDir = join(projectRoot, "build"); const scriptsDir = join(projectRoot, "scripts"); -// 1024×1024 OpenHands raised-hands app icon. Used as the BrowserWindow.icon -// option for the Linux taskbar and the Windows title bar / taskbar. On macOS -// the dock icon comes from the .app bundle's icon.icns (generated by -// electron-builder from this same PNG), so this path is unused there. -// In dev mode (`npm run desktop`), __dirname is /electron and the file -// lives next to main.mjs. In a packaged build, electron-builder copies -// build-resources/icon.png into Resources/app/ via the `files:` array. -const appIconPath = join(__dirname, "build-resources", "icon.png"); +// OpenHands raised-hands app icon, used as the BrowserWindow.icon option. +// Windows gets the multi-size icon.ico (16→256, small sizes as classic BMP +// entries — the Windows shell needs those); Linux uses the 1024×1024 PNG +// for its taskbar. On macOS the dock icon comes from the .app bundle's +// icon.icns, so this path is unused there. Both files live next to main.mjs +// in dev and are copied into Resources/app/build-resources/ via the +// `files:` array. Regenerate with `npm run generate-icons`. +const appIconPath = join( + __dirname, + "build-resources", + process.platform === "win32" ? "icon.ico" : "icon.png", +); + +// electron-builder's NSIS shortcuts are stamped with AppUserModelId +// ${APP_ID} (WinShell::SetLnkAUMI in installer.nsh). Declare the same id so +// running/pinned taskbar entries group with the shortcut and inherit its +// icon. Must match appId in electron-builder.config.mjs, and must be set +// before any BrowserWindow is created. +if (process.platform === "win32") { + app.setAppUserModelId("dev.openhands.agent-canvas"); +} // ── Bundled uv ──────────────────────────────────────────────────────────────── diff --git a/package-lock.json b/package-lock.json index 3f206b9d2c..58b19ae82c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,6 +104,7 @@ "jsdom": "30.0.0", "lint-staged": "16.4.0", "msw": "2.15.0", + "png2icons": "2.0.1", "postcss-prefix-selector": "2.1.1", "prettier": "3.8.3", "tailwindcss": "4.3.3", @@ -17746,6 +17747,16 @@ "node": ">=10.4.0" } }, + "node_modules/png2icons": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/png2icons/-/png2icons-2.0.1.tgz", + "integrity": "sha512-GDEQJr8OG4e6JMp7mABtXFSEpgJa1CCpbQiAR+EjhkHJHnUL9zPPtbOrjsMD8gUbikgv3j7x404b0YJsV3aVFA==", + "dev": true, + "license": "MIT", + "bin": { + "png2icons": "png2icons-cli.js" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", diff --git a/package.json b/package.json index 903a6dc524..d4848d712c 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,8 @@ "build:desktop": "npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && electron-builder --config electron-builder.config.mjs --publish never", "build:desktop:universal": "npm run build:app && node scripts/download-uv.mjs && node scripts/download-node.mjs && cross-env ELECTRON_ARCH=universal electron-builder --config electron-builder.config.mjs --publish never", "download-uv": "node scripts/download-uv.mjs", - "download-node": "node scripts/download-node.mjs" + "download-node": "node scripts/download-node.mjs", + "generate-icons": "node scripts/generate-icons.mjs" }, "lint-staged": { "src/**/*.{ts,tsx,js}": [ @@ -163,6 +164,7 @@ "jsdom": "30.0.0", "lint-staged": "16.4.0", "msw": "2.15.0", + "png2icons": "2.0.1", "postcss-prefix-selector": "2.1.1", "prettier": "3.8.3", "tailwindcss": "4.3.3", diff --git a/scripts/generate-icons.mjs b/scripts/generate-icons.mjs new file mode 100644 index 0000000000..fc059c370d --- /dev/null +++ b/scripts/generate-icons.mjs @@ -0,0 +1,109 @@ +/** + * Generate electron/build-resources/icon.ico and icon.icns from the + * 1024×1024 icon.png master. Run after changing icon.png: + * + * npm run generate-icons + * + * The outputs are COMMITTED — electron-builder auto-discovers them in + * directories.buildResources and uses them as-is. We don't rely on + * electron-builder's own PNG→ICO conversion because it emits a single + * 256×256 PNG-compressed entry, which several Windows shell surfaces + * (Explorer small views, NSIS, taskbar) can't render — they fall back to + * the default Electron icon. png2icons with forWinExe=true stores the + * 48/32/24/16 entries as classic BMP, which is what Windows expects. + */ +import { readFileSync, writeFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import png2icons from "png2icons"; + +// Standard Windows app-icon sizes (Microsoft recommends 16/24/32/48/256; +// 64/128 cover intermediate DPI scaling). +export const REQUIRED_ICO_SIZES = [16, 24, 32, 48, 64, 128, 256]; + +// The ten standard macOS representations (16 → 512@2x). is32/il32 (+ the +// l8mk/s8mk masks png2icons emits alongside) are the legacy non-retina +// 16/32 forms; ic07–ic14 cover 128 → 512@2x. +export const REQUIRED_ICNS_TYPES = [ + "is32", + "il32", + "ic07", + "ic08", + "ic09", + "ic10", + "ic11", + "ic12", + "ic13", + "ic14", +]; + +/** + * Parse an ICO buffer's ICONDIR into [{size, isPng}] — isPng distinguishes + * PNG-compressed payloads from classic BMP entries. + */ +export function listIcoEntries(ico) { + const entries = []; + for (let i = 0; i < ico.readUInt16LE(4); i++) { + const entry = 6 + i * 16; + const width = ico[entry]; + const offset = ico.readUInt32LE(entry + 12); + entries.push({ + size: width === 0 ? 256 : width, + isPng: ico.readUInt32BE(offset) === 0x89504e47, // \x89PNG + }); + } + return entries; +} + +/** List the 4-char OSType of every chunk in an ICNS buffer. */ +export function listIcnsTypes(icns) { + const types = []; + for (let p = 8; p < icns.length; p += icns.readUInt32BE(p + 4)) { + types.push(icns.toString("ascii", p, p + 4)); + } + return types; +} + +/** + * Convert a PNG buffer into { ico, icns } buffers, asserting the emitted + * size sets so a png2icons upgrade that changes them fails loudly. + */ +export function generateIcons(input) { + // forWinExe: true → 48/32/24/16 stored as classic BMP entries (required + // by Windows shell small-icon surfaces), ≥64 PNG-compressed. 0 = lossless. + const ico = png2icons.createICO(input, png2icons.BICUBIC2, 0, false, true); + const icns = png2icons.createICNS(input, png2icons.BICUBIC2, 0); + if (!ico || !icns) throw new Error("png2icons failed to convert icon.png"); + + const icoSizes = listIcoEntries(ico).map((entry) => entry.size); + for (const size of REQUIRED_ICO_SIZES) { + if (!icoSizes.includes(size)) throw new Error(`icon.ico missing ${size}px`); + } + const icnsTypes = listIcnsTypes(icns); + for (const type of REQUIRED_ICNS_TYPES) { + if (!icnsTypes.includes(type)) throw new Error(`icon.icns missing ${type}`); + } + + return { ico, icns }; +} + +const isMainModule = + process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href; + +if (isMainModule) { + const resDir = join( + dirname(fileURLToPath(import.meta.url)), + "..", + "electron", + "build-resources", + ); + const { ico, icns } = generateIcons(readFileSync(join(resDir, "icon.png"))); + writeFileSync(join(resDir, "icon.ico"), ico); + writeFileSync(join(resDir, "icon.icns"), icns); + console.log( + `icon.ico (${listIcoEntries(ico) + .map((entry) => entry.size) + .join("/")}px, ${ico.length} B), ` + + `icon.icns (${listIcnsTypes(icns).join(",")}, ${icns.length} B)`, + ); +}