# App Store / TestFlight Review Notes

Nucleic (iOS) is a **remote control for the Nucleic coding agent that runs on the user's Mac**.
In normal use the phone pairs to a Mac over the local network by scanning a QR code, then mirrors
and drives the Mac's coding sessions. **A reviewer has no such Mac**, so the app ships a built-in,
fully interactive **demo mode** that requires no Mac, no account, and no network host.

Paste the block below into **App Store Connect ▸ your app ▸ (version) ▸ App Review Information ▸
Notes** for every submission (beta and store). No demo account/credentials are needed — the app has
no accounts.

---

## Paste-ready reviewer notes

> **No Mac or sign-in is required to review this app.**
>
> On the first screen, tap **"Explore a demo — no Mac needed"**. This enters a demo populated with
> sample projects, chats, and to-dos, backed by a **simulated agent** so you can exercise every
> feature offline:
>
> - **Home** — dashboard, activity, usage gauges, and provider status.
> - **Sessions** — open a chat to see the live transcript. Type a message and send it; a simulated
>   assistant replies with streamed text, a tool call, and a result.
> - **Approvals** — open the chat marked "Awaiting approval" and tap **Allow** or **Deny**; the run
>   advances accordingly.
> - **Start a chat** — from Home, pick a project, type a task, and send; a new running session
>   appears and completes.
> - **To-dos** — capture, complete, dispatch, and delete items.
> - **Projects / Settings** — browse projects and appearance/privacy settings.
>
> To leave the demo, go to **Settings ▸ Leave demo**.
>
> Normal (non-demo) use pairs the app to a Mac running the Nucleic desktop app by scanning a QR
> code over the local network; all traffic is end-to-end encrypted and peer-to-peer, with no
> account system.

---

## Notes for maintainers

- Demo mode is a normal, always-available feature (not a hidden reviewer-only path), per Apple's
  guidance against behavior that differs for reviewers. It doubles as onboarding.
- Implementation: `RemoteStore.enterDemo()` / `exitDemo()` toggle a persisted `nucleic.demoMode`
  flag; the seeded fixtures and the local agent simulator live in
  `ios/NucleicRemote/NucleicRemote/Models/RemoteStore.swift` (see the "Demo simulator" section).
  The dev/screenshot path via the `NUCLEIC_DEMO=1` environment variable still works and forces demo
  on at launch.
- A "DEMO" banner (`DemoBanner` in `Views/BuildBanner.swift`) is shown while in demo mode so sample
  data is never mistaken for a live Mac connection.
- Relevant to **Guideline 2.1 (App Completeness)**: this is what makes all features exercisable
  without a paired host.
