Repository navigation
Native iOS app: typed Sparring - #138
Conversation
The store's turn, clock, judging and saved-row logic becomes pure functions in packages/core/src/sparring/session.ts, so the app keeps rounds the same way. The website store and SparringPage import them back unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sparring mirrors the website's typed round: a setup form, the side asked when the round starts, the opponent's turns and the student's typed speeches on each speech's clock, judging, and the scorecard as bars (mocks 05 and 06). The server saves the judged round; the app files it in its debate, reopens saved rounds from Practice and the Debate tab, and deletes them after confirming. The voice switch shows disabled until the development build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The screenshot script plays a Lincoln-Douglas round as Con from fixed outputs in English and Hungarian, holding the opponent and the judge for their shots, and checks the turn-start taps and the running clock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eetScrollView Practice now numbers its loads and files a failure under the debate it was read for, as Prepare does, so a slow load or an error for one debate never shows under another. The round's notes sheet uses SheetScrollView like every sheet, and the opponent and judge requests read the Sparring settings under the request's abort, so leaving while they load sends nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the Flowchart (#133) and postFunction's abort check before the session read. Saved Sparring rounds and flowcharts both open from a work row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Now that the Flowchart is in the app, the live round's flow button opens it on the Current Debate's map, as mock 05 asks, instead of the session-only notes sheet that stood in for it. The round keeps running underneath. The notes sheet, its session slot and its three strings go. The screenshot run opens the Flowchart from the student's turn and checks the draft is still there on the way back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Note 🎁 Summarized by CodeRabbit Free
Comment |
A reopened scorecard now remembers whose round it holds, so after an account change it shows loading instead of the previous account's round while the new read runs. Each side choice is numbered, so a slow debate creation from an earlier choice never starts a round over a newer one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review r1 at 6400f2f (gpt-6.1-sol, high): 2 findings, both verified against the code and fixed in f696946.
|
|
Codex review r2 at f696946 (gpt-6.1-sol, high): no findings. Saved-scorecard ownership, account clearing, sign-out, stale fetch cleanup and both awaits in the start flow checked; both r1 findings fixed. Merging into feat/native-ios. Not provable here: haptic tick, keep-awake, native page sheet and the Flowchart over a live round (Adam's phone). |
Brings in Sparring (#138), development-build prep (#142), App Store entitlements (#141) and offline reading (#139). - The push migration becomes 20261014130000_push_tokens.sql so it sorts after 20261014123154_app_store_entitlements.sql. - auth.tsx and _layout.tsx keep both the push wiring (release on sign-out, refresh on launch and language change) and setCacheOwner/watchNetwork. - package-lock.json is feat's lock plus `npm install` for expo-notifications. - app.config.ts is unchanged: #142 already strips aps-environment from development builds. The mobile guide now says so, and that real push needs a profile with push and an APNs key from Adam's Apple Developer account. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Typed Sparring in the iOS app, mirroring the website's SparringPage in its typed mode. Voice waits for the first development build.
What's in it
sparring_sessionsrow. The app files it in its debate under your side, with user_id filters on every read.packages/core/src/sparring, and the website imports them back in one line. The website's turn-order and state tests pass unchanged.Checks (local; GitHub Actions is out of minutes)
At 1689eef, which has the same tree as the head 6400f2f after the feat merge:
npm run verify: exit 0.npm -w @debatelab/mobile run typecheck,npx eslint apps/mobileandnpx knip: exit 0.The screenshot harness ran all 8 device, theme and language combinations, 70 shots each, 6 of them Sparring:
Two iPad-dark runs stopped once at the shared one-off step while the Debate tab's counts loaded from staging. Both passed when rerun alone.
Live on staging (seed Pro account, made-up motion, Lincoln-Douglas as Pro):
complete, reopened from Practice, then was deleted.sparring_sessionswent 0 → 1 → 0.Differences from the mocks
Not provable here
The haptic tick, keep-awake, the native page-sheet look and the Flowchart over a live round all need a real phone.
Codex review rounds follow as comments.
🤖 Generated with Claude Code