Repository navigation
Native iOS app: Library and Ask with streaming answers - #127
Conversation
The app needs the website's parser for ai-stream responses. streaming.ts imports it back and re-exports it, so its behaviour and tests are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Library lists the Current Debate's sources with search and type filters. The plus menu pastes a link through the import-source Edge Function or writes a note, saved with the website's columns and folder. A row opens the source read-only, with its page in the in-app browser, and swiping it left deletes it after a confirmation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Practice lists the website's practice tools; Ask opens full screen and the rest say they are on their way. Ask sends the website's request: plain questions stream from ai-stream through expo/fetch, and with Citations, Web search, Pros/Cons or Argument map on the whole answer comes from the ai function, because ai-stream refuses those options. The model, settings and Current Debate context are picked the way the website picks them, including pins. Finished exchanges are saved to chats and messages, past chats reopen from the history sheet, and leaving mid-answer cancels it without saving half a message. Answers render through a small Markdown reader with citation chips that open the Library source or the cited page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The screenshot script now captures the Library's plus menu, link and note sheets and a source, and Ask empty, mid-answer and answered with citations. Ask runs on a fake stream inside the page and a fixed answer, so screenshots never call a model or save a chat. 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 FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing. Comment |
- Ask listens for cancellation before it reads the session, so leaving Ask during a token refresh no longer sends the question. - When a new chat is created but its messages fail to save, Ask keeps the chat, so the next save adds to it instead of creating a second chat. - A failed link import shows only translated text and logs the raw error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codex review (gpt-6.1-sol)
Local checks at 41a0b68. GitHub Actions starts no jobs on this account because of billing, so these ran locally:
Merging into 🤖 Generated with Claude Code |




Last piece of milestone 1 from plans/2026-10-08-native-ios-app.md: the Library tab to mock 04 and Ask to mock 07, with streaming answers. Stacked on #125. GitHub retargets this PR to
feat/native-ioswhen #125 merges.What the app now does:
import-sourceEdge Function, or write a note. Both are saved with the website's columns and folder. Tapping a row opens the source read-only, and its page opens in the in-app browser. Swiping a row left deletes it after a confirmation. "Choose a file" and "Scan pages" are left out of this PR.ai-streamthroughexpo/fetch. With Citations, Web search, Pros/Cons or Argument map turned on, the full answer comes fromai, becauseai-streamdoesn't accept those options.@debatelab/core, the same code Add the Debate tab, debate switcher and You tab to the app #125 uses.chatsandmessages. Past chats reopen from the history sheet. Leaving mid-answer cancels the request and saves nothing partial.src/lib/ai/streaming.tstopackages/core/src/ai/sse.ts. The website imports it back, so its behaviour and tests are unchanged. That is the only website file this PR touches.user_id, as Add the Debate tab, debate switcher and You tab to the app #125 does. RLS still enforces ownership.Checks, run locally on Node 22 at
685f4fb, because GitHub Actions on this account starts no jobs (billing):At
a6830d0, the same code rebased onto Add the Debate tab, debate switcher and You tab to the app #125's previous head:npm run verifyexit 0 (286 Vitest tests, collaboration, Deno edge tests, build, service worker, 30 Chromium smoke), plusdocs:check, the web export and 152 screenshots of the web export signed in to staging. At685f4fb: typecheck, lint and all 286 tests pass.Live on staging with throwaway
3c-test-data:ai-stream, with the first token at 6.5 s. A Citations request came back fromaiwith 6 citation buttons. A request stopped mid-stream saved nothing partial.All test sources, chats and messages were deleted afterwards (0 left).
Every native module is in the App Store build of Expo Go.
Not proven: native rendering on an iPhone (sheets, swipe-to-delete, keyboard, the in-app browser). Those are for the milestone 1 check on Adam's phone.
🤖 Generated with Claude Code