Fixed
- Failed and pending retry rows now resolve cleanly when the expected same-size file is already on disk. kei marks the row downloaded with a fresh local SHA-256 instead of looping it back to failed after the on-disk skip, and backfills missing metadata hashes for downloaded rows that use that path. (#505)
- Incremental sync no longer falls back to full enumeration just because inactive album or smart-folder path templates differ during an unfiled-only run. Failed or pending retry state still forces full enumeration, but kei now logs that reason explicitly. (#505)
- Old malformed Windows default data directories such as
C:\Users\name.config\keiare repaired toC:\Users\name\.config\keiat runtime. Setup, migration, credential storage, and service purge paths now use the same default~/.config/keiconstruction. (#505) - Media downloads with valid bytes but a mismatched extension now warn and save instead of failing the asset. Positive bad-content signals such as empty files, HTML or JSON error bodies, rejected content types, and size mismatches still fail before promotion. (#508)
Full changelog: CHANGELOG.md