Repository navigation
Release v1.2.0
✨ What’s New
- Safe, all-or-nothing sorting: Tooka now plans every step before touching a file. If anything would go wrong, nothing changes and you get a list of the problems. If something fails during the sort, or you press Ctrl+C, everything is undone.
- Never overwrites files: in earlier versions, a file with the same name at the destination could be silently replaced (on Linux and macOS).
- New
on_conflictrule setting:abort(default),skiporrename(report (1).pdf). - New
tooka recovercommand: undoes a sort that was interrupted by a crash, a killed process or a power loss. - Moves to another drive or partition now work. The original is only removed once the copy is safely on disk.
{{path}}placeholder forexecuteactions: passes the file's final location to your command.- EXIF in rename templates: any EXIF field can be used, e.g.
{{metadata.EXIF:Model}}. - More reliable monitoring daemon: one daemon at a time, a clean stop on all platforms (an interrupted sort is undone), and no interference with manual sorts.
- New documentation in the
docsfolder, including a complete rule reference. - Fixed:
- EXIF
metadataconditions never matched. - The
date:filter didn't format EXIF dates. any: truematched every file.- Invalid regular expressions or globs silently matched nothing.
- Files already in a destination inside the source folder were sorted again on every run.
- EXIF
- Switched YAML handling to the maintained serde-saphyr library, with clearer error messages for invalid rule files.
- Tests now run on Linux, Windows and macOS for every change.
⚠️ Breaking Changes
- Conflicts stop the sort by default. If a destination already exists, nothing is changed and Tooka asks you to resolve it. Add
on_conflict: skiporon_conflict: renameto keep the old "carry on" style. deletewithouttrashnow moves files to the trash instead of deleting them permanently. Writetrash: falsefor permanent deletion. Rules already added withtooka addkeep their stored setting.- Stricter rule validation:
deletemust be the last action,executemust come aftermove/copy/rename, and invalid patterns or dates are rejected.tooka validatenow always runs these checks;--deepis no longer needed. - Rules may match differently: rules using
any: truenow match fewer files (only those meeting a condition), and rules with EXIFmetadataconditions now match photos they previously missed. Check withtooka sort --dry-run. tooka templateandtooka export --outputno longer overwrite existing files.- Building from source or
cargo installnow requires Rust 1.89 or later.
📝 Additional Notes
- Your existing configuration, rules and monitored folders keep working. On macOS and Windows, the monitoring settings move to the standard config folder automatically.
- Recommended after upgrading: run
tooka sort --dry-runonce to review what your rules do now.
🔗 Full Changelog: View Changelog
✅ Attestations: View Attestations