App logo upload — vibe.co flow, real S3
Same three wire steps as the live site:
POST /graphql RequestAssetUpload
→
PUT <presigned url>
→
GET <cdnUrl>
. Client validation mirrors the real page: 112–500 px, jpeg/png/gif/webp/avif.
Choose File
or drag an image here
112×112 … 500×500 px
Upload
// wire log