Log Safari first-tap login bug as a known bug with diagnosis
1.2.0:2's retryOnTransportError does not fix the mobile-Safari first-login failure (reproduced on 1.2.0:5: first tap errors, second works). Record the diagnosis and the gating next step (capture the first request's error code: -1005 -> client delayed retry; 502/503 -> Node keep-alive tuning) so a future session resumes from here. Correct the now-stale Current state line.
This commit is contained in:
@@ -2,6 +2,14 @@
|
||||
|
||||
Longer-term backlog. Near-term state + next steps live in `AGENTS.md` → Current state.
|
||||
|
||||
## Known bugs
|
||||
|
||||
- **Mobile-Safari first-login-tap fails ("An unexpected error occurred"); second tap works.** Reproduced on iPhone/iPad Safari against 1.2.0:5 (desktop Safari untested — user declined). The first Sign In tap fails, a second manual tap succeeds. **1.2.0:2's `retryOnTransportError` does NOT fix it.** Diagnosis so far: `LoginForm` only surfaces that error when *both* the initial action call and its in-tap retry throw, so the immediate retry isn't escaping the bad connection — only a fresh user-initiated tap does. Box app logs show no server-side error/500/reset around the attempt, so it's a transport-layer failure, not an app bug.
|
||||
- **Gating data (do this first):** capture the first failed request's error in Safari Web Inspector (iOS→Mac, Network/Console tab). The code picks the fix:
|
||||
- `-1005` "The network connection was lost" → client-side stale keep-alive socket. Fix = a *delayed* retry (let Safari tear down the dead socket before retrying), not the current instant one.
|
||||
- `502`/`503` → StartOS-proxy↔Node keep-alive mismatch (Node closing idle conns the proxy reuses). Fix = raise Node `keepAliveTimeout`/`headersTimeout` server-side; a client retry only masks it.
|
||||
- Files: `lib/retryAction.ts`, `app/auth/login/LoginForm.tsx`, `app/auth/signup/SignupForm.tsx`.
|
||||
|
||||
## AI quality
|
||||
|
||||
- Tiered prompt formatting (also the immediate next step): JSON-Schema output enforcement via Ollama `format` and OpenAI `response_format`; pipe-separated library rows; XML-tagged prompt sections; Ollama-only few-shot example; stable prefix first for prompt-cache hits.
|
||||
|
||||
Reference in New Issue
Block a user