Recover mobile sign-in from stalled requests #767

Closed
opened 2026-08-13 19:49:29 +00:00 by timmy · 0 comments
Owner

Problem

The anonymous token and passkey sign-in requests in frontend/login.js await network responses without a deadline or an in-flight guard. A half-open mobile connection can leave the login UI stuck indefinitely, while repeated taps can create duplicate requests or passkey ceremonies. The authenticated request layer already has bounded recovery, but it is installed only after sign-in.

Vertical slice

  • Bound token submission and both passkey network phases with abortable deadlines.
  • Keep the user-driven WebAuthn ceremony outside the network deadline.
  • Permit only one sign-in attempt at a time and disable both controls while it is active.
  • Restore controls after timeout/failure while preserving rate-limit countdown behavior and shared-capture continuations.
  • Distinguish network timeout guidance from WebAuthn cancellation.

Acceptance tests

  • Stalled token, passkey-options, and passkey-verification requests abort and show retryable timeout guidance.
  • Repeated taps while active create one request/ceremony.
  • Controls recover after timeout or cancellation.
  • Successful shared-capture continuation and rate-limit countdown remain intact.

Discovered against origin/main at 9bd755f; no historical issue title or recent commit implements an anonymous login request deadline or single-flight sign-in.

## Problem The anonymous token and passkey sign-in requests in `frontend/login.js` await network responses without a deadline or an in-flight guard. A half-open mobile connection can leave the login UI stuck indefinitely, while repeated taps can create duplicate requests or passkey ceremonies. The authenticated request layer already has bounded recovery, but it is installed only after sign-in. ## Vertical slice - Bound token submission and both passkey network phases with abortable deadlines. - Keep the user-driven WebAuthn ceremony outside the network deadline. - Permit only one sign-in attempt at a time and disable both controls while it is active. - Restore controls after timeout/failure while preserving rate-limit countdown behavior and shared-capture continuations. - Distinguish network timeout guidance from WebAuthn cancellation. ## Acceptance tests - Stalled token, passkey-options, and passkey-verification requests abort and show retryable timeout guidance. - Repeated taps while active create one request/ceremony. - Controls recover after timeout or cancellation. - Successful shared-capture continuation and rate-limit countdown remain intact. Discovered against `origin/main` at `9bd755f`; no historical issue title or recent commit implements an anonymous login request deadline or single-flight sign-in.
timmy self-assigned this 2026-08-13 19:49:29 +00:00
timmy closed this issue 2026-08-13 19:55:00 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#767
No description provided.