You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Breaking:XMPValue.languageAlternative and XMPLanguageAlternative
retain every
ordered rdf:Alt item, its exact xml:lang tag, duplicate languages, and
empty values. The reader, writer, exporter, sidecar display, and embedded XMP
paths round-trip the lossless representation; the existing scalar langAlternative case remains the carrier for one x-default value. Clients
with an exhaustive switch over XMPValue must handle the new case.
IPTCXMPSynchronizationOptions and synchronization reports provide explicit
merge, replace, clear, title, and date-precision policies for standards-aware
IPTC-IIM ↔ XMP synchronization. The existing legacy synchronization methods
remain available unchanged.
PhotoMetadata provides an XMP-preferred, IIM/Exif-fallback projection that
retains every carrier candidate and reports disagreements. Canonical edits
can be applied with PhotoMetadataMutation without discarding the raw XMP
graph.
XMPStructurePatch and structured-array patching let callers update selected
XMP members while retaining unknown sibling fields. The typed IPTC Extension
and PLUS setters now use the same lossless merge behavior.
ImageMetadata.WriteOptions.FileCreationDatePolicy preserves a destination's
creation date by default and can explicitly update or assign it independently
of the modification-date policy.
MetadataWriteResult<Output> provides one source-compatible result contract
for image, video, audio, XMP sidecar, and single-file batch writes. The result
carries either serialized Data or the committed destination URL together
with non-fatal warnings.
serialized() and writeResult(to:options:) separate in-memory metadata
serialization from filesystem commits. Existing writeToData() and write(to:) entry points remain available as compatibility wrappers.
XMPSidecarRevision, XMPSidecarSnapshot, and XMPSidecar.update provide
content-revisioned sidecar mutations with stale-write detection, bounded
merge retries, serialized-packet validation, and an installed-state result.
Transactional and ordinary sidecar writes share a cross-process lock and the
existing filesystem write-options contract.
Per-format metadata capabilities describe read, direct-write, sidecar-only,
opaque-preservation, stripping, and unsupported behavior independently for
Exif, IPTC-IIM, XMP, Camera Raw, ICC, and C2PA.
semanticMetadata and preservationReport(comparedTo:) compare normalized
metadata meaning rather than XML prefixes/order, TIFF byte order/offsets, or
equivalent date and GPS spellings. Reports separate added, removed, changed,
unrepresentable, and opaque-preserved values.
Typed XMP GPS APIs parse decimal, directional decimal, DMS, and
degrees/decimal-minutes coordinates; retain original lexical values; validate
ranges and hemisphere conflicts; and emit stable XMP coordinate/rational
spellings. PhotoMetadata now retains typed XMP and Exif GPS candidates via PhotoMetadataValue.number; exhaustive switches over that enum must handle
the new case.
Changed
The image API implementation is split into focused reading, writing, editing,
extraction, sidecar, location, and format extensions. The public API remains
source compatible.
plus:ImageSupplier structured arrays serialize as the standard-required rdf:Seq rather than rdf:Bag.
Ambiguous TIFF byte signatures remain TIFF regardless of camera Make. A
proprietary TIFF-based RAW is classified from a known RAW filename extension
when reading from a URL, preventing rendered Sony/Olympus/Pentax TIFFs from
being incorrectly blocked by the RAW write guard.
Fixed
Release preflight notes are selected from the requested version's non-empty
changelog section instead of always reusing the 2.0.0 notes or requiring a
breaking-change entry in every future release.
Atomic image, video, audio, and sidecar writes explicitly restore the
destination's prior filesystem visibility. This prevents iCloud Drive and
similar providers from carrying a dot-prefixed staging file's hidden flag
onto the installed file.
Atomic and direct writes restore the selected file creation date after the
filesystem transaction.