docs(website): demo mode step 4 built — DM19, DM20 (the app)
- DM19: the app shows a refusal as one snackbar with the server's sentence; lines that blame the role say the demo sentence; ErrorKind.DEMO_LOCKED for load screens. §3.1 rewritten to match. - DM20: the app shows the banner only; its strip names the site's sign-in page for the passwords (§6). - §10 step 4 built as Android-app#61. - android/PLAN.md §7: the demo's refusal and strip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -776,6 +776,11 @@ Mirrors the website's "degrade gracefully" invariant:
|
||||
shard as **offline**, keep the rest of the app usable.
|
||||
- **Site maintenance** (`/public/status` = maintenance) → show the maintenance page; public shard
|
||||
widgets may still render (they're not maintenance-gated server-side).
|
||||
- **The public demo's refusal** (`403` with `code: "DEMO_LOCKED"`, `../website/DEMO_MODE.md` §3.1) →
|
||||
one app-wide snackbar with the server's sentence, spotted by an interceptor on the main client;
|
||||
`HttpError` carries the body's `code`, `ErrorKind.DEMO_LOCKED` covers load screens (no Retry), and
|
||||
a screen whose `403` line blames the role says the demo sentence instead (DM19). Home shows the
|
||||
demo's strip from `/public/settings`' `demo` block (DM20).
|
||||
- **Offline caching is not a v1 requirement** (decided). The app assumes connectivity and shows clean
|
||||
loading/error/retry states; it does **not** ship a Room cache in v1. Cached read-only content can be
|
||||
added later without reworking the repository layer (its typed results already isolate the UI from the
|
||||
|
||||
Reference in New Issue
Block a user