Repository navigation
chore(zapstore): publish the store images as JPEG - #902
Conversation
The nine 1242 × 2688 store images were PNG, 7.8 MB in all. As JPEG (quality 85, no chroma subsampling, progressive) they are 2.3 MB, with the same dimensions and no visible loss: the PNGs were opaque and carried no colour profile, so nothing is dropped. 4:4:4 keeps coloured text free of chroma fringes; 4:2:0 would save another 0.4 MB. zapstore.yaml and the README point at the new files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WofuzaohHhZRbBXhx9UD6S
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 48 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Linked issue
None: maintainer pull request. The Zapstore listing's images were heavier than they need to be.
Type
chore
What changes and why
The nine Zapstore images added in #860 were PNG, 7.8 MB in all, and every visitor to the listing downloads them. This re-encodes them as JPEG: quality 85, no chroma subsampling (4:4:4), progressive. That brings them to 2.3 MB (−70 %) with the same 1242 × 2688 dimensions. The PNGs were opaque RGB with no colour profile, so the conversion drops no transparency and no colour management. 4:4:4 keeps the coloured text (the yellow invoice countdown, the green chips) free of chroma fringes. 4:2:0 would have saved another 0.4 MB, but showed a slight halo on that text.
Affected flow
No app flow. Only the Zapstore listing (
zapstore.yaml,docs/zapstore/*.jpg) and the README, which shows the same images.Blast radius
docs/zapstore/, outsideassets/. Nothing inlib/orrust/changes.zapstore.yamlandREADME.mdnamed them. Both now point to the.jpgfiles. A grep forzapstore/*.pngoutside.gitand build output finds nothing.zapstore.yaml:test/licensing/license_consistency_test.dartreads only thelicense:line, which is unchanged.Platforms tested
None: no app code changes. Checked on Linux with Python 3 (PyYAML, Pillow) and Flutter as pinned.
Manual testing
Setup
Linux, branch
chore/zapstore-jpeg-images, Python 3 with PyYAML and Pillow, Flutter as pinned inpubspec.yaml.Steps
python3 -c "import yaml,os;from PIL import Image;d=yaml.safe_load(open('zapstore.yaml'))['images'];print(len(d),all(os.path.exists(p) for p in d),{(Image.open(p).format,Image.open(p).size) for p in d},sum(map(os.path.getsize,d)))".Expected:
9 True {('JPEG', (1242, 2688))} 2295073. Every listed image exists and is a 1242 × 2688 JPEG, about 2.3 MB in all.01_hero.jpg,02_hero.jpgand03_hero.jpgside by side.Expected: the three phones continue across the seams as one panorama, and the gradient shows no banding.
Expected: the hero strip and the six screenshots render.
flutter test test/licensing/license_consistency_test.dart.Expected:
All tests passed!, same as onmain.Not covered
How Zapstore renders the listing. That only shows once the next release is published.
Screenshots
No visible change in the app. The images are the change: GitHub previews them in the Files tab, and they match the PNGs on
mainat normal viewing size.Automated tests
None added: listing metadata and images only.
flutter test test/licensing/license_consistency_test.dart:00:00 +10: All tests passed!Checklist
cd rust && cargo fmt --check && cargo clippy -- -D warnings && cargo testpass locally (not run: no Rust change)dart format --set-exit-if-changed .,flutter analyzeandflutter testpass locally (only the license test was run: no Dart change)rust/src/api/or an.arb: regenerated code committed in the same commit (not applicable)specs/or.specify/updated (not applicable)AI assistance
Claude Code picked the encoder settings, comparing quality 80/85/90 at 4:2:0 and 4:4:4 against the PNGs on zoomed crops of coloured text. It converted the images with Pillow, updated the two references and wrote the commit. The maintainer asked for the conversion.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WofuzaohHhZRbBXhx9UD6S