Repository navigation
Releases: woss/exiftool
Releases · woss/exiftool
Release list
v0.7.1
v0.7.0
v0.6.0
Added
- Metadata writing surface: JPEG (ICC, JFIF, Ducky, comment, XMP, IPTC
append), PNG (tEXt/iTXt/zTXt, language-qualified text, ICC profile,
ancillary chunks, modification date, XMP delete), WebP (ICC profile,
XMP delete, EXIF preservation), GIF, EXV, PBM/PGM/PPM, and standalone
EXIF, ICC, and XMP writing. - CLI write workflows: tag copying (
tagsFromFilewith source-file
selectors, exclusions, same-file mappings), conditional write
filtering (boolean/regex/parenthesized conditions), output-path
templates with source-token expansion, collision counters, batch
writes to directories, stdout output, and-oXMP sidecars. - ExifTool-compatible write modes (
wm,wc,wg, and group-creating
variants) with CLI validation. - XMP list append/removal: Creator and Subject appends, IPTC Keywords,
Dublin Core list properties, first-match list-item removal, and empty
container cleanup after deletion. - PNG read parity: ICC profile parsing and compressed text chunks.
- Standalone XMP and PBM/PGM/PPM/PPM format writers.
Fixed
- JPEG ICC profile segment reassembly; PNG EXIF/ICC/text round-trip
preservation, GPS sign encoding, date/value normalization, and
late-chunk hoisting. - Permission preservation in atomic metadata writes; quiet-mode write
failure surfacing; unsupported CLI tag-write reporting.
Docs
- CLI and API write workflow documentation and metadata write parity
scope.
v0.5.2
Added
- PNG IHDR read parity:
FilterandInterlacewith reference PrintConv
strings,SRGBRenderingfrom the sRGB chunk. - PNG zTXt chunk support (zlib/deflate; Node parser layer).
- PNG tEXt/iTXt/zTXt keywords surface as bare capitalized tag names
(parameters→Parameters), yielding to EXIF/eXIf/XMP-derived keys. - XMP read parity: unknown-namespace properties surface with capitalized
local names (InvokeAIMetadata/Graph, DMIDigitalSourceType,
GPano panorama tags with integer typing);xmpMM:Historyflattens to
History*fields and the raw container is no longer emitted; XMP dates
withZsuffix normalize to EXIF-style rendering; TAG_REMAP entries
pinned forexif:UserComment, InvokeAI, DMI, GPano/IGPano. src/ai-parity.test.ts: reference-equal tests against real exiftool on
A1111 (tEXt parameters) and InvokeAI (XMP/DMI/History) fixtures.
Fixed
pngWriteromitted the IEND CRC — every PNG written by the library was
truncated by 4 bytes and unreadable by strict parsers.
v0.4.0
Added
- Generalized XMP property writer: arbitrary
group:propertykeys with value
shapes (scalar,rdf:Altx-default,rdf:Bag,rdf:Seq), per-namespace
xmlns declaration, upsert-or-replace semantics, and fresh-packet fallback
when a container has no XMP. - P0 descriptive tags on all write containers:
XMP-dc:Subject(keywords Bag,
replace-not-append),XMP-dc:Title,XMP-dc:Description
(Alt/x-default),XMP-xmp:MetadataDate. - XMP embedding per container: PNG (
iTXt, uncompressed, keyword
XML:com.adobe.xmp), WebP (XMPRIFF chunk + VP8X flag), plain TIFF
(IFD0 XMP/XMLPacket tag 0x02BC) — previously EXIF-only. - IPTC IIM writer for JPEG APP13: repeatable Keywords (record 2, dataset 25)
plusCodedCharacterSet(record 1, dataset 90) = UTF-8; merges into an
existing Photoshop IRB, replacing only the 8BIM 0x0404 block. ExifTool.writeSidecar(): Lightroom-readable.xmpsidecar for RAW/DNG
pickup, with read-merge of unknown properties and idempotent re-runs.ExifToolCore.writeBytes(in-memory path) supports all of the above.
Changed
- TIFF writing restricted to plain TIFF: camera RAW (CR2, NEF, ARW, …) and
files with SubIFDs (DNG raw data, previews, tiles) throw
UnsupportedFormatErrorinstead of risking corruption — use the sidecar
mode for those.
Fixed
- TIFF writer used a typo'd XMP tag id (0xBC01); the real XMP/XMLPacket tag
is 0x02BC. - Big-endian TIFF version check read bytes 2/3 swapped, rejecting valid
big-endian TIFF files.
Known limitation
- Adding EXIF entries to a JPEG can shift value areas in the rebuilt EXIF
block, breaking MakerNotes whose internal offsets are absolute from the
TIFF header (e.g. Olympus). XMP/IPTC-only writes never touch the EXIF
block. Reference exiftool fixes this with per-maker offset logic.
v0.3.1
Fixed
- JPEG parser no longer stamps a fabricated
ExifToolVersioninto parse
output (tool-injected, not file data; was JPEG-only and inconsistent with
the TIFF-RAW output).
Added
- Docs demo page: tag dots colored by metadata group, with legend.
v0.3.0
Added
- exiftool-compatible merge writes on JPEG: EXIF (IFD0/ExifIFD/GPS)
structural merge plusEXIF:Copyright,EXIF:Orientation,
XMP-dc:Rights,XMP-xmpRights:WebStatementwith fresh-XMP fallback. - Branding: custom aperture logo; human + AI credit in README and docs
footer.
v0.2.0
Added
- TIFF-family RAW container reading (TIFF, DNG, CR2, NEF, ARW, ORF, RW2/RWL,
PEF, ERF, DCR, SRW). - MakerNotes decoding for 6 core vendors; TIFF RAW read-parity gaps closed.
- ExifIFD/GPS IFD writing; C2PA docs sidebar.
- Measured performance numbers replacing placeholder claims; parity page.
Fixed
- Dropped accidental self-dependency; bumped deprecated
uuidvia override.
v0.1.3
Changed
- Version bump with JSR payload sync.
v0.1.2
Changed
- Excluded heavy/test directories from the JSR publish payload.