---
title: "Screens"
description: "Stage 3: every screen with its ID, states, flows and stage. The contract of what exists."
source: "design/lofi/screens.md"
---

> Part of [Brand and design](/design/llms.txt). Every page: [llms.txt](/llms.txt).

# Screens: Shuke

> Generated by `botgumi-design index` from `../screens.json`. Edit that file, not this page.

Every screen, its states and flows (botgumi ADR-0004, ADR-0006). A screen that is not in this list is not built.

Prototype: [screens/index.html](/design/gallery/index.html)

## Screens

Stage: `lofi`, then `hifi` when its hi-fi boards are drawn, then `approved` with its gate issue.

| ID | Screen | States | Flows | Stage | Gate |
|---|---|---|---|---|---|
| S01 | [Onboarding · Welcome](/design/hifi/s01/index.md) (`onboarding/welcome`) | default, loading, empty, error, offline | F1 | hifi |  |
| S02 | [Onboarding · Practice language](/design/hifi/s02/index.md) (`onboarding/language`) | selected, loading, empty, error, offline | F1 | hifi |  |
| S03 | [Onboarding · Goal](/design/hifi/s03/index.md) (`onboarding/goal`) | default, selected, loading, empty, error, offline | F1 | hifi |  |
| S04 | [Onboarding · Scenario + topics](/design/hifi/s04/index.md) (`onboarding/scenario`) | default, selected, loading, empty, error, offline | F1 | hifi |  |
| S05 | [Onboarding · Self-assessed level](/design/hifi/s05/index.md) (`onboarding/self-level`) | default, selected, loading, empty, error, offline | F1 | hifi |  |
| S06 | [Onboarding · Weekly days + reminder time](/design/hifi/s06/index.md) (`onboarding/commitment`) | default, selected, loading, empty, error, offline | F1 | hifi |  |
| S07 | [Onboarding · Notification priming](/design/hifi/s07/index.md) (`onboarding/notification-priming`) | default, loading, empty, error, offline | F1 | hifi |  |
| S08 | [Diagnostic · Diagnostic · intro](/design/hifi/s08/index.md) (`diagnostic/diag-intro`) | default, loading, empty, error, offline | F1 | hifi |  |
| S09 | [Diagnostic · Diagnostic · read](/design/hifi/s09/index.md) (`diagnostic/diag-read`) | normal, loading, empty, error, offline | F1 | hifi |  |
| S10 | [Diagnostic · Mic purpose sheet (pre-permission)](/design/hifi/s10/index.md) (`diagnostic/mic-purpose`) | sheet, loading, empty, error, offline | F1, F5 | hifi |  |
| S11 | [Diagnostic · Diagnostic · retell](/design/hifi/s11/index.md) (`diagnostic/diag-record`) | idle, recording, paused, autostop, too-short, permission-denied, loading, empty, error, offline | F1 | hifi |  |
| S12 | [Diagnostic · Diagnostic · processing](/design/hifi/s12/index.md) (`diagnostic/diag-processing`) | uploading, transcribing, assessing, failed, unreliable, loading, empty, error, offline | F1 | hifi |  |
| S13 | [Diagnostic · Diagnostic result · animated reveal](/design/hifi/s13/index.md) (`diagnostic/diag-result`) | reveal, loading, empty, error, offline | F1 | hifi |  |
| S14 | [Plan · 14-day plan](/design/hifi/s14/index.md) (`plan/plan`) | default, loading, empty, error, offline | F1 | hifi |  |
| S15 | [Paywall · Paywall](/design/hifi/s15/index.md) (`paywall/paywall`) | default, loading-products, purchasing, purchase-failed, restored, expired-return, loading, empty, error, offline | F1, F7 | hifi |  |
| S16 | [Home · Home](/design/hifi/s16/index.md) (`home/home`) | first-time, normal, in-progress, completed, streak-risk, offline, no-quest, topic-empty, loading, error, empty | F1, F2, F4 | hifi |  |
| S17 | [Library · Library](/design/hifi/s17/index.md) (`library/library`) | loading, list, language-en, filtered, filter-empty, error, empty, offline | F3 | hifi |  |
| S18 | [Read · Read](/design/hifi/s18/index.md) (`read/read`) | normal, long-scroll, dynamic-type-xl, loading, empty, error, offline | F1, F2, F4 | hifi |  |
| S19 | [Record · Retell · round 1](/design/hifi/s19/index.md) (`record/record`) | idle, recording, paused, autostop, too-short, permission-denied, interrupted, loading, empty, error, offline | F2, F4, F5 | hifi |  |
| S20 | [Processing · Processing](/design/hifi/s20/index.md) (`processing/processing`) | uploading, transcribing, assessing, failed, unreliable, long-wait, offline, loading, empty, error | F2, F4, F6 | hifi |  |
| S21 | [Feedback · Feedback](/design/hifi/s21/index.md) (`feedback/feedback`) | full, low-confidence, achieved, playback, exemplar-pending, exemplar-failed, loading, empty, error, offline | F2 | hifi |  |
| S22 | [Compress · Second take · round 2](/design/hifi/s22/index.md) (`compress/compress`) | idle, recording, paused, autostop, too-short, permission-denied, interrupted, loading, empty, error, offline | F2 | hifi |  |
| S23 | [Complete · Complete](/design/hifi/s23/index.md) (`complete/complete`) | improved, same, shorter-lost, level-up, achievement, replayed, loading, empty, error, offline | F2, F4 | hifi |  |
| S24 | [Growth · Growth](/design/hifi/s24/index.md) (`growth/growth`) | empty, baseline, ready, gap, loading, error, offline | F2 | hifi |  |
| S25 | [Profile · Me · anonymous user](/design/hifi/s25/index.md) (`profile/profile`) | normal, loading, empty, error, offline |  | hifi |  |
| S26 | [Profile · This week's quests](/design/hifi/s26/index.md) (`profile/weekly-quests`) | default, loading, empty, error, offline |  | hifi |  |
| S27 | [Profile · Settings](/design/hifi/s27/index.md) (`profile/settings`) | default, language, delete-data-confirm, delete-account-confirm, loading, empty, error, offline | F8, F9 | hifi |  |
| S28 | [Profile · Sign in with Apple upgrade](/design/hifi/s28/index.md) (`profile/siwa`) | sheet, loading, empty, error, offline |  | hifi |  |
| S29 | [Profile · Privacy & AI disclosure](/design/hifi/s29/index.md) (`profile/privacy`) | default, loading, empty, error, offline |  | hifi |  |
| S30 | [Global · Resume session](/design/hifi/s30/index.md) (`global/resume-session`) | sheet, loading, empty, error, offline | F4 | hifi |  |
| S31 | [Global · Leave recording confirm](/design/hifi/s31/index.md) (`global/leave-recording`) | alert, loading, empty, error, offline |  | hifi |  |
| S32 | [Global · Offline toast](/design/hifi/s32/index.md) (`global/offline`) | toast, loading, empty, error, offline | F6 | hifi |  |
| S33 | [Global · Generic error](/design/hifi/s33/index.md) (`global/error`) | generic, loading, empty, error, offline |  | hifi |  |
| S34 | [Global · Force update](/design/hifi/s34/index.md) (`global/force-update`) | default, loading, empty, error, offline | F1 | hifi |  |

## Flows

- F1 First launch → diagnostic → paywall → first real session: S34 → S01 → S02 → S03 → S04 → S05 → S06 → S07 → S08 → S09 → S11 → S10 → S12 → S13 → S14 → S15 → S16 → S18
- F2 Daily quest: S16 → S18 → S19 → S20 → S21 → S22 → S23 → S24
- F3 Free practice from the library: S17
- F4 Resume after the app was killed: S30 → S18 → S19 → S20 → S23 → S16
- F5 Microphone permission denied: S10 → S19
- F6 Offline mid-upload: S20 → S32
- F7 Expired subscription: S15
- F8 Delete training data / account: S27
- F9 Change UI language / practice languages: S27

## Open questions

- Every screen is at `hifi`: the gallery was drawn before the botgumi gates existed, so the retroactive hi-fi gates (one issue per flow, `docs/checklists/design-gates.md`) are pending.
- Required states without a board of their own follow the shared patterns in [states.md](/design/states/index.md); a gate may ask for a board.
- Contract change requests CCR-1 to CCR-13 in [data-binding.md](/design/data-binding/index.md) are applied; a field that still waits on one is `pending` (botgumi ADR-0006 D2).
