Skip to content

fix(codex): keep async questions available across desktop and mobile - #30062

Closed
miguel93041 wants to merge 11 commits into
stablyai:mainfrom
miguel93041:fix/codex-question-inputs
Closed

miguel93041 wants to merge 11 commits into
stablyai:mainfrom
miguel93041:fix/codex-question-inputs

Conversation

@miguel93041

@miguel93041 miguel93041 commented Oct 17, 2026 •

Copy link
Copy Markdown

ELI5

Codex can ask a question while it keeps working. Orca now shows a card with suggested answers and an Other field on desktop and mobile. Pending cards stay available after long output or reopening the chat, even when the original message is not loaded. Once the host records a delivered reply, the other clients remove the resolved questions too.

What Changed

Both structured chat and terminal-backed chat use the existing question controls and message senders. Structured replies reach Codex immediately while it works. Blocking questions also respect the question-level isOther flag.

The execution host derives pending async questions from delivered history. Structured chat uses the existing agentSession.currentRequests transport; terminal chat reconstructs the set from the rollout and updates it as records arrive. Clients show those cards near the composer, independently of the loaded message window. Ending a turn does not resolve them.

A delivered ordinary message retires the preceding questions, matching the rule in #25448. Replies from Codex’s question editor retire only the questions they identify. Queued or unconfirmed messages do not resolve the shared set. Folding a card preserves its draft; new cards do not steal focus. Desktop labels cover all six built-in languages.

Why

The host has the complete history; a client may have only its latest page. Deriving pending questions there keeps devices consistent without adding a second persisted store. Async questions remain separate from blocking approvals, so they survive a turn ending.

Linked Issue

Fixes #20073 — missing async question cards on mobile.
Fixes #22485 — missing async question cards in desktop chat.

Earlier proposals, oldest first:

PR Scope
#20074 Mobile terminal chat; adds answers to the composer for review before sending.
#22513 Desktop terminal chat; renders async cards and sends ordinary messages.
#24169 Structured Codex chat; uses the existing pending-question cards.
#25448 Combined desktop/mobile cards and plan-approval changes. Closed as stale; its author confirmed the underlying issues remain open.

This PR extends the current-request transport merged in #29121 and adapts pending-question reconstruction and regression tests from #25448. It does not include that proposal’s plan-approval changes.

Related reports with different scope: #21247 and its closed PR #21249 concern Answer/Skip shortcuts in the mobile terminal; #24415 concerns plan approvals; #25946 concerns orchestration nudges entering Codex's question editor. This PR does not claim to fix those reports.

Visual Proof

Desktop before and after, captured with production components and synthetic input in a hidden renderer:

Before After
Missing async card and Other field Pending async card and Other fields

Mobile pending card with Other selected, rendered with React Native Web. The scroll and rejected-send paths were exercised; this is not a phone or live delivery check.

Mobile async question with Other selected

Testing

  • I manually tested these changes locally
  • Automated tests added/updated, or explained why not below

384 focused tests pass across 37 suites: 279 desktop/host tests with the default pnpm test runner and Bun 1.4.3, plus 105 mobile tests. Coverage includes two clients reading a question outside their loaded history, unconfirmed delivery, resolution and reopening, partial question-editor replies, transcript replacement, context clears followed by a late send rejection, reconnects, WSL reads, cancelled subscriptions, draft preservation and Other answers.

Desktop and mobile typechecks, changed-code quality, mobile lint, localization and RPC catalog checks pass. pnpm build passes, including desktop, web and mobile-web assets. iOS and Android JavaScript bundle exports also pass. A native Android arm64 debug APK built during the earlier iteration; it has not been rebuilt for this update. No native iOS build or physical-device run was performed.

A real async question and Other reply were verified in an earlier macOS build. The latest desktop and mobile components were rendered without errors in hidden windows. Multi-client and transport tests use simulated clients; live SSH, Windows, Linux and physical phones remain untested.

Full lint previously stopped on five import-cycle warnings in unchanged mobile transport and terminal files. The full test suite has not run. PR Checks and Mobile Checks require maintainer approval for this fork, so the full-CI checklist remains unchecked.

