feat: auto-compress clipboard images to avoid API size limits#6455
feat: auto-compress clipboard images to avoid API size limits#6455noah79 wants to merge 1 commit intoanomalyco:devfrom
Conversation
Screenshots pasted from clipboard can exceed Claude's 5MB limit. This adds automatic image compression using sharp: - New Image utility with compress/resize/optimize functions - Clipboard reads now auto-compress images >4MB - File pastes also get optimized before upload - Transparent images stay PNG/WebP, opaque convert to JPEG - Quality reduced iteratively until under 4MB threshold - Includes comprehensive test suite (23 tests)
|
Hey @noah79! I tested this PR and it's looking solid. Here's what I found: Test Results
Merge StatusThe PR has a minor conflict with
To get this mergedCould you rebase onto the latest git fetch origin dev
git rebase origin/dev
bun install # regenerates bun.lock
bun test test/util/image.test.ts # verify tests still pass
git push --force-with-leasereally like this |
00637c0 to
71e0ba2
Compare
f1ae801 to
08fa7f7
Compare
|
Hey @noah79 — heads up, I opened #12069 which addresses the same problem (images exceeding Anthropic's dimension/size limits). My PR also covers the file read tool path ( Noticed this PR has been waiting on a rebase since Jan 12. If you're still interested in driving this, happy to close mine in favor of yours if you add the |
|
Closing this pull request because it has had no updates for more than 60 days. If you plan to continue working on it, feel free to reopen or open a new PR. |
|
Reopened as #21371 |
Summary
Screenshots pasted from clipboard can exceed Claude's 5MB API limit, causing upload failures. This PR adds automatic image compression using
sharp.Changes
New utility:
packages/opencode/src/util/image.tsoptimizeForUpload()- main function that compresses images to <4MBIntegration: Modified clipboard handling in
clipboard.tsandprompt/index.tsxto automatically compress pasted imagesTests: 23 unit tests covering compression, resizing, format detection, and edge cases
Testing
All 23 tests pass.