SnapOtter
ac8c585beb
fix: percent-encode X-File-Results header to support non-ASCII filenames
...
The X-File-Results header contained raw JSON with non-ASCII characters
from filenames (Chinese, Japanese, etc.), violating RFC 7230. Node.js
threw ERR_INVALID_CHAR on writeHead(). Fixed by wrapping the JSON in
encodeURIComponent() on the backend and decodeURIComponent() on the
frontend, ensuring only ASCII goes into the header while preserving
the original filenames after decoding.
Closes #133
2026-05-12 23:19:20 +08:00
SnapOtter
733ebe8010
test: major coverage expansion — 18 new test files, ~830 new tests
...
Unit tests: 1354 → 1781 (+427)
- 11 new AI bridge module tests (packages/ai/ from 2/13 → 13/13 files)
- files-page-store (0% → full), pdf-to-image-store, features-store expanded
- saturation and edit-metadata image-engine operations
- analytics route, features route, web analytics lib, api-extended
Integration tests: ~2070 → 2320 (+250)
- 31 integration files expanded with branch-coverage-targeted tests
- progress.ts SSE endpoints (28% → comprehensive, +18 tests)
- gif-tools all modes (+18), pdf-to-image format variants (+13)
- Cross-format matrix expanded to 17 tools × 17 formats (467 tests)
- Adversarial: concurrent, memory pressure, unicode filenames, pipeline limits
E2E-Docker: +1020 lines across 6 spec files
- Info, colors, sharpening, base64, QR read, JXL/ICO/SVG formats
- Strip-metadata, image-enhancement, content-aware-resize expanded
- Batch pipelines, multi-format batches, HEIC input coverage
2026-04-26 12:03:08 +08:00
SnapOtter
06b12f19d2
test: major coverage expansion — 18 new test files, ~750 new tests
...
Integration tests for all 13 previously untested AI tool routes:
- blur-faces, colorize, enhance-faces, erase-object, noise-removal
- ocr, passport-photo, red-eye-removal, remove-background
- restore-photo, smart-crop, upscale
Dedicated integration tests for core Sharp tools:
- resize (17 tests), crop (17 tests), rotate (17 tests)
Adversarial and edge case expansion (60 tests):
- Zero-byte files, corrupted headers, unicode filenames
- Concurrent stress, injection attempts, batch/pipeline edge cases
Unit tests for web frontend:
- tool-registry coverage, image-preview + download edge cases
2026-04-25 21:53:13 +08:00