Repository navigation
Debug-only demo modes: no-server DemoSuasApi and LOCAL Worker launcher - #13
Merged
Merged
Conversation
- SuasProductShell takes the API and ShellHooks; RootActivity passes the pinned STAGING client and ShellHooks.NONE, so release behavior is unchanged - DemoRootActivity (debug): in-memory DemoSuasApi over contract/demo-fixtures.json captured from the LOCAL Worker; demo banner, sign-in hint, advance button - LocalRootActivity (debug): real client against http://10.0.2.2:3000, LOCAL class - 17 JUnit tests for the demo repository, including a fixture drift check - README: demo modes, LOCAL Worker steps, checks
Fixture copies refreshed from the Worker export (suas#189). Local launcher prefills demo@example.invalid and shows the fixed LOCAL code.
…lease workflow; README points at SUAS-specs
scrimshawlife-ctrl
marked this pull request as ready for review
October 7, 2026 21:47
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a no-server demo mode and a LOCAL Worker launcher to debug builds only. Release builds are unchanged: the release APK still declares only
RootActivityand contains no fixtures.RootActivityhttps://suasqrf.comDemoRootActivityDemoSuasApi, no networkLocalRootActivityhttp://10.0.2.2:3000(npm run dev:demoin suas, scrimshawlife-ctrl/suas#187)What was missing
Backend.LOCAL_BASEexisted, but nothing used it.Changes
ProductShellbecameSuasProductShell(api, hooks).ShellHookscarries the environment class, an optional banner, a sign-in hint and prefill, an optional "existing request" lookup, and an optional demo advance.RootActivitypasses the pinned STAGING client andShellHooks.NONE, so it looks and behaves exactly as before.LauncherHome,SignInScreenandConnectedRequestScreen.DemoRootActivityandLocalRootActivity, with labels insrc/debug/res.demo/DemoSuasApi.kt: an in-memorySuasApiwith Worker-like 401/403/404/409 answers, idempotent keys, single-use challenges, and a demo stand-in for LOCAL simulate.src/debug/resources/demo/demo-fixtures.json.contract/demo-fixtures.jsonis captured from the real LOCAL Worker (npm run demo:fixturesin suas). The copy is byte-identical, and a drift test guards it.DemoFixturesAndAuthTestandDemoJourneyTest. They cover:Demo journey: sign in with the prefilled email and the shown code. Each need screen opens with that category's seeded request:
New requests can be submitted, advanced with "Demo only: advance status", confirmed or cancelled. State lives in memory only (D-034).
Verification (Linux, JDK 25, Android SDK 37)
scripts/forbidden-capabilities.shpasses../gradlew :app:testDebugUnitTest :app:lintDebug :app:assembleDebug :app:assembleReleasesucceeds:UseKtxinCrisisNotice.kt.aapt2manifest dump:RootActivityonly, no fixture/dev/kvmnever brought the device online. So there are no screenshots and no manual UI pass. Danny or Louis should run the two launchers once on an emulator.Easy demo sign-in (Danny, Oct 7 2026)
The demo accounts are now
demo@example.invalidwith code123456(open case, four seeded requests) andnewvet@example.invalidwith the same code (no case yet). Both copies of the fixture were refreshed from the Worker export in scrimshawlife-ctrl/suas#189. That PR also makes the LOCAL demo Worker issue123456todemo@example.invalid, so the Local launcher signs in without reading the code from the host. Other accounts still read their code from/api/v0/dev/last-challenge.Verified after the change:
./gradlew :app:testDebugUnitTest :app:assembleDebug :app:assembleReleasepasses, with 39 unit tests and the updated fixture and journey tests.scripts/forbidden-capabilities.shpasses.Decisions (Danny, Oct 7 2026)
app/src/debugwith the two debug launchers. No build flavor is added, so the CI task names are unchanged and release APKs contain neither the fixture nor the launchers.ShellHooks.NONE).contract/demo-fixtures.jsonand generates it withnpm run demo:fixtures. Both copies here (contract/andapp/src/debug/resources/demo/) come from that export. The README now says not to hand-edit them and explains how to refresh them.Still unverified: there are no emulator screenshots, because nested KVM on the build box never brought a device online. Danny or Louis should run
DemoRootActivityandLocalRootActivityonce.No em dashes in new copy. Code for this PR was generated by DeepSeek v4.1 Flash through the model router, then reviewed, integrated and tested. Small glue edits were made by hand. Draft only, please do not merge without Danny's yes.
Versioning and docs (Oct 7 2026)
versionName1.0to0.1.0(versionCode1) andClientPins.APPLICATION_VERSION0.1.0. "1.0" wrongly implied a launch; SPEC-018 is blocked. Implements SUAS-specs0.6.0.ContractTest.applicationVersionMatchesGradleVersionNamekeeps the two in sync.CHANGELOG.md(Keep a Changelog),RELEASING.md, and.github/workflows/release.yml(on a pushedv*.*.*tag, creates a GitHub Release from the CHANGELOG section on the default branch; uploads no APK, publishes nothing).0f7aeae, manualworker-deploy, path-param check), and the API contract section now points at SUAS-specs instead of restating/api/v0.Tag after Danny approves the merge (not before):
Merge approval
Danny approved merging this PR on 2026-10-07 at 2:41 PM PT ("Merge suas #190, specs #43, Android #13 and iOS #10, then cut the tags"). Squash-merged after CI was green on the final head.