Brand and design · Hi-fi screens · Hi-fi screens

Hi-fi: S29 Profile · Privacy & AI disclosure

Contract, a board per state (default, loading, empty, error, offline), tokens and strings.

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

Stage: hifi · Key: profile/privacy · Data-binding map: bindings.md

Drawn in the gallery: Profile. Each board is the committed HTML in screens/, drawn on the example data in docs/api/examples/.

Contract

  • default: Plain-language disclosure required by D6 (third-party AI, language hint, no training, retention, deletion, analytics, age).

Flows: none named.

Reads and calls:

  • GET /v1/me (settings.audio_retention_days)
  • GET /v1/config

Local state:

  • none

Boards

One row per state. A state without boards of its own says what shows it.

State Board Example data
default zh-Hans · en me.json (zh-Hans · en)
loading no board of its own: From states.md (Settings): toggles disabled until /me
empty no board of its own: From states.md (Settings): —
error no board of its own: From states.md (Settings): PATCH failed → revert toggle + toast · fatal: —
offline no board of its own: From states.md (Settings): changes queued; retention / delete disabled offline

The boards

Each state as drawn (393 × 852), one board per locale. Open a board on its own for its spec panel.

default

Tokens used

By path in ../../system/tokens.source.json.

Token Where
color.bgCanvas .device, .navbar, .screen
color.bgInverseRaised .icon-btn
color.bgSunken .card--sunken, .icon-btn, .state-illo
color.bgSurface .card
color.lineStrong .link
color.textOnInverse .icon-btn
color.textPrimary .device, .home-indicator, .icon-btn, .statusbar
color.textSecondary .c-secondary, .link, .state-illo
radius.card .card
radius.md .card--md
space.gutter .navbar, .pad
space.s5 .card
space.s6 .screen
space.safeBottom .screen
space.safeTop .device, .screen
space.sizeCtaHeight .screen
space.sizeHitMin .icon-btn
space.sizeNavbarHeight .navbar
space.sizeTabbarHeight .screen
typography.footnote .t-footnote
typography.headline .t-headline
typography.subheadline .t-subhead
typography.title1 .t-title1

Strings

app.name, common.back, common.points, delete_session.confirm, growth.ability.delta, home.greeting.format, notif.daily.title, paywall.k.value, paywall.per.year, paywall.privacy, paywall.projection.score, privacy.age.body, privacy.age.title, privacy.ai.body, privacy.ai.title, privacy.analytics.body, privacy.analytics.title, privacy.current, privacy.delete.body, privacy.delete.title, privacy.full_policy, privacy.intro, privacy.mic.body, privacy.mic.title, privacy.nav, privacy.retention.body, privacy.retention.title, privacy.title, profile.privacy, record.indicator.recording, settings.retention.30, settings.retention.365, settings.retention.7

Notes for the app tracks

Motion, haptics, Dynamic Type and VoiceOver: engagement.md, tokens.md §6–7 and ios-handoff.md. Open a board with ?theme=dark&dt=1.35&binds=1 to see dark mode, the largest tested type size and every bound element.

Tracking-plan events: no tracking plan page exists yet; ADR-001 D12 names the events.

Tokens with no group in system/tokens.source.json yet (they stay in tokens.css): --dt, --elevation-1, --font-family-text, --font-weight-bold, --font-weight-regular, --font-weight-semibold, --type-tracking-tight.