Any failed token refresh signed you out and reloaded the sign-in page. A
dropped connection, a server restart or a laptop waking up lost the page
and anything typed into it, and signing in again landed on the
dashboard.
Only a refusal ends the session: 400, 401 or 403 from the token
endpoint (our server answers a spent or revoked refresh token, or a
locked account, with 400 invalid_grant).
Anything else keeps you signed in on the page: no answer, a 5xx,
rate limiting, or a proxy's error page. A note at the top says the
server can't be reached. The refresh is retried after 5, 10 and 20
seconds, then every minute, at once when the browser comes back
online, and on "Try now".
A request whose token hasn't run out still goes ahead while the
refresh waits, and a refresh with no answer no longer surfaces as a
401.
Back where you were: when the session does end, signing in again
returns to the same page (kept in sessionStorage for the one trip,
since the way out is a full page load).
New: src/services/auth/session.ts, src/stores/connectionStore.ts, src/components/layout/ConnectionBanner.tsx, with tests for each case
(12 of the 13 refresh/apiFetch tests fail against the old api.ts).
Typecheck, lint, i18n:check, all 684 tests, build and notice check pass
locally. 2 new strings, English only:connection.unreachable, connection.retry.
Any failed token refresh signed you out and reloaded the sign-in page. A
dropped connection, a server restart or a laptop waking up lost the page
and anything typed into it, and signing in again landed on the
dashboard.
- **Only a refusal ends the session:** 400, 401 or 403 from the token
endpoint (our server answers a spent or revoked refresh token, or a
locked account, with 400 `invalid_grant`).
- **Anything else keeps you signed in on the page:** no answer, a 5xx,
rate limiting, or a proxy's error page. A note at the top says the
server can't be reached. The refresh is retried after 5, 10 and 20
seconds, then every minute, at once when the browser comes back
online, and on "Try now".
- A request whose token hasn't run out still goes ahead while the
refresh waits, and a refresh with no answer no longer surfaces as a
401.
- **Back where you were:** when the session does end, signing in again
returns to the same page (kept in sessionStorage for the one trip,
since the way out is a full page load).
New: `src/services/auth/session.ts`, `src/stores/connectionStore.ts`,
`src/components/layout/ConnectionBanner.tsx`, with tests for each case
(12 of the 13 refresh/apiFetch tests fail against the old `api.ts`).
Typecheck, lint, i18n:check, all 684 tests, build and notice check pass
locally. **2 new strings, English only:** `connection.unreachable`,
`connection.retry`.
Any failed token refresh signed you out and reloaded the sign-in page: a
dropped connection, a server restart or a laptop waking up lost the page
and anything typed into it, and signing in again landed on the dashboard.
- Only a refusal from the token endpoint (400, 401, 403: the refresh
token is spent or revoked, or the account locked) ends the session.
- No answer, a 5xx, rate limiting or a proxy's error page keeps you
signed in on the page. A note says the server can't be reached; the
refresh is retried after 5, 10 and 20 seconds, then every minute, at
once when the browser comes back online, or on "Try now".
- A request with a token that hasn't run out still goes ahead while the
refresh waits, and a failed refresh no longer reads as a 401.
- When the session does end, signing in again comes back to the page
you were on.
2 new strings, English only.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Any failed token refresh signed you out and reloaded the sign-in page. A
dropped connection, a server restart or a laptop waking up lost the page
and anything typed into it, and signing in again landed on the
dashboard.
endpoint (our server answers a spent or revoked refresh token, or a
locked account, with 400
invalid_grant).rate limiting, or a proxy's error page. A note at the top says the
server can't be reached. The refresh is retried after 5, 10 and 20
seconds, then every minute, at once when the browser comes back
online, and on "Try now".
refresh waits, and a refresh with no answer no longer surfaces as a
401.
returns to the same page (kept in sessionStorage for the one trip,
since the way out is a full page load).
New:
src/services/auth/session.ts,src/stores/connectionStore.ts,src/components/layout/ConnectionBanner.tsx, with tests for each case(12 of the 13 refresh/apiFetch tests fail against the old
api.ts).Typecheck, lint, i18n:check, all 684 tests, build and notice check pass
locally. 2 new strings, English only:
connection.unreachable,connection.retry.