Skip to content

feat: native .icon format support for macOS Liquid Glass icons#351

Open
tsconfigdotjson wants to merge 1 commit intoblackboardsh:mainfrom
tsconfigdotjson:feat/native-icon-format-support
Open

feat: native .icon format support for macOS Liquid Glass icons#351
tsconfigdotjson wants to merge 1 commit intoblackboardsh:mainfrom
tsconfigdotjson:feat/native-icon-format-support

Conversation

@tsconfigdotjson
Copy link
Copy Markdown

Summary

  • When mac.icons points to a .icon file (from Icon Composer), the build pipeline compiles it via xcrun actool, producing Assets.car (Liquid Glass on macOS 26+) and a .icns fallback for older macOS versions
  • When mac.icons points to an .iconset folder, the existing iconutil path is unchanged — no breaking changes
  • Adds CFBundleIconName to Info.plist when using .icon format (required for Assets.car lookup)
  • Adds exit code checking for both actool and iconutil (previously failures were silently swallowed)
  • Pre-checks for actool availability with a clear error message about requiring Xcode

Usage

// electrobun.config.ts
{
  build: {
    mac: {
      icons: "icon.icon", // from Icon Composer
    }
  }
}

Validation

Validated in a clean room build (/tmp/electrobun-cleanroom/):

  • Cloned fresh from the branch, copied an .icon file into kitchen, set icons: "icon.icon" in config
  • Ran bun dev:canary (codesign/notarize disabled)
  • Confirmed Assets.car and AppIcon.icns both land in Contents/Resources/
  • Confirmed Info.plist contains both CFBundleIconFile (AppIcon) and CFBundleIconName (icon)

actool compilation output:

Compiling .icon file with actool (requires Xcode)...
  output-files:
    .actool-partial-info.plist
    Electrobun Kitchen Sink-canary.app/Contents/Resources/Assets.car
    Electrobun Kitchen Sink-canary.app/Contents/Resources/icon.icns

Closes #121

🤖 Generated with Claude Code

When mac.icons points to a .icon file (from Icon Composer), the build
pipeline now compiles it via actool, producing Assets.car for Liquid
Glass on macOS 26+ and an .icns fallback for older versions. The
existing .iconset → iconutil path is unchanged.

Also adds exit code checking for both iconutil and actool to fail fast
on broken icon builds instead of silently producing apps without icons.

Closes blackboardsh#121

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@tsconfigdotjson
Copy link
Copy Markdown
Author

@YoavCodes liquid glass icons

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.

Support new macOS icon format

1 participant