Fixed
- Ghost asset loop on filter / album-scope changes. Assets the DB knew about but the current sync didn't re-enumerate (filter excluded, album scope changed, upstream record deleted) were promoted to
failedat sync end.prepare_for_retrythen reset them topendingon the next sync, and the cycle repeated.kei status --failedfilled withNot resolved during syncentries that weren't failures.promote_pending_to_failednow promotes only pending assets the producer dispatched this sync (last_seen_at >= sync_started_at) that the consumer never finalized. Filtered or out-of-scope assets keep their stalelast_seen_atand are left alone. (#211)
Added
kei status --pendingand--downloaded. Parallel to the existing--failedflag, these list assets in the requested state with filename, ID, and last-seen time (pending) or local path (downloaded). (#211)
Full changelog: CHANGELOG.md