316ca3c941
A wrong Server URL can land on the host's static web UI, which answers 200 OK with an HTML page. connect() treated any 2xx from /users/auth (or /users/create) as a successful login, so the user was silently "connected" to an endpoint that can never sync: pulls report 0% and pushes fail with no error surfaced. This is the root of the symptom in #4692 (KOReader sync to a Grimmory/Booklore server failing on Android). Validate that the auth/registration response is an actual KOReader Sync JSON object (a real server replies e.g. {"authorized":"OK"}; an HTML page fails JSON parsing) and otherwise return a clear "Not a KOReader Sync server. Check the Server URL." message. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>