ZenNotes 2.22.1: the Dock icon falls in line
One fix, a visible one: the macOS Dock icon now sits on Apple's icon grid instead of looming about 9% over its neighbors. Installers for macOS, Windows, and Linux (x64 + arm64) are attached below.
🐛 Fixes
-
The macOS Dock icon sits on Apple's icon grid. ZenNotes loomed about 9% larger than every other icon in the Dock. Apple's grid draws a Dock icon as an 824px tile centered on the 1024px canvas; ours was drawn at 896px. Christian measured it from the outside with screenshot rulers, 17.5px of headroom in the Dock slot where stock apps get 23, which is exactly that extra 72px of tile. (Reported by @Christian-SC26 in #544.)
There were two causes, and fixing only the obvious one would not have been enough. The artwork itself was off the grid, so
icon.pngandicon.icnsare regenerated with the tile scaled to exactly 824px with 100px margins, plus the soft drop shadow Apple's own icns icons bake in (Notes.app carries one; without it the tile reads slightly flat next to system neighbors). And the installed app was quietly overriding its own bundle icon at runtime: a dev-mode workaround (npm run devshows Electron's default icon, so the app force-sets its own) also ran in packaged builds, replacing the .icns with a raw NSImage and bypassing the system's icon treatment. That call now runs only in dev.What this deliberately does not do: the light appearance variant Christian also asked about. Appearance-aware icons need the macOS 26 Icon Composer pipeline (a
.iconfile compiled intoAssets.car), which electron-builder cannot produce yet. That stays open as a follow-up rather than blocking the size fix.How to test locally:
npm run pack, opendist/mac-arm64/ZenNotes.app, and park it in the Dock next to any stock app. Before this the enso tile poked above its neighbors' top edges; now the edges align, shadow and all.media/dock-icon-before-after.pngis the side-by-side.
🧰 For contributors
build/icon.pngis the single master: electron-builder derives the Windows ico from it and the non-mac window icons read it at runtime, so both inherit the new padding with this release. The Linux launcher icons inbuild/icons/are deliberately untouched; there is no macOS-style grid convention on Linux desktops, and shrinking them would trade a closed complaint for a new one.- The grid numbers, for the next time the artwork changes: 1024 canvas, 824 tile, 100px margins, corner geometry preserved by uniform scaling, template shadow at y=10 blur=10 30% black (1024 scale). Verify with a solid-alpha span (alpha > 250) at mid-height, not a bounding box; the shadow pollutes the bbox.
app.dock.setIconis gated to!app.isPackagednow. A packaged app must advertise its bundle .icns untouched: macOS applies its own icon treatments to the bundle icon (and any future Icon Composer work depends on that), while a runtime NSImage bypasses all of it.
Keyboard-first and local-first, as always.