Fix blank DMG background#119
Merged
Merged
Conversation
f2a7234 to
6f47d35
Compare
The background asset is authored at 2x (1080×1520 px), matching the 540×760 pt Finder window at Retina resolution. The previous sips --resampleHeightWidth call shrank it to 1x point size, making it too small for Finder to apply as a DMG background on Retina displays. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
DS_Store stores the background path as /Volumes/Tabby/.background.png. If old DMGs are still mounted, the new one mounts as /Volumes/Tabby 2/ and the path doesn't match, causing a blank background. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6f47d35 to
d4a2ea2
Compare
Jam-Cai
approved these changes
May 21, 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
sips --resampleHeightWidthcall innormalize_background_imagedmg_background.png) is already authored at 2x resolution (1080×1520 px for a 540×760 pt window) — downsampling it to 1x point size made it too small for Finder to apply as a background on Retina displays, causing a blank DMG windowTest plan
bash scripts/build_test_dmg.sh/tmp/Tabby-test.dmgand verify the background image appears🤖 Generated with Claude Code
Greptile Summary
This PR fixes the blank DMG background by replacing the previous single-PNG approach (where the 2x image was being downsampled to 1x point size by
sips, making it too small for Finder on Retina displays) with a proper multi-rep TIFF generated viatiffutil -cathidpicheck— the canonical macOS approach Apple's own installers use.dmg_background.png) and admg_background@2x.png, combined at build time into a multi-rep TIFF so Finder selects the right resolution per display.build_test_dmg.shgains a PEP 668–safe isolated venv for Homebrew Python environments andCODE_SIGNING_ALLOWED=NOfor local dev builds without a signing cert.tabby→Tabbyacross CI and the test script.Confidence Score: 5/5
Safe to merge — the change is additive and well-scoped, touching only DMG packaging assets and scripts with no impact on the app binary or update pipeline.
The root-cause fix (blank background on Retina displays) is addressed correctly: tiffutil -cathidpicheck is the canonical macOS mechanism for multi-rep HiDPI backgrounds, the 1x/2x asset split is consistent across CI and the test script, and the CI workflow already has dmgbuild installed before the new tiffutil call runs. No logic errors or broken contracts were found in the changed paths.
No files require special attention. The open items (stale docstrings, version-pin mismatch) were flagged in previous review rounds and are style-level concerns that do not affect packaging correctness.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A["dmg_background.png (1x · 540×760)"] --> C[tiffutil -cathidpicheck] B["dmg_background@2x.png (2x · 1080×1520)"] --> C C --> D["dmg-background.tiff (multi-rep HiDPI)"] D --> E[dmgbuild settings.py] G["tabby.app (signed)"] --> H[ditto → staging-root] H --> E E --> F[dmgbuild] F --> I[Tabby.dmg] I --> J{Finder display} J -->|Retina| K[2x rep · crisp] J -->|Non-Retina| L[1x rep · correct size]Comments Outside Diff (3)
scripts/build_release_dmg.py, line 73-75 (link)run_commanddocstring still listssipsas one of the "system-tool boundaries" it crosses, butsipsis no longer called anywhere in the script after this change. The mention will mislead future readers who try to trace which external tools this script depends on.scripts/build_release_dmg.py, line 106-107 (link)ensure_dmgbuild_availablestill pins==1.6.7, whilebuild_test_dmg.shnow uses>=1.6.0. Anyone following the error message to install the package will end up with a different version than the test script installs, which could mask compatibility issues. The two should agree on a version constraint.scripts/build_release_dmg.py, line 10 (link)Reviews (5): Last reviewed commit: "Update DMG background assets and build s..." | Re-trigger Greptile