Skip to content

fix: Compile Asset Catalog for app icon to display in Finder - #44

Merged
jatinkrmalik merged 1 commit into
mainfrom
fix/app-icon-asset-catalog
Mar 6, 2026
Merged

fix: Compile Asset Catalog for app icon to display in Finder#44
jatinkrmalik merged 1 commit into
mainfrom
fix/app-icon-asset-catalog

Conversation

@jatinkrmalik

Copy link
Copy Markdown
Member

Problem

VocaMac shows a generic white icon in Finder and DMG when built on CI, despite the .icns file and both CFBundleIconFile/CFBundleIconName being present.

The icon worked locally but not from CI-built DMGs.

Root Cause

Modern macOS requires a compiled Asset Catalog (Assets.car) for app icons to render in Finder when CFBundleIconName is set. The raw .icns file alone is not sufficient.

Our local builds had Assets.car from a previous actool test, but the CI builds never generated it.

Fix

Updated build.sh to compile an Asset Catalog as part of every build:

  1. Copies the .icns file (kept as fallback)
  2. Extracts PNGs from the .icns via iconutil
  3. Creates a proper .xcassets structure with Contents.json
  4. Compiles to Assets.car via xcrun actool
  5. Falls back gracefully if actool is unavailable

Tested

  • ✅ Icon displays correctly in local .app bundle
  • ✅ Icon displays correctly in locally created DMG
  • ✅ Falls back to .icns-only if actool is not available

Note

The v0.1.1 release has been deleted. After merging this PR, we'll re-tag and re-release v0.1.1 with the icon fix included.

Modern macOS requires a compiled Asset Catalog (Assets.car) for app
icons to render in Finder. The raw .icns file alone is not sufficient
when CFBundleIconName is set.

build.sh now:
1. Copies the .icns file (fallback)
2. Extracts PNGs from the .icns via iconutil
3. Compiles an Asset Catalog via actool (xcrun)
4. Falls back gracefully if actool is unavailable
@jatinkrmalik
jatinkrmalik merged commit 4a442f4 into main Mar 6, 2026
1 check passed
@jatinkrmalik
jatinkrmalik deleted the fix/app-icon-asset-catalog branch August 22, 2026 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant