Added
--reconcile-every-n-cycles NCLI flag andKEI_RECONCILE_EVERY_N_CYCLESenv var. Mirror the existing[watch] reconcile_every_n_cyclesTOML key so docker and systemd users can enable the periodic local-vs-state reconciliation walk without editing a config file. Resolution order: CLI > TOML > unset. The walk is read-only and only meaningful in watch mode; single-shot runs ignore it. (#334)kei config setupcovers smart folders, bandwidth limit, filename excludes, XMP, and periodic reconcile. The "additional options" branch now prompts for[filters] smart_folders,[download] bandwidth_limit(validated live),[filters] filename_exclude,[download] embed_xmp/xmp_sidecar(under thexmpfeature), and[watch] reconcile_every_n_cycles. The Live Photos prompt is a 4-wayLivePhotoModeselect (both/image-only/video-only/skip) instead of a yes/no toggle. (#334)
Fixed
kei config setupno longer generates v0.13-deprecated TOML. The wizard was emitting[filters] library(singular),[filters] skip_live_photos, and[auth] cookie_directory, so every fresh config tripped deprecation warnings on its first sync. It now writes[filters] libraries = [...](array form),[photos] live_photo_mode = "skip", and top-leveldata_dir. The "specific albums" branch asks whether to enable the unfiled pass and always emitsunfiledexplicitly, so the v0.13 implicit-unfiled warning never fires for wizard-generated configs. Album input loops per line instead of comma-splitting (an album literally named "Foo, Inc." was being silently broken into two filters). The deprecated[metrics]section is gone from wizard output and replaced by[server]. Existing configs keep working unchanged. (#334)kei config setupvalidates user input at the prompt, not on the next sync. Numeric prompts (watch interval, threads, max retries, recent count, reconcile cycles) now reject values outside the runtime's accepted range and re-prompt instead of accepting bad input and silently failing later. Date inputs (skip_created_before/skip_created_after) parse with the sameparse_date_or_intervalthe runtime uses, so a typo like2024-13-99is caught immediately. The password prompt asks for a confirmation re-entry to catch typos. (#334)kei config setuprearranges the flow for new users. The data directory prompt moved from the "additional options" branch into Step 2 next to the photos directory, since it's a fundamental filesystem path, not an advanced setting. The TOML preview now ends with aWrite / Show again / Cancelselect (instead of a single yes/no confirm), so users on small terminals can re-read the generated config before approving. Album and smart-folder selection prompts now spell out case-sensitivity and, for smart folders, list the exact 10 names kei recognises (sourced fromicloud::photos::smart_foldersso the hint can't drift). The "load credentials" snippet at the end detects$SHELLand prints a fish-compatiblebash -c '... exec fish'wrapper for fish users instead of always emitting bash-onlyset -a; source .... (#334)kei config setup's "also include unfiled photos?" prompt now matches kei's runtime default. The post-album-selection prompt previously preselected "no" while the runtime's[filters].unfileddefault istrue, so a user who hit Enter at the prompt silently inverted what kei does without a config. The prompt now sources its default fromconfig::unfiled_default()so the wizard stays truthful to the runtime; users picking specific albums who don't want everything else can still pick "no" explicitly. (#334)
Full changelog: CHANGELOG.md