fix: adopt macOS 26 single-image AppIcon format in xcassets#2
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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