Comfy-Org / Comfy-Org/Comfy-Desktop

93% of sign-in failures are a 30-minute silent timeout, not an error: stop showing an indefinite spinner

Open
#1,446 1 comment 0 reactions 1 assignee Claimed by @benceruleanlu View on GitHub
Dominant language
TypeScript
Stars
458
Forks
59
Avg merge
22h 18m
Merged PRs (30d)
45

Description

When the browser side of a Desktop sign-in goes quiet, Desktop's response is to keep polling silently until the 30-minute code TTL expires, then report a generic failure. For the user that is a half-hour spinner with no explanation and no way to act.

## Evidence

Of all Desktop login-code failures over the last 7 days:

| Time from sign-in start to failure | Failures | Share |
|---|---|---|
| under 10s | 2 | 0.1% |
| 10-60s | 46 | 1.3% |
| 1-5 min | 33 | 0.9% |
| 5-15 min | 6 | 0.2% |
| 15-25 min | 0 | 0.0% |
| **25-33 min (the TTL)** | **3,266** | **93.0%** |
| over 33 min | 160 | 4.6% |

Only 2.3% of failures are genuine fast errors. Everything else is us waiting out the clock. Essentially all of them are a 404 on the exchange, meaning the code was created and never redeemed.

## Why it matters beyond UX

This is also why the 8 August regression was invisible for so long. A failure mode that always takes 30 minutes and always reports the same generic error gives us no signal about which of several very different causes occurred: browser never opened, user walked away, approval declined, redeem 4xx, backend outage.

## Asks

1. Do not present an indefinite spinner. After a short grace period, move to a state that names what we are waiting for ("waiting for you to finish signing in in your browser") with a visible way out (re-open the browser link, copy the URL, cancel and retry).
2. Treat "no redemption after N minutes" as a distinct, reportable outcome rather than folding it into the same generic failure as a hard error. The failure event should distinguish timed-out from errored.
3. Consider a shorter client-side give-up than the full TTL, with an explicit retry, so the user is not blocked for 30 minutes on what is usually an unrecoverable attempt.

## Related

- #1356 introduced the 30-minute TTL that these failures cluster against
- The browser-side half of this is Comfy-Org/ComfyUI_frontend, where a declined approval currently sends no cancel signal at all

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.