Manual check: ask Codex for an async question, let it produce enough output to move the message out of the loaded window, then reopen the chat on another client. Both should show the pending card. Answer with Other and verify it disappears on both after delivery. Repeat with a failed send and check the question remains available.

AI Disclosure

Implementation, tests and review assisted by OpenAI Codex (GPT-6).

Review

Reviewed reply routing, partial answers, input ownership, reconnects and delivery failures. The earlier CodeRabbit findings remain covered: hiding a view does not cancel an admitted reply, and streamed updates do not reset the reply context. The final review also caught a late send rejection hiding newer questions after a context clear. Submission lookup now retains the original delivery outcome; a regression test fails before the fix and passes after it. Uncertain sends are not retried automatically.

No new dependencies or RPC methods. New hosts advertise async support and include the extra rows only when requested; older clients retain the previous response shape. New clients connected to older hosts keep inline cards. Metadata and stream fields are optional. No migration is needed.

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

Mobile reuses its existing English-only controls. Plugin language packs retain their English fallback. Folded cards and drafts are local to each view; pending-question resolution comes from the host. This does not guarantee deduplication if two users send answers at the same time.

Terminal reconstruction caches completed reads and limits published question data to 256 KiB, with a notice when more questions remain. Structured chat uses its existing chunked reads.

Checklist

  • This PR is small and focused — it now covers the host, both transports and both UIs; the scope remains Codex questions, but the diff is no longer small.
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@miguel93041 miguel93041 changed the title fix(codex): show async questions and honor free-text answers fix(codex): show async questions and restore Other answers Oct 17, 2026
@miguel93041
miguel93041 marked this pull request as ready for review October 17, 2026 12:07
@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ba5a6168-5d72-4b7b-88d3-723d10af0313
📥 Commits

Reviewing files that changed from the base of the PR and between 5a7f405 and f635fe5.

📒 Files selected for processing: 9
  • mobile/src/session/MobileNativeChatMessage.tsx
  • mobile/src/session/MobileNativeChatView.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredSession.tsx
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
🚧 Files skipped from review as they are similar to previous changes: 6
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/fr.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The change adds Codex async-question parsing, transcript and journal tracking, and question metadata to native-chat messages and stream frames. Desktop and mobile interfaces render pending questions and provide answer flows through structured or terminal send paths. The change also adds immediate-send options, delivery and stale-session handling, free-text answer support, translated labels, and tests.

Priority: ➖ Normal

Merge Risk: 🔵 Low · up to f635f

