diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 4a11497..7b92430 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -154,30 +154,50 @@ jobs:
if: runner.os == 'macOS'
run: |
APP=Zodia.app
+ SVG=app/data/io.github.bendik.Zodia.svg
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
cp target/${{ matrix.target }}/release/zodia "$APP/Contents/MacOS/zodia-bin"
+ # ── .icns via ImageMagick + iconutil ──────────────────────────────
+ brew install imagemagick dylibbundler
+ ICONSET=$(mktemp -d)/Zodia.iconset
+ mkdir -p "$ICONSET"
+ render() { magick -background none -density 300 "$SVG" -resize "$1x$1" +profile '*' "${ICONSET}/$2"; }
+ render 16 icon_16x16.png
+ render 32 icon_16x16@2x.png
+ render 32 icon_32x32.png
+ render 64 icon_32x32@2x.png
+ render 128 icon_128x128.png
+ render 256 icon_128x128@2x.png
+ render 256 icon_256x256.png
+ render 512 icon_256x256@2x.png
+ render 512 icon_512x512.png
+ render 1024 icon_512x512@2x.png
+ iconutil -c icns -o "$APP/Contents/Resources/zodia.icns" "$ICONSET"
+
+ # ── Info.plist ────────────────────────────────────────────────────
cat > "$APP/Contents/Info.plist" <<'PLIST'
- CFBundleNameZodia
- CFBundleDisplayNameZodia
- CFBundleIdentifierio.github.bendik.Zodia
- CFBundleVersion${{ github.ref_name }}
- CFBundleShortVersionString${{ github.ref_name }}
- CFBundlePackageTypeAPPL
- CFBundleExecutablezodia
- LSMinimumSystemVersion13.0
- NSHighResolutionCapable
- NSHumanReadableCopyrightAGPL-3.0-or-later
+ CFBundleName Zodia
+ CFBundleDisplayName Zodia
+ CFBundleIdentifier io.github.bendik.Zodia
+ CFBundleVersion ${{ github.ref_name }}
+ CFBundleShortVersionString ${{ github.ref_name }}
+ CFBundlePackageType APPL
+ CFBundleExecutable zodia
+ CFBundleIconFile zodia
+ LSMinimumSystemVersion 13.0
+ NSHighResolutionCapable
+ NSHumanReadableCopyright AGPL-3.0-or-later
PLIST
- brew install dylibbundler
+ # ── dylibbundler ──────────────────────────────────────────────────
BREW="$(brew --prefix)"
dylibbundler \
--bundle-deps \
@@ -187,7 +207,7 @@ jobs:
--search-path "${BREW}/lib" \
--overwrite-dir
- # Launcher: sets XDG_DATA_DIRS and pixbuf module path then execs the real binary
+ # ── Launcher: sets XDG_DATA_DIRS then execs the real binary ───────
cat > "$APP/Contents/MacOS/zodia" <