Skip to content

fix(mobile): restore QR scanning in iPad pairing sheet - #16019

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
arhammahajan:fix/ipad-pairing-qr-header
Oct 11, 2026
Merged

maria-rcks merged 2 commits into
pingdotgg:mainfrom
arhammahajan:fix/ipad-pairing-qr-header

Conversation

@arhammahajan

@arhammahajan arhammahajan commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Problem

On iPad, New Task → Add Environment opens a pairing sheet without its title or QR scanning action. Adding an environment through Settings shows both.

Fixes #15985.

Change

Initialize the root ConnectionsNew route with the existing iOS sheet header options and the Add Environment title. This lets React Native Screens mount the sheet's native header stack on the first render, restoring the existing QR action and avoiding a later header-visibility change that remounts the pairing form.

Scope and approval

This qualifies for the very small, focused obvious-bug exception in CONTRIBUTING.md: it restores an existing pairing control that is missing from one navigation entry point. The four added lines are confined to the root route options in apps/mobile/src/Stack.tsx; the pairing form and scanner logic are unchanged. The iOS header preset is conditional, and web/desktop, provider adapters, and wire contracts are untouched.

Issue triage identifies the root sheet header as the likely cause. That comment is context for the problem, rather than approval of this specific implementation.

Verification

  • iOS development and standalone Release Preview builds passed.
  • Tested New Task → Add Environment on an iPad Air 11-inch (M2), running iPadOS 27. The QR button appears and the flow works.
  • Confirmed the missing header before the fix and the restored title and QR button afterward on an iPad Pro 13-inch (M5) simulator.
  • Checked camera permission denial and opening/closing the scanner.
  • vp test run apps/mobile/src/features/connection/pairing.test.ts: 7 tests passed.
  • Mobile typecheck, lint, formatting, and git diff --check passed.

iPhone runtime behavior and Android runtime behavior were not exercised.

Before

Before: pairing sheet without its title or QR action

After

After: pairing sheet with its title and QR action

Model: GPT-6.1 Sol | Harness: Codex in T3 Code

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Oct 5, 2026
@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 08cae951-7805-48f0-b8d5-dd3103c15bff
📥 Commits

Reviewing files that changed from the base of the PR and between 7812230 and c03635b.

📒 Files selected for processing (1)
  • apps/mobile/src/Stack.tsx

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

Walkthrough

The ConnectionsNew route applies SHEET_GLASS_HEADER_OPTIONS on iOS. Its title and form-sheet presentation settings remain unchanged.

Changes

Add Environment header

Layer / File(s) Summary
Apply iOS sheet header options
apps/mobile/src/Stack.tsx
On iOS, the route applies SHEET_GLASS_HEADER_OPTIONS to keep the native header visible from the first render. Other platforms do not receive these options.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to c0363

