0c142f1f67
Added token_has_all_scopes() to ApiClient — reads stored token.json and checks if all requested scopes are present. If token exists but lacks calendar.readonly, the auth popup is shown instead of silently failing in the sync engine.