π Bug Fixes
- Native EXIF writes no longer shrink JPEGs or destroy their embedded preview thumbnail β The
imagedependency now points at the Xentraxx fork ofbrendan-duncan/image(pinned tomain, currently commit59e2bff), whoseinjectJpgExiffixes two byte-level defects: an offset bug dropped every segment between the SOI marker and the EXIF APP1 block (in particular the JFIF APP0 header), and the EXIF thumbnail payload (IFD1) was not carried through the rewrite, leaving danglingJPEGInterchangeFormat/-Lengthpointers. Together these made every natively-written JPEG a few KB smaller than its original and stripped the preview thumbnail some gallery apps use. With the fork, the JFIF header and thumbnail round-trip byte-for-byte. This resolves issue #132. - Numbered orphan album sidecars now resolve to the correct duplicate β When two same-named photos were in one album, Takeout numbers only the sidecar filenames (
pic.jpg.supplemental-metadata(1).json) while the JSONtitlefield keeps the plain original name for every copy. The issue #133 orphan-recovery lookup checkedtitlefirst, so a "(1)" sidecar attached its album membership to the plainpic.jpgin the year folder instead of thepic(1).jpgit actually references. The lookup now derives the numbered name from the full-lengthtitle(which, unlike the sidecar filename, survives Takeout's 51-character truncation) and tries it before the plain name. Because the "(N)" numbering is per-directory β an album'spic(1).jpgand a year folder'spic(1).jpgcan be different photos β a numbered match is only accepted when its year folder agrees with the sidecar'sphotoTakenTime; otherwise the lookup falls through to the plain name, and when the numbered twin exists nowhere the membership still falls back to the plain copy rather than being lost. Follow-up to issue #133. - Added Spanish translation of locked folder
π οΈ Maintenance
- New regression test suites for issues #132 and #133 β Issue #132 is guarded at two levels: unit tests (
test/unit/issue_132_exif_thumbnail_preservation_test.dart) drive the native date/GPS/combined writers inWriteExifAuxiliaryServiceagainst a JPEG fixture with a JFIF header and embedded EXIF thumbnail, asserting the thumbnail round-trips byte-for-byte, the JFIF header survives, no dangling thumbnail tags appear, and repeated writes never shrink the file; an e2e test (test/e2e/e2e_issue_132_exif_preservation_test.dart) validates the same guarantees through the full pipeline with--write-exif. Issue #133 gained e2e coverage (test/e2e/e2e_issue_133_orphan_recovery_test.dart) confirming every album mode materializes recovered orphan memberships on disk (shortcut/reverse-shortcutlinks,duplicate-copyreal copies,jsonentries inalbums-info.jsonwithout a stray file), plus unit tests for numbered-duplicate resolution, the cross-year veto, truncated sidecar names, multi-album recovery, case-insensitive matching, and the plain-copy fallback.
Full Changelog: v6.1.8...v6.1.9