# Changelog

All notable changes to `garmin_varia_transcode.sh` are documented here.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

---

## [1.0.0] — 2026-05-04

Initial release.

### Added
- Batch HEVC transcoding with `hevc_videotoolbox`, `libx265`, or `libx264`
- Encoding modes: `hardware`, `auto`, `quality`, `compat`
- Default mode: `hardware` (hevc_videotoolbox on macOS)
- Recursive directory traversal (default on)
- Directory structure preservation at destination
- Per-file audio detection via ffprobe; AAC 128k output when audio present
- HEVC outputs tagged `hvc1` for Apple Photos / QuickTime compatibility
- `-map_metadata 0` and `-movflags +faststart`
- Source file timestamp preservation via `touch -r`
- `--move-source`: delete source only after codec + duration validation
- `--no-overwrite`: skip existing output files
- `--no-recursive`: restrict to top-level directory
- `--dry-run`: print actions without writing files
- `--verbose`: full per-operation logs and ffmpeg/ffprobe output
- `--crf`: override CRF value for software modes
- `--extensions`: configurable video extension list
- Auto single-file mode when `--source` is a file path
- Quiet default output: one progress line per file with elapsed seconds
- Summary line with counts and timing after each run
- JSON sidecar copy (preserves relative paths)
- `telemetry_manifest.json` placeholder written to destination
- Destination-inside-source guard (hard error)
- At-least-one-of `--source`/`--destination` requirement
- Fail-fast: encoding chain stops on first ffmpeg error
- Bash 3.2 compatible (macOS system bash)
