Repository navigation
Optimize app icon PNGs losslessly - #664
Merged
Merged
Conversation
Shrink the two source layers of the app icon with optipng at maximum effort, stripping ancillary chunks. Pixels are identical; each is re-encoded as an indexed palette. Command: optipng -o7 -strip all <file> border.png: 49,734 -> 14,579 bytes (-70.7%) +++---.png: 5,677 -> 242 bytes (-95.7%)
hannesa2
approved these changes
Sep 17, 2026
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.
Summary
Losslessly optimize the two PNG source layers of the app icon (
Resources/AppIcon.icon/Assets/). These assets are used in production: they compose the macOS app icon at build time viaResources/AppIcon.icon/icon.json(layersborderand+++---).No pixels change — verified byte-identical (SHA-256 of decoded RGBA pixels before/after).
border.pngis re-encoded as an 8-bit palette and+++---.pngas a 1-bit palette; dimensions are unchanged.Command used:
Before / After
Resources/AppIcon.icon/Assets/border.pngResources/AppIcon.icon/Assets/+++---.pngResources/Images/Preferences/Updates.pngwas already optimally compressed (36,779 B before and after), so it is left untouched.Changes were made at the request of the PR author; the work was carried out by Big Pickle AI.
Build verification
Ran
xcodebuildlocally on this branch to confirm the optimized icon layers compile and ship correctly.BUILD SUCCEEDED(exit 0). The only hiccup was pre-existing and unrelated to this change:MGScopeBarpinsMACOSX_DEPLOYMENT_TARGET=10.13, below the current SDK minimum (12.0); worked around for the local check withMACOSX_DEPLOYMENT_TARGET=12.0on the command line..iconsource (Resources/AppIcon.icon) was compiled by Xcode intoContents/Resources/AppIcon.icns(42.7 KB) inside the builtGitX.app, andInfo.plistpointsCFBundleIconFile/CFBundleIconNameatAppIcon.iconutil -c iconsetdecodes the built.icnsback into a valid iconset with all expected icon sizes, so the compiler accepted the palette-based PNGs.master(SHA-256 of decoded RGBA pixels), so the composed icon is guaranteed visually unchanged.So the optimized
border.png(8-bit palette) and+++---.png(1-bit palette) are consumed by the production icon build and render as before.Verification performed by Big Pickle AI at the request of the PR author.