Skip to content

Releases: JordanAtDown/syno-media-organizer

v1.0.1

17 Mar 09:01

Choose a tag to compare

Added

  • GPG-signed SPK (syno_signature.asc): packages are now signed with the project's
    GPG key so they appear and can be installed directly from DSM Package Center via the
    custom package source without manual .spk download.
  • docs/packages.json: added keyrings field containing the GPG public key — DSM
    imports it automatically when the package source is added.

Changed

  • release.yml: GPG private key (stored as GPG_PRIVATE_KEY GitHub secret) is
    imported at build time and used to sign the SPK before publishing the GitHub Release.
    SHA256 and MD5 are recomputed after signing.

v1.0.0

17 Mar 08:13

Choose a tag to compare

Added

  • GitHub Pages package source: the SPK is now installable and auto-updatable directly from
    DSM Package Center by adding the following custom source URL:
    https://jordanatdown.github.io/syno-media-organizer/packages.json
  • docs/packages.json: package index served via GitHub Pages — updated automatically by
    scripts/release.sh on every release.
  • scripts/release.sh now updates docs/packages.json (version, SPK download link,
    changelog excerpt) as part of the release commit.

v0.2.3

16 Mar 15:14

Choose a tag to compare

Added

  • Persistent no-date cache (no_date_cache.json, stored next to config.toml): files
    that fail capture-date extraction are remembered across scan cycles and silently skipped
    until their modification time changes or the TTL expires. Previously, the same files
    generated a WARN log on every 30-second scan cycle.
  • New global config options:
    • no_date_cache_enabled (default true): set to false to disable the cache and
      always re-scan every file.
    • no_date_cache_ttl_days (default 0 = never expire): set e.g. 30 to retry files
      without metadata once a month regardless of mtime.
  • Cache is invalidated automatically when a file's mtime changes (e.g. EXIF added via
    exiftool), so modified files are always re-processed without manual intervention.
  • postuninst() hook in SPK installer: deletes no_date_cache.json on package
    uninstall while preserving the user's config.toml.

Changed

  • processor::process_file() now returns Err(ProcessorError::CaptureDataNotFound)
    instead of Ok(()) when no capture date is found. The watcher emits the WARN log
    once (on first discovery) and then silently skips the file via the cache.

v0.2.2

16 Mar 14:24

Choose a tag to compare

Fixed

  • Files inside Synology DSM auto-generated directories (@eaDir, @SynoEAStream, @Recycle,
    #recycle, @tmp) are now silently ignored during scanning. Previously, the watcher processed
    @eaDir/*/SYNOPHOTO_FILM_M.mp4 (Synology video thumbnails), which had mvhd.creation_time = 0
    and were incorrectly moved to output/1970/01/.
  • mvhd.creation_time = 0 (unset field in synthetic/encoder-generated MP4 files) now returns
    NoDateTimeOriginal instead of producing a 1970-01-01 date.

Added

  • New per-folder config option excluded_dirs (Vec<String>): list of directory names to skip
    during scanning, matched against every component of the file path. Defaults to
    ["@eaDir", "@SynoEAStream", "@Recycle", "#recycle", "@tmp"]. Fully customizable — see
    config.example.toml for the complete list of Synology DSM directories.

v0.2.1

16 Mar 14:03

Choose a tag to compare

Fixed

  • QuickTime/MOV files from iPhone (and other Apple devices) are now parsed correctly.
    The mp4 = "0.14" crate failed on Apple-specific trak sub-boxes (tapt, clef,
    prof, enof) which are valid QuickTime extensions but not part of the MPEG-4 spec.
    Replaced with a minimal manual ISOBMFF parser that reads only moov → mvhd, skipping
    all other boxes. Works for both QuickTime (qt brand) and MPEG-4 (isom) files.

Changed

  • Removed mp4 = "0.14" dependency — no longer needed.

Added

  • Integration test fixture tests/fixtures/sample_iphone.mov: header-only extract
    (ftyp + moov, 4.7 KB) from a real iPhone XS .mov file, used to guard against
    regressions on Apple-specific QuickTime box structures.

v0.1.22

15 Mar 21:10

Choose a tag to compare

Changed

  • Date extraction now requires the DateTimeOriginal EXIF tag exclusively.
    Files without this tag (including MP4/MOV videos and JPEGs with no EXIF) are
    silently skipped with a warning log. The previous fallback chain
    (DateTimeDigitizedDateTime → mtime) has been removed to avoid
    organizing files under an incorrect date.