diff --git a/CLAUDE.md b/CLAUDE.md index da7357f7..ae1732bf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -103,7 +103,7 @@ CQRS, a repository/DI framework, a router library, a generic CRUD-router factory | Admin knob storage | `sysconfig` (values) | env / `app_state` / a table of its own (the job intervals had one) | | Job status word | the `downloads/status.py` StrEnum | loose `"canceled"`/`"cancelled"` literals | | Current time | inline `datetime.now(timezone.utc)` | new `now_utc`/`_now` helpers | -| FE per-account state | `usePref` | raw `readAccount`/`writeAccount` or bespoke hooks | +| FE browser storage | a key in `storage.ts` with its kind (contract-held): a `pref` through `usePref` (the server's, follows the account); `device` / `view` / `cache` this browser's; `public` kept for the /watch page | a `"siftlode.x"` literal; a preference kept only in `localStorage` (it stays on one device) | | FE keyboard shortcut | a row in `lib/keymap.ts` + `dispatch()` | a private `keydown` listener with its own key literals | | FE list/grid keys | `NavGrid`/`keyboardNav` + `navItemAttrs` + `data-nav-open` | a private arrow-key / roving-tabindex handler | | FE view push (history) | `rememberNavPosition()` right before `history.pushState` | a push that forgets: Back strands focus on `` | diff --git a/docs/self-hosting.md b/docs/self-hosting.md index cb578f37..123390ea 100644 --- a/docs/self-hosting.md +++ b/docs/self-hosting.md @@ -65,6 +65,11 @@ the server logs) can run setup. Then click through: That's it. You can change any of the optional settings later under the admin **Configuration** page. +> **Set a password even if you sign in with Google** (Settings → Account → Password). If Google +> sign-in stops working — the client secret rotated, the consent revoked, Google down — email and +> password still let you in. An account that only ever used Google is otherwise locked out until an +> admin creates a set-password link for it (Users). + > The setup wizard only exists until you finish it. After that, the setup routes are disabled and > the token is invalidated — there's no setup surface left on a configured instance. diff --git a/frontend/src/i18n/locales/en/settings.json b/frontend/src/i18n/locales/en/settings.json index 0475ae82..dc75cb56 100644 --- a/frontend/src/i18n/locales/en/settings.json +++ b/frontend/src/i18n/locales/en/settings.json @@ -32,7 +32,7 @@ "backgroundImageHint": "Show a subtle per-scheme backdrop image behind the app so the glass surfaces have something to refract. Off = flat colour.", "backgroundFade": "Image fade", "performanceMode": "Performance mode", - "performanceModeHint": "Turns off the translucent glass blur and soft shadows for snappier rendering on slower machines.", + "performanceModeHint": "Turns off the translucent glass blur and soft shadows for snappier rendering on slower machines. On this device only.", "showHints": "Show hints", "showHintsHint": "These little hover explanations. Turn them off once you know your way around.", "railLabels": "Labels in the side menu", diff --git a/frontend/src/i18n/locales/hu/settings.json b/frontend/src/i18n/locales/hu/settings.json index 767c6174..62c9e170 100644 --- a/frontend/src/i18n/locales/hu/settings.json +++ b/frontend/src/i18n/locales/hu/settings.json @@ -32,7 +32,7 @@ "backgroundImageHint": "Halvány, sémánkénti háttérkép az app mögött, hogy az üveges felületeknek legyen mit megtörniük. Kikapcsolva sima szín.", "backgroundFade": "Kép elhalványítása", "performanceMode": "Teljesítmény mód", - "performanceModeHint": "Kikapcsolja az áttetsző üvegelmosást és a lágy árnyékokat a gyorsabb megjelenítésért lassabb gépeken.", + "performanceModeHint": "Kikapcsolja az áttetsző üvegelmosást és a lágy árnyékokat a gyorsabb megjelenítésért lassabb gépeken. Csak ezen az eszközön.", "showHints": "Tippek megjelenítése", "showHintsHint": "Ezek a kis lebegő magyarázatok. Kapcsold ki őket, ha már kiismerted magad.", "railLabels": "Feliratok az oldalsó menüben",