mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-27 13:29:15 +07:00
* 🐛 fix: compress uploaded images to max 1920px before sending to API Anthropic API rejects images exceeding 2000px in multi-image requests. Compress images during upload to stay within limits while preserving original aspect ratio and format (no webp conversion). Fixes LOBE-6315 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: skip canvas compression for GIF and SVG images Canvas serialization flattens animated GIFs and rasterizes SVGs. Restrict compression to safe raster formats: JPEG, PNG, WebP. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: always compress images to PNG to avoid MIME mismatch canvas.toDataURL with original file type can produce content that doesn't match the declared MIME type, causing Anthropic API errors. Always output PNG which is universally supported and consistent. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: progressively shrink images to stay under 5MB API limit If compressed PNG still exceeds 5MB, progressively reduce dimensions by 20% until it fits. Also triggers compression for small-dimension images that exceed 5MB file size. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ♻️ refactor: extract compressImageFile to utils and add comprehensive tests Move compressImageFile, COMPRESSIBLE_IMAGE_TYPES, and constants to @lobechat/utils/compressImage for reusability and testability. Add tests for: dimension compression, file size limit, format filtering, error handling, and progressive shrinking. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>