Summary
A fresh, signed-out install opens to realistic fabricated session rows without any Demo/Sample label. The rows look like account history, including titles, models, statuses, progress, timestamps, and transcripts.
Users can reasonably interpret this as real or retained account data, especially on a shared/test device.
Simulator reproduction
Confirmed on a fresh iPhone 17 Pro simulator running iOS 26.4:
- Install the current app with no codegraff key in Keychain.
- Cold-launch normally.
- The Sessions screen immediately displays:
- “Add cube transport to c…” — Working, 2/5, just now
- “Extend graff serve…” — Waiting on you, 1/3, 2m ago
- “Notarize v0.0.16 build” — Done, 3/3, 1h ago
- No visible text identifies these rows as examples or demo content.
Root cause
SessionsListView initializes signed-out state with sampleSessions (apps/ios/Graff/Sources/SessionsListView.swift:4-6). The fixtures in GraffApp.swift:155-180 are realistic and navigable, but SessionsListView/SessionRow provides no user-visible Sample/Demo treatment. This behavior is not gated by --autotest.
Expected behavior
Prefer an explicit signed-out empty state with a sign-in call to action. If examples are intentionally retained:
- isolate them from account history;
- label every example clearly and persistently as Demo/Sample;
- prevent confusion with account-owned sessions and credentials;
- keep full fixtures behind test/demo launch configuration where possible.
Summary
A fresh, signed-out install opens to realistic fabricated session rows without any Demo/Sample label. The rows look like account history, including titles, models, statuses, progress, timestamps, and transcripts.
Users can reasonably interpret this as real or retained account data, especially on a shared/test device.
Simulator reproduction
Confirmed on a fresh iPhone 17 Pro simulator running iOS 26.4:
Root cause
SessionsListViewinitializes signed-out state withsampleSessions(apps/ios/Graff/Sources/SessionsListView.swift:4-6). The fixtures inGraffApp.swift:155-180are realistic and navigable, butSessionsListView/SessionRowprovides no user-visible Sample/Demo treatment. This behavior is not gated by--autotest.Expected behavior
Prefer an explicit signed-out empty state with a sign-in call to action. If examples are intentionally retained: