chore: release v0.11.0#130
Open
github-actions[bot] wants to merge 1 commit intomainfrom
Open
Conversation
ce56159 to
79f6b75
Compare
2516b0b to
640feca
Compare
c880f12 to
8f0cab8
Compare
0bc4a7d to
9543d94
Compare
4 tasks
rhoopr
added a commit
to rhoopr/kei
that referenced
this pull request
Apr 26, 2026
…275) ## Summary - Pins `mp4-atom` to a git rev past upstream PR #123 so `infe` entries with `item_type = "uri "` decode (iOS 17+ HEICs embed these pointing at `tag:apple.com,2023:photos/<id>`). Closes #274. - Wraps HEIC writer failures in a typed `HeifError` enum (`Decode { offset, total, source }`, `UnparsableTail`, `MissingMeta`, `Encode { kind, source }`, `Io`) so logs carry byte-offset and atom-kind context instead of opaque anyhow strings. - Adds a regression test that builds a synthetic Apple-style HEIC with a `uri ` infe entry and round-trips it through `apply_metadata`. Pre-fix this hit `under decode: infe`. Builds on #271 (already merged), which fixed dispatch so HEIC bytes route to the in-tree HEIF writer. This PR fixes the parser side. ## Why pin instead of replace The upstream fix already exists. kixelated/mp4-atom#123 merged 2026-01-26 with a one-line addition (`item_uri_type: Option<String>`) and proper `uri ` handling in `decode_body_ext`/`encode_body_ext`. The blocker is kixelated/mp4-atom#130, the v0.11.0 release PR, which is open but unmerged. Surveyed alternatives: - `mp4`, `mp4parse`, `re_mp4`, `bento`, `bmff` - read-only or video-only; none support HEIC `meta`/`iinf`/`iloc` write. - `libheif-rs` - re-encodes the image on write, which would break kei's byte-identical `mdat` invariant. Also pulls libheif + libde265 + libx265 across 5 cross-compile targets. - Roll-your-own ISO-BMFF parser - 800-1200 lines for a problem the upstream patch already solves. Pin uses `rev = "d1e9e923571cbbb42c049aec7f53cd70c6f3d8ff"` (specific SHA, not a branch) so `cargo update` can't drift. Cargo.toml has a comment pointing at #130; switch back to a crates.io version when 0.11.0 ships. One source change required for the bump: kei's `ItemInfoEntry { ... }` literal in `heif.rs` adds `item_uri_type: None` for the kei-authored XMP `mime` item. ## Test plan - [x] `cargo build` clean against the pinned rev - [x] `cargo test download::` - 488 passed, 0 failed (includes `apply_metadata_succeeds_on_heic_with_uri_infe_item` and the variant-matching `HeifError` tests) - [x] `just gate` clean - fmt, clippy `-D warnings`, cli + behavioral tests, doc with `RUSTDOCFLAGS=-Dwarnings`, `cargo audit`, typos. The `paste 1.0.15` advisory is still allowed via `mp4-atom`'s transitive dep, same as before this PR. - [ ] Live verification: `kei sync --recent 200 --skip-videos` against the maintainer's library (the source of the original #274 reproduction). Pre-fix: spurious `Failed to write metadata` warnings on every iOS 17+ HEIC. Post-fix: clean log, XMP embedded on first pass. ## Files - `Cargo.toml` - pin with rationale comment - `Cargo.lock` - auto-bumped to the git rev - `src/download/heif.rs` - `HeifError` enum, `insert_xmp` returns `Result<(), HeifError>`, tests match on variants - `src/download/metadata.rs` - `apply_metadata_succeeds_on_heic_with_uri_infe_item` (~67 lines) - `CHANGELOG.md` - Fixed entry under [Unreleased] referencing #274
3d9395d to
1271b04
Compare
1271b04 to
18c3ee1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 New release
mp4-atom: 0.10.1 -> 0.11.0 (⚠ API breaking changes)⚠
mp4-atombreaking changesChangelog
This PR was generated with release-plz.