Conversation
- release-manager: tracks/verifies App Store submission readiness (App-Store-Deployment.md, App-Store-Deployment-Checklist.md, blocker-prompts.md), handles build/version bumps and signing checks - qa-screenshotter: drives the Simulator to capture required App Store screenshot sets and walk the pre-submission smoke-test checklist Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… upload HEIC photos from modern iPhones (often 12-48MP, several MB+) were only being blanket-converted to JPEG at a fixed 0.85 quality with no size budget or dimension cap, so a large/detailed photo could still exceed backend upload limits. - Add ImageUploadProcessor: a stateless ImageIO-based utility that passes already-safe JPEG/PNG through unchanged, always converts HEIC, downsamples large originals via efficient thumbnail generation (avoids fully decoding huge originals into memory), and walks a JPEG quality ladder (opaque images) or PNG dimension ladder (images with alpha) until the result fits under 1.4MB, falling back to the smallest attempt if nothing hits budget - Wire it into the three image upload call sites (ComposeView.uploadPhoto, EditProfileView.uploadAvatar, DocumentsView.uploadPhoto), replacing the old inline UIImage(data:).jpegData(0.85) conversion; runs via Task.detached so the CPU-bound work doesn't block the main actor - Add ImageUploadProcessorTests covering the passthrough fast path, HEIC-always-converts, large-image downsampling, alpha/PNG preservation, corrupt input, and ladder-constant regression guards - Register both new files in project.pbxproj Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Syncs
devintomain. Headline change is automatic client-side image normalization for uploads (HEIC→JPEG/PNG, capped under 1.4MB), plus two new Claude subagents for release/QA workflows. The rest of the branch carries several weeks of accumulated App Store readiness and bug-fix work (UGC moderation, push notifications, cross-post fixes, UI polish) that hadn't yet been merged tomain.What's included
This session:
feat(uploads): newImageUploadProcessor(ImageIO-based) normalizes any picked image to JPEG/PNG under 1.4MB before upload — HEIC always converts, large originals are downsampled via efficient thumbnail generation (no full-resolution decode), alpha/transparency is preserved as PNG where possible, with full unit test coverage (b772290)chore(agents): addedrelease-manager(App Store submission checklist tracking) andqa-screenshotter(Simulator screenshot capture + smoke-test) subagents (373c34d)Prior accumulated work on
dev:App-Store-Deployment-Checklist.mdTesting
xcodebuild build— clean, no errorsxcodebuild test—ImageUploadProcessorTests10/10 passed;APIClientImageUploadTests20/21 passed (the one failure is a pre-existing, unrelated multipart field-name mismatch, not touched by this branch)Caveats
DocumentsViewupload test expecting multipart field"image"(actual:"file") is a known, separate bug — flagged but intentionally left out of scope for this work.devhistory not authored in this session; commit-by-commit detail for older work is limited to what the original commit messages describe.🤖 Generated with Claude Code