Terminal answers may occasionally remain unsubmitted, and exceptionally long pending-question histories can leave some mobile questions unavailable to answer. These bounded risks warrant owner awareness but do not, on the available evidence, block merging.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 53.97% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 126 functions across 78 files. (6 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly summarizes the primary change: preserving Codex async questions across desktop and mobile.
Description check Passed The description follows the required template and explains the user impact, implementation, rationale, linked issues, visual proof, testing, AI use, review notes, compatibility considerations, and che…
Linked Issues check Passed The PR meets the coding requirements in [#20073] and [#22485]. Shared parsing recognizes confirmed request_user_input_async data, including title-only questions and options. Desktop and mobile rende…
Out of Scope Changes check Passed The changes remain within [#20073] and [#22485]. The host tracking, transport fields, desktop and mobile cards, reply delivery, localization, and regression tests support async-question cards and thei…
Full details: Description check

Explanation

The description follows the required template and explains the user impact, implementation, rationale, linked issues, visual proof, testing, AI use, review notes, compatibility considerations, and checklist status. It also clearly records incomplete full-suite, platform, and lint validation.

Full details: Linked Issues check

Explanation

The PR meets the coding requirements in [#20073] and [#22485]. Shared parsing recognizes confirmed request_user_input_async data, including title-only questions and options. Desktop and mobile render selectable answers and free-text Other answers without using blocking TUI input. Host and transcript state keep questions pending after acknowledgement, turn completion, long output, and chat reopening. Delivered messages resolve the correct questions, while failed or unconfirmed sends do not. Tests cover parsing, rendering, delivery, reconstruction, resolution, and reopening.

Full details: Out of Scope Changes check

Explanation

The changes remain within [#20073] and [#22485]. The host tracking, transport fields, desktop and mobile cards, reply delivery, localization, and regression tests support async-question cards and their pending state. The reviewed changes do not add unrelated plan-approval, shortcut, orchestration, or provider-RPC work.

Full details: Docstring Coverage

Explanation

Docstring coverage is 53.97% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 126 functions across 78 files. (6 skipped: 6 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d12f8d12-b360-4677-a837-d82d487276b0
📥 Commits

Reviewing files that changed from the base of the PR and between 6fcc183 and 5564d19.

📒 Files selected for processing: 22
  • src/main/codex/codex-async-question-block.ts
  • src/main/codex/codex-async-questions.test.ts
  • src/main/codex/codex-structured-item-translation.ts
  • src/main/codex/codex-structured-prompt-items.test.ts
  • src/main/codex/codex-structured-prompt-items.ts
  • src/renderer/src/components/native-chat/NativeChatAssistantMessageRow.tsx
  • src/renderer/src/components/native-chat/NativeChatAsyncQuestions.test.tsx
  • src/renderer/src/components/native-chat/NativeChatAsyncQuestions.tsx
  • src/renderer/src/components/native-chat/NativeChatMessageRow.async-questions.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQuestionCard.tsx
  • src/renderer/src/components/native-chat/NativeChatResolvedView.prompt-card-input.test.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredMessageProviders.test.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredMessageProviders.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredQuestionCard.test.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredSession.tsx
  • src/renderer/src/components/native-chat/native-chat-async-question-context.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/shared/agent-session-journal-schemas.ts
  • src/shared/native-chat-types.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@miguel93041 miguel93041 changed the title fix(codex): show async questions and restore Other answers fix(codex): show async questions in desktop and mobile chat Oct 17, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 448f9a34-c191-41f8-8636-1257d7c31b4a
📥 Commits

Reviewing files that changed from the base of the PR and between 5564d19 and f1a5e70.

📒 Files selected for processing: 23
  • mobile/src/session/MobileNativeChatAsk.tsx
  • mobile/src/session/MobileNativeChatAsyncQuestionProvider.tsx
  • mobile/src/session/MobileNativeChatAsyncQuestions.tsx
  • mobile/src/session/MobileNativeChatMessage.tsx
  • mobile/src/session/MobileNativeChatOverlay.tsx
  • mobile/src/session/mobile-native-chat-async-question-context.ts
  • mobile/src/session/mobile-native-chat-controller-contract.ts
  • mobile/src/session/mobile-native-chat-structured-presentation.ts
  • mobile/src/session/mobile-structured-agent-session-contract.ts
  • mobile/src/session/use-mobile-native-chat-async-reply.ts
  • mobile/src/session/use-mobile-native-chat-controller.ts
  • mobile/src/session/use-mobile-native-chat-message-send.ts
  • mobile/src/session/use-mobile-structured-send-with-outcome.ts
  • src/main/codex/codex-async-question-block.ts
  • src/main/codex/codex-structured-item-translation.ts
  • src/main/native-chat/transcript-line-decoders-codex.ts
  • src/renderer/src/components/native-chat/NativeChatAsyncQuestions.tsx
  • src/renderer/src/components/native-chat/NativeChatResolvedView.tsx
  • src/renderer/src/components/native-chat/native-chat-async-question-context.ts
  • src/renderer/src/components/native-chat/use-native-chat-terminal-async-reply.ts
  • src/renderer/src/components/native-chat/use-native-chat-working-suppression.ts
  • src/shared/native-chat-ask.ts
  • src/shared/native-chat-async-questions.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

Comment on lines +23 to +46
const cancel = useCallback(() => {
const current = pending.current
if (!current) {
return
}
// A new blocking prompt may now own the input: cancel delayed writes without clearing it.
current.handle?.cancel(true)
current.finish(false)
}, [])
useLayoutEffect(() => {
latest.current = args
})
useLayoutEffect(() => {
mounted.current = true
return () => {
mounted.current = false
cancel()
}
}, [cancel, paneKey, sessionId, targetPtyId, runtimeEnvironmentId])
useLayoutEffect(() => {
if (disabled) {
cancel()
}
}, [cancel, disabled])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

sed -n '1,120p' src/renderer/src/components/native-chat/use-native-chat-terminal-async-reply.ts
rg -n 'useNativeChatTerminalAsyncReply|canSend\b|isVisible|readPhase' src/renderer/src/components/native-chat/NativeChatResolvedView.tsx | head -40
rg -n 'export function sendNativeChatMessage|cancel\(|setTimeout|submitDelay' src/renderer/src/components/native-chat/*.ts | head -40
rg -n "readPhase" src/renderer/src/components/native-chat --type=ts -g '!*.test.*' | head -40

Repository: stablyai/orca

Length of output: 13259


🏁 Script executed:

set -eu
printf '%s\n' '--- NativeChatResolvedView hook call ---'
sed -n '60,135p' src/renderer/src/components/native-chat/NativeChatResolvedView.tsx
sed -n '200,255p' src/renderer/src/components/native-chat/NativeChatResolvedView.tsx
printf '%s\n' '--- native-chat-runtime-send.ts ---'
sed -n '1,180p' src/renderer/src/components/native-chat/native-chat-runtime-send.ts
printf '%s\n' '--- live session read-phase update ---'
sed -n '300,375p' src/renderer/src/components/native-chat/use-native-chat-live-session.ts
printf '%s\n' '--- structured live session phase selection ---'
sed -n '1,90p' src/renderer/src/components/native-chat/use-structured-chat-live-session.ts
printf '%s\n' '--- retained session phase transitions ---'
sed -n '1,75p' src/renderer/src/components/native-chat/use-native-chat-retained-session.ts
printf '%s\n' '--- pending delivery settlement ---'
sed -n '1,210p' src/renderer/src/components/native-chat/use-native-chat-pending-delivery.ts

Repository: stablyai/orca

Length of output: 25821


🏁 Script executed:

set -eu
printf '%s\n' '--- observed terminal writes ---'
sed -n '1,260p' src/renderer/src/components/native-chat/native-chat-observed-send.ts
printf '%s\n' '--- live-session read declaration and read usage ---'
rg -n -C4 'const read|read =|use.*Read|phase:|setRead|read\.' src/renderer/src/components/native-chat/use-native-chat-live-session.ts
sed -n '1,180p' src/renderer/src/components/native-chat/use-native-chat-live-session.ts
printf '%s\n' '--- NativeChatResolvedView callers and visibility source ---'
rg -n -C3 'NativeChatResolvedView|isVisible=' src/renderer/src/components/native-chat src/renderer/src | head -120

Repository: stablyai/orca

Length of output: 30730


🏁 Script executed:

set -eu
printf '%s\n' '--- input clear contract ---'
rg -n -C6 'export type NativeChatSendOptions|function clearUnsubmittedAgentInput|const clearUnsubmittedAgentInput|clearUnsubmittedAgentInput' src/renderer/src/components/native-chat/native-chat-input-clear.ts
sed -n '1,240p' src/renderer/src/components/native-chat/native-chat-input-clear.ts
printf '%s\n' '--- PTY send queue cancellation ---'
sed -n '1,300p' src/renderer/src/components/native-chat/native-chat-pty-send-queue.ts

Repository: stablyai/orca

Length of output: 10782


🏁 Script executed:

set -eu
printf '%s\n' '--- decisive line-numbered excerpts ---'
nl -ba src/renderer/src/components/native-chat/use-native-chat-terminal-async-reply.ts | sed -n '20,115p'
nl -ba src/renderer/src/components/native-chat/native-chat-runtime-send.ts | sed -n '45,85p'
nl -ba src/renderer/src/components/native-chat/native-chat-observed-send.ts | sed -n '15,90p'
nl -ba src/renderer/src/components/native-chat/native-chat-pty-send-queue.ts | sed -n '110,205p'
nl -ba src/renderer/src/components/native-chat/native-chat-input-clear.ts | sed -n '19,45p'
nl -ba src/renderer/src/components/native-chat/NativeChatResolvedView.tsx | sed -n '88,110p;220,240p'
nl -ba src/renderer/src/components/native-chat/use-native-chat-live-session.ts | sed -n '118,165p;210,250p;320,355p'
nl -ba src/renderer/src/components/native-chat/use-native-chat-pending-delivery.ts | sed -n '80,145p'
printf '%s\n' '--- owning render references ---'
rg -n -F --glob '*.tsx' -- 'NativeChatResolvedView' src || test "$?" -eq 1

Repository: stablyai/orca

Length of output: 26643


🏁 Script executed:

set -eu
nl -ba src/renderer/src/components/native-chat/NativeChatView.tsx | sed -n '1,95p'
nl -ba src/renderer/src/components/native-chat/native-chat-view-types.ts | sed -n '1,75p'

Repository: stablyai/orca

Length of output: 6618


Restrict cancellation to input-ownership changes.

When the user submits an answer, sendNativeChatMessage writes the paste and schedules Enter as a separate delayed PTY write. If isVisible becomes false while that write is pending, the current effect calls cancel(). cancel(true) suppresses the delayed Enter but preserves the pasted input. finish(false) then holds the delivery as unconfirmed, so the submitted answer remains an unsubmitted TUI draft.

Keep disabled for blocking new sends, but use a separate cancellation condition for promptCard !== null || !canSend.

🐛 Suggested fix
 type PendingReply = { handle: NativeChatSendHandle | null; finish: (accepted: boolean) => void }

 export function useNativeChatTerminalAsyncReply(args: {
   paneKey: string
   sessionId: string | null
   targetPtyId: string | null
   runtimeEnvironmentId: string | null
   disabled: boolean
+  cancelInFlight: boolean
   delivery: ReturnType<typeof useNativeChatPendingDelivery>
   onSubmitted: () => void
 }) {
-  const { paneKey, sessionId, targetPtyId, runtimeEnvironmentId, disabled } = args
+  const { paneKey, sessionId, targetPtyId, runtimeEnvironmentId, disabled } = args
...
   useLayoutEffect(() => {
-    if (disabled) {
+    if (args.cancelInFlight) {
       cancel()
     }
-  }, [cancel, disabled])
+  }, [args.cancelInFlight, cancel])
     runtimeEnvironmentId,
     disabled: !canSend || !isVisible || promptCard !== null || session.readPhase !== 'ready',
+    cancelInFlight: !canSend || promptCard !== null,
     delivery,

@miguel93041

Copy link
Copy Markdown
Author

@coderabbitai resume

@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Reviews resumed. No new commits to review.

Derive pending questions from delivered history so cards remain available outside the loaded message window. Extend the current-request transport from stablyai#29121 with opt-in async rows and adapt rollout reconstruction and regressions from stablyai#25448.
@miguel93041 miguel93041 changed the title fix(codex): show async questions in desktop and mobile chat fix(codex): keep async questions available across desktop and mobile Oct 17, 2026
@miguel93041

Copy link
Copy Markdown
Author

This PR carries forward the Codex async-question work from #25448 and adapts it to the current request transport merged in #29121. It covers desktop and mobile, structured and terminal-backed chats, and pending questions outside the loaded history, with resolution shared across clients.

It does not replace all of #25448. That proposal also unified how desktop and mobile choose question and approval cards, and addressed mobile misreading numbered Claude plan steps as terminal menu choices. Those changes are not included here; this PR does not claim to fix #24415.

Once reviewed and merged, this could serve as a new base for resuming that remaining work. The async-question handling would already be in place, leaving the shared card-selection logic and plan-approval fixes to a follow-up. The terminal plan menus would still need to be checked against captured terminal output, as #25448 noted.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments: 1
src/main/ipc/native-chat.ts: 1

233-234: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add asyncQuestions to the NativeChatAppendedPayload frame types.

These frames now carry asyncQuestions, but the payload type at Lines 65-89 does not declare it. The code compiles only because TypeScript skips excess-property checks for spread properties. The renderer reads the field through NativeChatSubscriptionFrame in preload. If the main-process type does not declare it, a later refactor can drop the field without a compile error.

♻️ Proposed type update
// in each of the snapshot / replacement / appended variants
asyncQuestions?: NativeChatAsyncQuestionsField

ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d52fff6b-faab-4112-8378-7345c447d489
📥 Commits

Reviewing files that changed from the base of the PR and between e5f92c5 and a8656ab.

📒 Files selected for processing: 62
  • mobile/src/session/MobileNativeChatAsyncQuestionProvider.tsx
  • mobile/src/session/MobileNativeChatAsyncQuestions.test.tsx
  • mobile/src/session/MobileNativeChatMessage.tsx
  • mobile/src/session/MobileNativeChatOverlay.tsx
  • mobile/src/session/MobileNativeChatPendingAsyncQuestions.tsx
  • mobile/src/session/MobileNativeChatView.tsx
  • mobile/src/session/mobile-native-chat-stream-frame.ts
  • mobile/src/session/use-mobile-native-chat-session.ts
  • mobile/src/session/use-mobile-structured-agent-session.ts
  • src/main/codex/codex-async-question-block.ts
  • src/main/codex/codex-async-questions.test.ts
  • src/main/codex/codex-structured-item-translation.ts
  • src/main/ipc/native-chat.ts
  • src/main/native-chat/agent-session-wire/agent-session-current-requests.ts
  • src/main/native-chat/agent-session-wire/agent-session-pending-async-questions.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-pending-async.test.ts
  • src/main/native-chat/codex-async-question-reply.test.ts
  • src/main/native-chat/codex-rollout-async-question-facts.ts
  • src/main/native-chat/transcript-async-question-boundary-scan.test.ts
  • src/main/native-chat/transcript-async-question-boundary-scan.ts
  • src/main/native-chat/transcript-async-question-fold-cache.ts
  • src/main/native-chat/transcript-async-question-retry.test.ts
  • src/main/native-chat/transcript-async-question-tracker.test.ts
  • src/main/native-chat/transcript-async-question-tracker.ts
  • src/main/native-chat/transcript-incremental-reader.ts
  • src/main/native-chat/transcript-line-decoders-codex.ts
  • src/main/native-chat/transcript-reader-codex-async-questions.test.ts
  • src/main/native-chat/transcript-watch-contract.ts
  • src/main/native-chat/transcript-watch-engine.ts
  • src/main/runtime/rpc/methods/native-chat.ts
  • src/preload/api/native-chat-api.ts
  • src/renderer/src/components/native-chat/NativeChatAssistantMessageRow.tsx
  • src/renderer/src/components/native-chat/NativeChatAsyncQuestions.test.tsx
  • src/renderer/src/components/native-chat/NativeChatPendingAsyncQuestions.tsx
  • src/renderer/src/components/native-chat/NativeChatResolvedView.tsx
  • src/renderer/src/components/native-chat/NativeChatStructuredMessageProviders.tsx
  • src/renderer/src/components/native-chat/native-chat-live-session-contract.ts
  • src/renderer/src/components/native-chat/native-chat-session-transport.test.ts
  • src/renderer/src/components/native-chat/native-chat-session-transport.ts
  • src/renderer/src/components/native-chat/native-chat-stream-teardown.ts
  • src/renderer/src/components/native-chat/use-native-chat-live-session.ts
  • src/renderer/src/components/native-chat/use-native-chat-pending-async-questions.ts
  • src/renderer/src/components/native-chat/use-native-chat-terminal-async-reply.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session.ts
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/web/preload-api/web-native-chat-api.ts
  • src/shared/agent-session-current-requests-reader.ts
  • src/shared/agent-session-current-requests-wire.ts
  • src/shared/agent-session-journal-schemas.ts
  • src/shared/codex-async-question-item.ts
  • src/shared/codex-async-question-reply.ts
  • src/shared/native-chat-async-question-facts.ts
  • src/shared/native-chat-async-questions.ts
  • src/shared/native-chat-pending-async-questions.test.ts
  • src/shared/native-chat-pending-async-questions.ts
  • src/shared/native-chat-types.ts
  • src/shared/rpc-contract/agent-session-current-requests-params.ts
🚧 Files skipped from review as they are similar to previous changes: 6
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ko.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Desktop native chat omits Codex async question cards Mobile omits Codex request_user_input_async decision cards

1 participant