Fixed
- Sync-only env vars no longer block non-sync subcommands.
Cli::validate()previously rejected any invocation where a non-sync subcommand (e.g.kei reset state) was combined with a sync-only top-level flag, but it checked the parsedSyncArgsstruct fields without knowing whether the value came from the CLI or from an environment variable. Because clap'senv = "..."attributes populate the same fields, settingKEI_DOWNLOAD_DIR,KEI_ALBUM,KEI_LIVE_PHOTO_MODE, or any other sync env var in Docker Compose caused commands likekei resetto error with "the following sync-only flags cannot be combined withkei reset". Now the validator inspectsclap::parser::ValueSourceto distinguish between CLI-provided and env-provided values: only explicitly typed flags are rejected. (#385) kei service runmissing from the validator allowlist.service runcarriesSyncArgsand legitimately merges top-level sync flags into the service worker, butvalidate()only allowedsyncandretry-failed. A top-level sync flag followed byservice runwas incorrectly rejected; now it passes. (#385)
Full changelog: CHANGELOG.md