Skip to content

chore: release v0.11.0#130

Open
github-actions[bot] wants to merge 1 commit intomainfrom
release-plz-2026-01-26T00-21-53Z
Open

chore: release v0.11.0#130
github-actions[bot] wants to merge 1 commit intomainfrom
release-plz-2026-01-26T00-21-53Z

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Jan 26, 2026

🤖 New release

  • mp4-atom: 0.10.1 -> 0.11.0 (⚠ API breaking changes)

mp4-atom breaking changes

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field Hev1.lhvc in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/hevc/hev1.rs:8
  field Hvc1.lhvc in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/hevc/hvc1.rs:9
  field Av01.ccst in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/av01.rs:12
  field Uncv.taic in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/uncv.rs:14
  field Moov.ainf in /tmp/.tmpw0vnIC/mp4-atom/src/moov/mod.rs:23
  field Udta.rtng in /tmp/.tmpw0vnIC/mp4-atom/src/moov/udta/mod.rs:19
  field ItemInfoEntry.item_uri_type in /tmp/.tmpw0vnIC/mp4-atom/src/meta/iinf.rs:27
  field Trak.tref in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mod.rs:23
  field Minf.hmhd in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/mod.rs:26
  field Tfhd.duration_is_empty in /tmp/.tmpw0vnIC/mp4-atom/src/moof/traf/tfhd.rs:26
  field Tfhd.default_base_is_moof in /tmp/.tmpw0vnIC/mp4-atom/src/moof/traf/tfhd.rs:27

--- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] ---

Description:
A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_marked_non_exhaustive.ron

Failed in:
  enum Colr in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/colr.rs:6

--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant Colr::Ricc 1 -> 2 in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/colr.rs:18
  variant Colr::Prof 2 -> 3 in /tmp/.tmpw0vnIC/mp4-atom/src/moov/trak/mdia/minf/stbl/stsd/colr.rs:21
Changelog

0.11.0 - 2026-04-29

Added

  • add support for nclc colour type in colr box (#110)

Other

  • update related traits to support unsized reads and writes (#145)
  • minor cleanup in colr test code (#155)
  • make non-exhaustive, add unit tests (#149)
  • advance buffer cursor after reading prof/rICC profile (#153)
  • follow-up for self-contained flag fix, add tests (#150)
  • expose duration_is_empty and default_base_is_moof flags on Tfhd (#151)
  • Fix dref url self_contained flag bit position (#147)
  • implement LHVCDecoderConfigurationBox (lhvC) (#141)
  • Add Brad Hards to authors (#144)
  • implement 3GPP narrowband codec sample entry (samr) (#135)
  • fix up tests after recent commits (#140)
  • implement track reference (tref) box (#139)
  • implement Web Video Text Tracks (WebVTT) sample entry format (#131)
  • implement rtng box (#136)
  • implement ainf box. (#122)
  • add ccst support for AV1 (#133)
  • Add option for having taic box (#132)
  • implement hint media header (hmhd) box (#115)
  • Add support for "uri " infe boxes inside iinf (#123)


This PR was generated with release-plz.

@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch 3 times, most recently from ce56159 to 79f6b75 Compare January 28, 2026 13:41
@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch 8 times, most recently from 2516b0b to 640feca Compare February 25, 2026 08:58
@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch 2 times, most recently from c880f12 to 8f0cab8 Compare April 2, 2026 09:14
@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch 2 times, most recently from 0bc4a7d to 9543d94 Compare April 21, 2026 09:49
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
@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch 3 times, most recently from 3d9395d to 1271b04 Compare April 28, 2026 09:32
@github-actions github-actions Bot force-pushed the release-plz-2026-01-26T00-21-53Z branch from 1271b04 to 18c3ee1 Compare April 29, 2026 09:39
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.

0 participants