## Summary Make KOReader progress sync a one-click flow for common cases while keeping the existing manual mode available. ### Changes - Add a **Sync Behavior** setting: - **Smart sync** for new configurations - **Ask every time** for manual control - Preserve **Ask every time** when migrating an existing credential file that predates this setting. - In Smart mode: - upload local progress when no remote record exists; - show a short confirmation when already synced; - upload when local progress is further ahead; - apply remote progress when remote progress is further ahead. - Probe both KOReader document-matching hashes before making the Smart decision, while keeping uploads on the user's configured matching method. - Auto-return after successful Smart terminal states, with Back/Confirm still available. - Persist the setting alongside the current credential, matching-method, and send-metadata fields. - Document both behaviors in the user guide. ## Additional context This pairs well with #2189 (smart Wi-Fi auto-connect), but does not depend on it. It does not add background Wi-Fi or passive network detection; sync is still triggered by the user from the reader menu. Smart sync uses the furthest progress because CrossPoint does not currently persist local progress timestamps. Users who prefer explicit conflict resolution can select **Ask every time**. ## Verification - `git diff --check` - `platformio check --fail-on-defect low --fail-on-defect medium --fail-on-defect high` — no defects - `platformio run -e default` — firmware build successful - The original implementation was manually smoke-tested on an X4 device. --- ### AI Usage Did you use AI tools to help write this code? _**YES**_ AI tools were used to inspect the codebase, draft and review the implementation, resolve the rebase against current `develop`, and prepare the PR text. The resulting firmware was built locally. --------- Co-authored-by: Alexander Hoffer <git@alexanderhoffer.com> Co-authored-by: Alexander Hoffer <contact@alexanderhoffer.com>