The iOS Add Environment sheet now receives its header and title from the initial route options, with its form-sheet behavior preserved. No actionable merge risk is evident.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed [#15985] requires QR scanning in the initial Add Environment flow on iPad. The root ConnectionsNew route now applies SHEET_GLASS_HEADER_OPTIONS on iOS and sets the title. `ConnectionsNewRouteScree…
Out of Scope Changes check ✅ Passed The diff only adds iOS sheet-header options and the Add Environment title to the root ConnectionsNew route in apps/mobile/src/Stack.tsx. These changes directly support [#15985]. No unrelated chang…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Title check ✅ Passed The title clearly and concisely identifies the main change: restoring QR scanning in the iPad pairing sheet.
Description check ✅ Passed The description covers the problem, change, scope and approval rationale, and verification. It includes focused test results, platform limitations, and before-and-after screenshots.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@arhammahajan

Copy link
Copy Markdown
Contributor Author

Hey @juliusmarminge just following up. Can this be merged?

@maria-rcks
maria-rcks merged commit d404a30 into pingdotgg:main Oct 11, 2026
30 of 32 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 11, 2026
## What's Changed
* perf(server): drive shell last-error lookup from thread bindings by @only21mil in pingdotgg/t3code#17842
* perf(server): skip parsing plain terminal history output by @StiensWout in pingdotgg/t3code#17179
* perf(server): batch terminal history writes every 250 ms by @StiensWout in pingdotgg/t3code#17183
* perf(server): storage cleanup no longer runs a full status or size walk for worktrees it keeps by @tris203 in pingdotgg/t3code#17911
* perf(usage): usage scans skip OpenCode legacy messages older than the window by @tris203 in pingdotgg/t3code#17254
* perf(usage): OpenCode legacy walk stats entries before checking for symlinks by @tris203 in pingdotgg/t3code#17638
* fix(web): MCP app permission prompts no longer overflow the screen by @juliusmarminge in pingdotgg/t3code#17962
* feat(provider-antigravity): support subscription quota and usage limits by @Maseeek in pingdotgg/t3code#17530
* fix(desktop): keep generated annotation styles in sync by @t3-code[bot] in pingdotgg/t3code#17838
* fix(web): Resume continues on the model picked in the composer by @akbarakma in pingdotgg/t3code#17867
* fix(devices): bump agent-device to 0.21.24 for native Windows hosts by @TanJeeSchuan in pingdotgg/t3code#17706
* fix(web): keybinding group headings no longer touch the group above by @fixfon in pingdotgg/t3code#17766
* feat(web): configure OpenTelemetry exports in diagnostics by @MatthewFeroz in pingdotgg/t3code#12538
* docs: update user count to 500k by @Kamkmgamer in pingdotgg/t3code#17783
* fix(mobile): working pill no longer bulges on its right end by @id0Sch in pingdotgg/t3code#16143
* perf(opencode): stop retaining every message of a loaded OpenCode thread by @tris203 in pingdotgg/t3code#17784
* fix(web): switch thumbs stay in their track while scrolling by @raphaelpra in pingdotgg/t3code#15240
* fix(keybindings): thread jumps no longer overlap model picker jumps by @Fluffy-Bunny-23 in pingdotgg/t3code#14475
* fix(mobile): restore QR scanning in iPad pairing sheet by @arhammahajan in pingdotgg/t3code#16019
* fix(server): delegated Muse tasks no longer ask approval for every command by @t3dotgg in pingdotgg/t3code#18065
* fix(codex): prevent unsupported agent history in ChatGPT sharing by @connwalk in pingdotgg/t3code#17499
* fix(server): disabled providers stop checking for CLI updates by @yordis in pingdotgg/t3code#16772
* fix(mobile): round Android queued message sheet corners by @PixPMusic in pingdotgg/t3code#14934
* fix(ssh): record the archive lock owner's real PID by @Gigioxx in pingdotgg/t3code#14598
* fix(desktop): keep annotation comment direction independent of host page by @abdelrhmanehab10 in pingdotgg/t3code#11005
* fix(ssh): qualify runner script builders in tunnel test by @juliusmarminge in pingdotgg/t3code#18078
* fix(web): keep thread links open until the shell is live by @saphid in pingdotgg/t3code#14697
* fix(web): scope PR title collapse to tab scrollers by @Adamulek123 in pingdotgg/t3code#14644
* fix(server): detect fork PRs for branches without upstreams by @Adamulek123 in pingdotgg/t3code#13894
* fix(search): find threads by their branch PR number by @tris203 in pingdotgg/t3code#14658
* feat(web): show Claude workflow phases and members in Lineage by @Bil0000 in pingdotgg/t3code#12598
* fix(mobile): round Android Agents sheet corners by @PixPMusic in pingdotgg/t3code#14925
* fix(web): the Usage page sends a signed-out browser to pairing by @AdEx-Partners-DE in pingdotgg/t3code#17938
* fix(server): OpenCode 2 continuations end after a reconnect took a Stop's end by @juliusmarminge in pingdotgg/t3code#14744
* fix(server): OpenCode 2 continuations replay only their own background reply by @juliusmarminge in pingdotgg/t3code#14752
* fix(server): ACP reapplies a model after a switch away from it failed partway by @juliusmarminge in pingdotgg/t3code#14723
* fix(web): focus settings search with command-f by @extoci in pingdotgg/t3code#17859
* fix(mobile): keep Android project paths on one line by @wellorbetter in pingdotgg/t3code#14178
* fix(web): unpin preview dragging on narrow chat canvases by @MatthewFeroz in pingdotgg/t3code#15556
* fix(web): thread details toggle no longer covers the thread title on Windows desktop by @freddy-d in pingdotgg/t3code#16869
* fix(server): a directory no longer resolves as the resource monitor binary by @Furox-Art in pingdotgg/t3code#16838
* fix(server): a Claude usage limit no longer resets the context meter to 0% by @Vantrongs in pingdotgg/t3code#16394
* fix(server): GitLab merge requests can expand unchanged lines by @ScottN-PV in pingdotgg/t3code#17528
* fix(provider-cursor): a skill tree deeper than the scan limit no longer hides every skill by @ScottN-PV in pingdotgg/t3code#17389
* fix(web): pass hex theme colors to HTML renders by @RustedAperture in pingdotgg/t3code#16325
* fix(web): align the API estimate info icon by @RakshithBhat03 in pingdotgg/t3code#15655
* test(server): ACP teardown tests pass on Windows hosts by @sheehanmunim in pingdotgg/t3code#17080
* fix(server): sync device tool license versions with installer pins by @Yash-Singh1 in pingdotgg/t3code#18121
* fix: sync model favorites and visibility across clients by @jakeleventhal in pingdotgg/t3code#16816
* chore(deps-dev): bump compression from 1.8.1 to 1.8.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in pingdotgg/t3code#16309
* fix(server): update fff to stop runaway watcher rescans by @realhasanshoaib in pingdotgg/t3code#14543
* fix(mobile): license generation works with filtered installs by @Yash-Singh1 in pingdotgg/t3code#18127
* fix(mobile): image-only messages ask the agent to respond, like desktop by @whoisaldo in pingdotgg/t3code#16480

## New Contributors
* @Maseeek made their first contribution in pingdotgg/t3code#17530
* @TanJeeSchuan made their first contribution in pingdotgg/t3code#17706
* @fixfon made their first contribution in pingdotgg/t3code#17766
* @id0Sch made their first contribution in pingdotgg/t3code#16143
* @raphaelpra made their first contribution in pingdotgg/t3code#15240
* @Fluffy-Bunny-23 made their first contribution in pingdotgg/t3code#14475
* @arhammahajan made their first contribution in pingdotgg/t3code#16019
* @connwalk made their first contribution in pingdotgg/t3code#17499
* @abdelrhmanehab10 made their first contribution in pingdotgg/t3code#11005
* @AdEx-Partners-DE made their first contribution in pingdotgg/t3code#17938
* @wellorbetter made their first contribution in pingdotgg/t3code#14178
* @freddy-d made their first contribution in pingdotgg/t3code#16869
* @Furox-Art made their first contribution in pingdotgg/t3code#16838
* @RustedAperture made their first contribution in pingdotgg/t3code#16325
* @sheehanmunim made their first contribution in pingdotgg/t3code#17080
* @realhasanshoaib made their first contribution in pingdotgg/t3code#14543
* @whoisaldo made their first contribution in pingdotgg/t3code#16480

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261011.2955...v0.0.46-nightly.20261011.2967

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2967
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 11, 2026
## What's Changed
* perf(server): drive shell last-error lookup from thread bindings by @only21mil in pingdotgg/t3code#17842
* perf(server): skip parsing plain terminal history output by @StiensWout in pingdotgg/t3code#17179
* perf(server): batch terminal history writes every 250 ms by @StiensWout in pingdotgg/t3code#17183
* perf(server): storage cleanup no longer runs a full status or size walk for worktrees it keeps by @tris203 in pingdotgg/t3code#17911
* perf(usage): usage scans skip OpenCode legacy messages older than the window by @tris203 in pingdotgg/t3code#17254
* perf(usage): OpenCode legacy walk stats entries before checking for symlinks by @tris203 in pingdotgg/t3code#17638
* fix(web): MCP app permission prompts no longer overflow the screen by @juliusmarminge in pingdotgg/t3code#17962
* feat(provider-antigravity): support subscription quota and usage limits by @Maseeek in pingdotgg/t3code#17530
* fix(desktop): keep generated annotation styles in sync by @t3-code[bot] in pingdotgg/t3code#17838
* fix(web): Resume continues on the model picked in the composer by @akbarakma in pingdotgg/t3code#17867
* fix(devices): bump agent-device to 0.21.24 for native Windows hosts by @TanJeeSchuan in pingdotgg/t3code#17706
* fix(web): keybinding group headings no longer touch the group above by @fixfon in pingdotgg/t3code#17766
* feat(web): configure OpenTelemetry exports in diagnostics by @MatthewFeroz in pingdotgg/t3code#12538
* docs: update user count to 500k by @Kamkmgamer in pingdotgg/t3code#17783
* fix(mobile): working pill no longer bulges on its right end by @id0Sch in pingdotgg/t3code#16143
* perf(opencode): stop retaining every message of a loaded OpenCode thread by @tris203 in pingdotgg/t3code#17784
* fix(web): switch thumbs stay in their track while scrolling by @raphaelpra in pingdotgg/t3code#15240
* fix(keybindings): thread jumps no longer overlap model picker jumps by @Fluffy-Bunny-23 in pingdotgg/t3code#14475
* fix(mobile): restore QR scanning in iPad pairing sheet by @arhammahajan in pingdotgg/t3code#16019
* fix(server): delegated Muse tasks no longer ask approval for every command by @t3dotgg in pingdotgg/t3code#18065
* fix(codex): prevent unsupported agent history in ChatGPT sharing by @connwalk in pingdotgg/t3code#17499
* fix(server): disabled providers stop checking for CLI updates by @yordis in pingdotgg/t3code#16772
* fix(mobile): round Android queued message sheet corners by @PixPMusic in pingdotgg/t3code#14934
* fix(ssh): record the archive lock owner's real PID by @Gigioxx in pingdotgg/t3code#14598
* fix(desktop): keep annotation comment direction independent of host page by @abdelrhmanehab10 in pingdotgg/t3code#11005
* fix(ssh): qualify runner script builders in tunnel test by @juliusmarminge in pingdotgg/t3code#18078
* fix(web): keep thread links open until the shell is live by @saphid in pingdotgg/t3code#14697
* fix(web): scope PR title collapse to tab scrollers by @Adamulek123 in pingdotgg/t3code#14644
* fix(server): detect fork PRs for branches without upstreams by @Adamulek123 in pingdotgg/t3code#13894
* fix(search): find threads by their branch PR number by @tris203 in pingdotgg/t3code#14658
* feat(web): show Claude workflow phases and members in Lineage by @Bil0000 in pingdotgg/t3code#12598
* fix(mobile): round Android Agents sheet corners by @PixPMusic in pingdotgg/t3code#14925
* fix(web): the Usage page sends a signed-out browser to pairing by @AdEx-Partners-DE in pingdotgg/t3code#17938
* fix(server): OpenCode 2 continuations end after a reconnect took a Stop's end by @juliusmarminge in pingdotgg/t3code#14744
* fix(server): OpenCode 2 continuations replay only their own background reply by @juliusmarminge in pingdotgg/t3code#14752
* fix(server): ACP reapplies a model after a switch away from it failed partway by @juliusmarminge in pingdotgg/t3code#14723
* fix(web): focus settings search with command-f by @extoci in pingdotgg/t3code#17859
* fix(mobile): keep Android project paths on one line by @wellorbetter in pingdotgg/t3code#14178
* fix(web): unpin preview dragging on narrow chat canvases by @MatthewFeroz in pingdotgg/t3code#15556
* fix(web): thread details toggle no longer covers the thread title on Windows desktop by @freddy-d in pingdotgg/t3code#16869
* fix(server): a directory no longer resolves as the resource monitor binary by @Furox-Art in pingdotgg/t3code#16838
* fix(server): a Claude usage limit no longer resets the context meter to 0% by @Vantrongs in pingdotgg/t3code#16394
* fix(server): GitLab merge requests can expand unchanged lines by @ScottN-PV in pingdotgg/t3code#17528
* fix(provider-cursor): a skill tree deeper than the scan limit no longer hides every skill by @ScottN-PV in pingdotgg/t3code#17389
* fix(web): pass hex theme colors to HTML renders by @RustedAperture in pingdotgg/t3code#16325
* fix(web): align the API estimate info icon by @RakshithBhat03 in pingdotgg/t3code#15655
* test(server): ACP teardown tests pass on Windows hosts by @sheehanmunim in pingdotgg/t3code#17080
* fix(server): sync device tool license versions with installer pins by @Yash-Singh1 in pingdotgg/t3code#18121
* fix: sync model favorites and visibility across clients by @jakeleventhal in pingdotgg/t3code#16816
* chore(deps-dev): bump compression from 1.8.1 to 1.8.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in pingdotgg/t3code#16309
* fix(server): update fff to stop runaway watcher rescans by @realhasanshoaib in pingdotgg/t3code#14543
* fix(mobile): license generation works with filtered installs by @Yash-Singh1 in pingdotgg/t3code#18127
* fix(mobile): image-only messages ask the agent to respond, like desktop by @whoisaldo in pingdotgg/t3code#16480

## New Contributors
* @Maseeek made their first contribution in pingdotgg/t3code#17530
* @TanJeeSchuan made their first contribution in pingdotgg/t3code#17706
* @fixfon made their first contribution in pingdotgg/t3code#17766
* @id0Sch made their first contribution in pingdotgg/t3code#16143
* @raphaelpra made their first contribution in pingdotgg/t3code#15240
* @Fluffy-Bunny-23 made their first contribution in pingdotgg/t3code#14475
* @arhammahajan made their first contribution in pingdotgg/t3code#16019
* @connwalk made their first contribution in pingdotgg/t3code#17499
* @abdelrhmanehab10 made their first contribution in pingdotgg/t3code#11005
* @AdEx-Partners-DE made their first contribution in pingdotgg/t3code#17938
* @wellorbetter made their first contribution in pingdotgg/t3code#14178
* @freddy-d made their first contribution in pingdotgg/t3code#16869
* @Furox-Art made their first contribution in pingdotgg/t3code#16838
* @RustedAperture made their first contribution in pingdotgg/t3code#16325
* @sheehanmunim made their first contribution in pingdotgg/t3code#17080
* @realhasanshoaib made their first contribution in pingdotgg/t3code#14543
* @whoisaldo made their first contribution in pingdotgg/t3code#16480

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261011.2955...v0.0.46-nightly.20261011.2967

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261011.2967
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: QR scanning action missing from New Task → Add environment on iPad

2 participants