Skip to content

Show sign-in progress step by step instead of one indefinite spinner - #7

Merged
wparad merged 1 commit into
mainfrom
claude/anti-abuse-hash-user-agent-aa8qql
Aug 15, 2026
Merged

Show sign-in progress step by step instead of one indefinite spinner#7
wparad merged 1 commit into
mainfrom
claude/anti-abuse-hash-user-agent-aa8qql

Conversation

@wparad

@wparad wparad commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • After returning from the Authress-hosted login page, the app just showed a spinner with no indication of what was happening — and no way to tell what state it was stuck in if something stalled. MainActivity also fire-and-forgets completeAuthenticationRequest's Result, so a failure there previously left the spinner running forever with nothing surfaced to the user.
  • AuthressLoginClient now exposes authStatus (Idle / OpeningBrowser / AwaitingRedirect / CompletingSignIn) and authError state flows, updated at every transition and on every failure path in authenticate() and completeAuthenticationRequest().
  • LoginScreen renders these as an ordered checklist — opening the sign-in page, waiting on the browser, completing sign-in, loading the mailbox — with the active step spinning, completed steps checked off, and the failure message (if any) shown directly instead of an indefinite spin.
  • If a step runs long, a "this is taking longer than expected" hint appears with a "Try again" action. Waiting on the user in the browser gets a much longer grace period than the Authress network calls, since that step is expected to take a while.

Test plan

  • Manual: tap Continue, complete sign-in in the browser, confirm each step checks off and the mailbox loads
  • Manual: force a failure (e.g. airplane mode) during sign-in and confirm the error message and step list surface instead of an indefinite spinner
  • Could not run the app in this environment (no Android SDK), so this is reviewed manually

🤖 Generated with Claude Code

https://claude.ai/code/session_01XRMBgZXVCEVwBuBWapy5J7


Generated by Claude Code

The login screen only ever showed a spinner from "tapped Continue" to
"mailbox loaded", with no feedback if any step along the way stalled or
failed silently — completeAuthenticationRequest's Result was discarded in
MainActivity, so a failure there just left the spinner running forever.

AuthressLoginClient now exposes authStatus (Idle/OpeningBrowser/
AwaitingRedirect/CompletingSignIn) and authError, updated at every
transition and on every failure path in authenticate() and
completeAuthenticationRequest(). LoginScreen renders these as a checklist
(opening the sign-in page, waiting on the browser, completing sign-in,
loading the mailbox) with the active step spinning and completed ones
checked off, surfaces the failure message when one occurs, and — if a step
runs long — shows a "this is taking longer than expected" hint with a
Try again action instead of leaving the user staring at a bare spinner.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XRMBgZXVCEVwBuBWapy5J7
@wparad
wparad merged commit fa6b90d into main Aug 15, 2026
2 checks passed
@wparad
wparad deleted the claude/anti-abuse-hash-user-agent-aa8qql branch August 15, 2026 12:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants