Preserve HEIC/HEIF transparency by converting to PNG - #836
Conversation
qayshp
left a comment
There was a problem hiding this comment.
Self-review: the behavior and metadata paths are covered, with one integration-level follow-up noted inline.
Validation updateValidated on SIP-enabled arm64 macOS 26.5.2 with Node 20.11.1 and npm 10.2.4.
The smoke harness was not added to the committed test suite. The review follow-up for a repository fixture and macOS CI integration test therefore remains open. No messages were sent or received during validation. No screenshot is needed; format and alpha metadata provide stronger evidence for this change. |
|
Superseding the earlier workflow-status note: current head GitHub created the current-head workflow run, but it is |
Summary
sipshelper shared with the production file-system pathWhy
The attachment converter recognized HEIC, HEIF, and TIFF separately but sent every recognized image through a hard-coded JPEG path. That could discard alpha data in HEIC/HEIF images and made the resulting attachment metadata report JPEG unconditionally.
Behavior
HEIC and HEIF inputs now select PNG and
image/png; TIFF continues to select JPEG andimage/jpeg. Converted transfer names replace a matching source extension instead of accumulating extensions.Validation
Validated on current head
dc44e165on SIP-enabled arm64 macOS:npm run test:image-conversion --workspace @bluebubbles/server— 5/5 tests passedsipshelper and verified PNG format withhasAlpha: yesgit diff --checkpassedmacos-15image and current Node 24-basedactions/checkout@v6andactions/setup-node@v6, while installing the repository's required Node 20.11 runtime for the testGitHub created an Image Conversion run for the current head, but it is
action_requiredpending approval from an upstream maintainer because this is a fork pull request. No CI job has executed yet, so this is not presented as an observed CI pass.The broader server type-check still reaches the pre-existing unrelated
ScheduledService.ts:39NodeJS.Timer/clearIntervalerror.Fixes #787