Strip private metadata from mobile photo evidence #950

Merged
timmy merged 1 commits from timmy/949-strip-photo-metadata into main 2026-08-16 07:58:42 +00:00
Owner

Closes #949

Re-encodes every newly selected JPEG, PNG, and WebP through the bounded canvas path before preview, draft/outbox persistence, or upload. This removes embedded EXIF/GPS/device metadata while preserving filenames, MIME types, visible pixels, and existing byte/pixel limits. Decode or encode failure remains fail-closed.

TDD proof:

  • RED: bounded-image sanitizer test returned the original object with embedded metadata and zero canvas draws.
  • GREEN: pytest -q tests/test_issue_attachment_ui.py tests/test_service_worker.py — 95 passed.
  • Full suite: pytest -q — 1807 passed, 1 skipped.
Closes #949 Re-encodes every newly selected JPEG, PNG, and WebP through the bounded canvas path before preview, draft/outbox persistence, or upload. This removes embedded EXIF/GPS/device metadata while preserving filenames, MIME types, visible pixels, and existing byte/pixel limits. Decode or encode failure remains fail-closed. TDD proof: - RED: bounded-image sanitizer test returned the original object with embedded metadata and zero canvas draws. - GREEN: `pytest -q tests/test_issue_attachment_ui.py tests/test_service_worker.py` — 95 passed. - Full suite: `pytest -q` — 1807 passed, 1 skipped.
timmy added 1 commit 2026-08-16 07:55:20 +00:00
feat: strip metadata from photo evidence (Closes #949)
All checks were successful
CI / lint (pull_request) Successful in 1m58s
CI / build-release (pull_request) Successful in 5s
CI / browser-journey (pull_request) Successful in 57s
CI / release-candidate (pull_request) Has been skipped
a8e931f306
timmy merged commit eac5342fa5 into main 2026-08-16 07:58:42 +00:00
timmy deleted branch timmy/949-strip-photo-metadata 2026-08-16 07:58:42 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#950
No description provided.