mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-15 12:53:31 +08:00
Large screenshots were being treated like oversized text payloads, which pushed readable images through an aggressive resize/compression path before the model saw them. The image path now preserves images that already fit API byte and dimension limits, prefers lossless or high-quality compression when only bytes are too large, and only downscales by vision pixel budget when the image would exceed the Read token budget. Constraint: Fixes pasted/read image failures reported in #615 and #677 while preserving screenshot readability requested in #663 Rejected: Always resize to 2048px | would unnecessarily degrade screenshots that already fit provider limits Rejected: Continue estimating image budget from base64 text length | image blocks are billed/read as vision pixels, not text payload Confidence: high Scope-risk: moderate Directive: Do not lower fallback JPEG quality or long-edge limits without revalidating real screenshot OCR/vision tasks Tested: bun test src/utils/__tests__/imageResizer.test.ts src/server/__tests__/conversation-attachments.test.ts Tested: bun run check:server Tested: bun run check:coverage (changed-line coverage 95.25%; adapters/desktop coverage lanes failed from existing non-target issues) Tested: GPT-5.5 Read smoke on 1394x4404, 4096x2304, and 7900x900 images Not-tested: Real resize/re-encode branch in this source worktree because optional sharp/native image processor is not installed locally Related: #615 Related: #677 Related: #663