Skip to content

✨[Feat] Sprint 6 PNG Container Parser and Cleaner - #7

Merged
maruson08 merged 4 commits into
mainfrom
feat/sprint-6-png-container-cleaner
Aug 25, 2026
Merged

✨[Feat] Sprint 6 PNG Container Parser and Cleaner#7
maruson08 merged 4 commits into
mainfrom
feat/sprint-6-png-container-cleaner

Conversation

@maruson08

Copy link
Copy Markdown
Member

Summary

  • add bounded PNG signature/chunk traversal with big-endian lengths, chunk limits, IEND/trailing handling, and compact dependency-free CRC-32 validation
  • classify text, exact XMP iTXt, eXIf, iCCP, tIME, rendering/color, APNG, image, and unknown chunks
  • decode PNG eXIf through the existing shared TIFF/EXIF core using the exact chunk-data view as TIFF byte zero
  • add deterministic single-allocation PNG Privacy Clean and structured verification
  • preserve iCCP, rendering/color chunks, IDAT, APNG structure, unknown/critical chunks, retained CRCs, ordering, and trailing bytes
  • never decompress zTXt, compressed iTXt, iCCP, IDAT, or APNG payloads

Test approach

  • one reusable CRC-correct PNG builder and one canonical cleaner fixture
  • table-driven malformed structural cases
  • exact retained-output comparison covers multiple IDAT, APNG, CRC bytes, unknown chunks, ICC, and trailing data
  • offset-base, malformed eXIf removal, idempotency, determinism, input immutability, and exact subview regressions
  • replaced two obsolete tests that treated PNG as unsupported

Validation

  • format: pass
  • lint: pass
  • typecheck: pass
  • tests: 206 passed in 21 files (Vitest 2.20s)
  • build: pass
  • package dry run: 48.5 kB packed / 251.8 kB unpacked
  • npm audit: 0 vulnerabilities
  • runtime dependencies: 0

@maruson08
maruson08 merged commit 67a6c7f into main Aug 25, 2026
1 check passed
@maruson08
maruson08 deleted the feat/sprint-6-png-container-cleaner branch August 25, 2026 06:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant