Skip to content

fix: adopt macOS 26 single-image AppIcon format in xcassets#2

Merged
blaineam merged 5 commits into
mainfrom
claude/fix-macos-icon-sizing-8rXNL
May 6, 2026
Merged

fix: adopt macOS 26 single-image AppIcon format in xcassets#2
blaineam merged 5 commits into
mainfrom
claude/fix-macos-icon-sizing-8rXNL

Conversation

@blaineam
Copy link
Copy Markdown
Owner

@blaineam blaineam commented May 5, 2026

Replace the old 10-slot multi-size Contents.json (16×16 through 512×512
at 1x/2x) with the Xcode 26 format: a single 1024×1024 entry using
idiom "universal" and platform "mac". The existing icon_512x512_2x.png
(already 1024×1024 px) is reused as the sole source image.
Also bumps xcodeVersion in project.yml from 16.3 → 26.0.

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK

claude added 5 commits May 5, 2026 19:38
Replace the old 10-slot multi-size Contents.json (16×16 through 512×512
at 1x/2x) with the Xcode 26 format: a single 1024×1024 entry using
idiom "universal" and platform "mac". The existing icon_512x512_2x.png
(already 1024×1024 px) is reused as the sole source image.
Also bumps xcodeVersion in project.yml from 16.3 → 26.0.

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK
…nding

The icon PNGs had a rounded-rect background baked in with transparent
corners, which breaks macOS 26: the system clips the icon to its own
shape, so artwork must fill the entire 1024×1024 square.

Changes:
- generate-icon.swift: replace CGPath(roundedRect:) with ctx.fill(bgRect)
  so the background is a solid square; also consolidates to a single
  1024×1024 output (AppIcon.png), adds BlipHelper xcassets generation,
  and writes the macOS 26 Contents.json format (platform: mac,
  idiom: universal, size: 1024x1024)
- generate-assets.swift: same fix in drawIcon() and drawHelperIcon() —
  NSBezierPath(roundedRect:) → NSBezierPath(rect:) for the background
- Both Contents.json files updated to reference AppIcon.png

After pulling this branch, run:
  swift Scripts/generate-icon.swift
to regenerate the PNGs with full-bleed artwork.

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK
Contents.json now references AppIcon.png (macOS 26 format). Copy the
existing icon_512x512_2x.png as a placeholder until generate-icon.swift
is run on a Mac to produce the proper full-bleed version.

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK
Run generate-icon.swift before xcodegen so the xcassets always contain
fresh full-bleed AppIcon.png files built from source rather than relying
on committed PNGs.

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK
- ci.yml + release.yml: run generate-icon.swift before xcodegen so
  xcassets always contain fresh full-bleed AppIcon.png for every build
  (notarized DMG, pre-release PR DMG, and release)
- ci.yml: remove the old "Inject App Icons" and "Re-sign After Icon
  Injection" steps — they were the legacy .icns post-build injection
  approach that the xcassets switch made redundant (and they would have
  overwritten the correct icon with a pre-rounded .icns)
- ci_post_clone.sh: revert icon generation — Xcode Cloud (MAS) clones
  the branch and uses the committed AppIcon.png; no need to regenerate

https://claude.ai/code/session_01MgC1aGzQLNC5hy8SMFXCXK
@blaineam blaineam merged commit 6c2243d into main May 6, 2026
1 check passed
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.

2 participants