Skip to content

fix(web): point pairing copy at Sharing & access - #27692

Merged
juliusmarminge merged 5 commits into
pingdotgg:mainfrom
PedroNavHur:pedro/fix-link-create-path
Nov 13, 2026
Merged

juliusmarminge merged 5 commits into
pingdotgg:mainfrom
PedroNavHur:pedro/fix-link-create-path

Conversation

@PedroNavHur

@PedroNavHur PedroNavHur commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The Link a machine dialog and the link cards on web and mobile say to make a pairing code under Settings → Connections → Create link. Connections is a sidebar group with two pages, Environments and Sharing & access, so the path stops one level short. Environments (/settings/connections), the first page in that group and the one this dialog lives on, has no Create link button. The button is in the Authorized clients header on Sharing & access (/settings/access). Fixes https://git.cafe/pingdotgg/t3code/issues/27688.

Change

The copy now points at the pages that hold each control:

 Pairing code hint (web settings dialog, web link card, mobile link card)
-Settings → Connections → Create link
+Settings → Sharing & access → Authorized clients → Create link

 Revoke hints (dialog headers, Forget confirm, pairing placeholder, t3 environment link/unlink)
-in that machine's Connections
+in that machine's Sharing & access   (under Authorized clients where the sentence has room)

 "Already linked" hint (web and mobile link card)
-change its access in Settings → Connections
+change its access in Settings → Environments

PeerLinks.link registers the linking machine on the other machine as an OAuth client named T3 Code · <label>. EnvironmentAuth.listClientSessions returns that session, and Sharing & access lists and revokes it under Authorized clients. So the revoke hints belonged on Sharing & access as well. The Linked environments section, where a link's access is changed by linking again, is rendered by ConnectionsSettings on the Environments page.

The t3 pair there hint stays. One more stale string remains on purpose: the MCP t3_environment_unlink description in apps/server/src/mcp/toolkits/orchestrator/tools.ts also says "Connections". It is text a model reads, and changing it would mean running the paid mcp-tool-use eval, so it is left for a separate change.

Scope and approval

This is a copy-only fix for the bug in https://git.cafe/pingdotgg/t3code/issues/27688. It changes no behavior.

Verification

  • vp run check:changed upstream/main passed: format, lint, knip, graphql, typecheck of 5 packages, the test beside the change, and the React compiler check.

  • After the change, grep -rn "Connections" over the four touched files finds nothing.

  • Ran base (1da41f9) and head dev servers side by side, saved each as an environment in the other with a pairing code that lacks access:write, turned on Linked environments in Labs, and opened Link with that machine selected. That is the state where the dialog asks for a code.

    Before: Link an environment dialog, before
    After: Link an environment dialog, after

    Where the new path leads, on the other machine. Create link sits in the Authorized clients header on Sharing & access:

    Sharing & access with Authorized clients and Create link

  • Not captured: the web link card and the mobile link card. Both need a link request that an agent posts in a thread. They render the same hint text as the dialog above, changed in the same way.


Posted by Claude Code (claude-opus-5-5) via T3 Code triage.

Fixes #27688

@github-actions github-actions Bot added vouch:unvouched Author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Oct 30, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 52729e0

Macroscope's review found this PR approvable — Updates pairing and revocation instructions to use the current settings names across web, mobile, and CLI. The changes are text-only and leave access controls, defaults, and linking behavior unchanged.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • Resume reviews
  • Trigger review

No actionable comments were generated in the recent review.

Walkthrough

Linked-environment instructions in web, mobile, and CLI now refer to Sharing & access and Authorized clients for link creation, access changes, and revocation.

Changes: Linked environment guidance

Layer / File(s) Summary
Update linked-environment navigation guidance
apps/web/src/components/settings/LinkedEnvironmentsSettings.tsx, apps/web/src/components/chat/LinkRequestCard.tsx, apps/mobile/src/features/threads/LinkRequestCard.tsx, apps/server/src/cli/environment.ts
Instructions identify Sharing & access and Authorized clients for creating, finding, changing access to, and revoking links. The unlink operation and its no-link message are unchanged.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix · Severity of issue fixed: Low

Possibly related issues

  • pingdotgg/t3code#30181 — The card instructions now identify Sharing & access as the location for creating a link. The reported wrong-machine code failure is unchanged.
  • pingdotgg/t3code#26772 — The revoke guidance now points to Sharing & access, where Authorized clients is located. The confirmation and status behavior described in the issue is unchanged.

Suggested reviewers: juliusmarminge

Merge Risk: Minimal · previous review 2146f

This is a copy-only change that points users to the correct Sharing & access and Environments settings pages. No behavior changes or merge-blocking risk were identified.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title "fix(web): point pairing copy at Sharing & access" names the main change: the pairing and link copy now points to the Sharing & access settings page. It follows the conventional commit forma…
Description check Passed The description follows the template. It has Problem, Change, Scope and approval, and Verification sections. The Problem section explains the incorrect Connections path and links issue #27688. The Cha…
Linked Issues check Passed [#27688] asks that pairing-code hints name Settings → Sharing & access → Authorized clients → Create link, and that revoke guidance name Sharing & access. The reviewed head changes the web dialog (Lin…
Out of Scope Changes check Passed All changed files are copy-only edits to user-facing hints. They cover the web dialog, web and mobile link cards, and CLI descriptions and output named in [#27688]. The focused diff of apps/server/src…
Full details: Title check

Explanation

The title "fix(web): point pairing copy at Sharing & access" names the main change: the pairing and link copy now points to the Sharing & access settings page. It follows the conventional commit format and is specific. The changeset also updates the CLI, mobile, and web link cards, which the title does not name, but the title is still clearly related to the main change.

Full details: Description check

Explanation

The description follows the template. It has Problem, Change, Scope and approval, and Verification sections. The Problem section explains the incorrect Connections path and links issue #27688. The Change section shows the copy diff and explains the revoke and already-linked hints. Scope states this is a copy-only fix and links the issue. Verification lists the check command, grep result, before and after screenshots, and states what was not captured (web and mobile link cards). The description also states the MCP tool description was left out on purpose. The Scope section does not include a maintainer approval comment, which the template asks for. It relies on the linked issue as the triage record, so the gap is minor. The template asks for a conventional commit title in the title. The title meets that requirement.

Full details: Linked Issues check

Explanation

[#27688] asks that pairing-code hints name Settings → Sharing & access → Authorized clients → Create link, and that revoke guidance name Sharing & access. The reviewed head changes the web dialog (LinkedEnvironmentsSettings.tsx), the web link card (chat/LinkRequestCard.tsx), and the mobile link card (mobile features/threads/LinkRequestCard.tsx) to these paths. The CLI descriptions for t3 environment link and t3 environment unlink, and the unlink success text, now name Sharing & access. A focused diff of apps/server/src/cli/environment.ts confirms that only description and output strings changed. The issue asks for copy-only changes, so no behavior change is required. The MCP t3_environment_unlink description is not named in the issue. The PR description states it is deferred, so it does not block this requirement. No coding requirement remains unmet. Automated tests were not added, and the issue does not request any.

Full details: Out of Scope Changes check

Explanation

All changed files are copy-only edits to user-facing hints. They cover the web dialog, web and mobile link cards, and CLI descriptions and output named in [#27688]. The focused diff of apps/server/src/cli/environment.ts shows string changes only, with no control-flow or behavior change. The summaries for the other three files describe the same kind of change. The PR does not touch unrelated product areas. The unchanged MCP description is a deliberate deferral and does not add out-of-scope change.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 7b6b90f and 2146f7a.

Files selected for processing: 4

  • apps/mobile/src/features/threads/LinkRequestCard.tsx
  • apps/server/src/cli/environment.ts
  • apps/web/src/components/chat/LinkRequestCard.tsx
  • apps/web/src/components/settings/LinkedEnvironmentsSettings.tsx
Files skipped from review as they are similar to previous changes: 4

  • apps/web/src/components/chat/LinkRequestCard.tsx
  • apps/web/src/components/settings/LinkedEnvironmentsSettings.tsx
  • apps/server/src/cli/environment.ts
  • apps/mobile/src/features/threads/LinkRequestCard.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.

@juliusmarminge juliusmarminge added bugfix Fix PR opened by an issue lead; enters the PR loop pr:gate-failed A land gate failed labels Oct 30, 2026
@PedroNavHur
PedroNavHur force-pushed the pedro/fix-link-create-path branch 2 times, most recently from c8abd64 to e755508 Compare October 30, 2026 21:09
The Link a machine dialog and the link cards on web and mobile told
users to create a pairing code under Settings → Connections. That page
is now labeled Environments and has no Create link button. The button
is in the Authorized clients header on Sharing & access, which is also
where the session a link creates on the other machine is listed and
revoked.

Point the pairing hint, the revoke hints, and the t3 environment
link/unlink CLI text at Sharing & access, and point the "change its
access" hint at Environments, where the Linked environments section is.

Fixes pingdotgg#27688
@PedroNavHur
PedroNavHur force-pushed the pedro/fix-link-create-path branch from b90a33e to 7b6b90f Compare October 31, 2026 18:42

maria-rcks commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

verified unchanged at 7b6b90f0ad0d2716ae3265a25b99f005be126575 on this linux boat vm, using repo playwright 1.60.0 and /usr/bin/google-chrome.

  • reproduced on github/main (5fe18d79ac) in a separate worktree, then stopped its dev server before starting the exact pr head with isolated state. one dev runner at a time.
  • created projects and threads through the ui and ran real codex gpt-6.1-sol turns on both revisions. the resulting link-request cards show the old and corrected pairing paths. the settings link dialog also shows the corrected revoke guidance and placeholder.
  • followed settings → sharing & access → authorized clients → create link. created a pairing code, paired a separate browser context, saw the new authorized client, and revoked it. also created and revoked a pairing link.
  • linked a separate, same-head standalone peer through the codex card with supervised access. the cli reported it reachable; the peer listed its actual T3 Code · … oauth session. the existing-link card points to settings → environments. the forget confirmation points to sharing & access.
  • exercised the actual cli unlink command: its success text names sharing & access. confirmed the remote session remains after local unlink, then revoked it through the running peer's authenticated http endpoint and confirmed it disappeared.
  • neighboring guards also worked: an older 0.1.2 peer was rejected for missing linked-agent limits; the same-head peer rejected linking while its labs switch was off and accepted it after enabling the switch through the client.

current github checks: 21 successful, 8 skipped, no failures or pending checks. no source changes, commits, or pushes were needed. automated checks were not rerun.

main settings dialog:

main settings link dialog with stale connections guidance

pr settings dialog:

pr settings link dialog with sharing and access guidance

main codex-generated link card:

main codex link card with stale create-link path

pr codex-generated link card, same form state:

pr codex link card with corrected create-link path

settings navigation, pairing-link creation, pairing-link revocation, and client revocation:

real settings creation and revocation flow

short command transcript

Not verified

media rendering limitation: the four screenshots render on github. github does not embed the mp4 with the requested image markdown, and git.cafe renders external media as links. the uploaded mp4 was opened in t3's rendered browser player, played to the end, and successfully sought.

native ios/android and the electron shell were not exercised on this linux browser setup. windows/macos, relay/tailscale/tunnel connections, and providers other than codex were not exercised. the older installed peer could not complete a link because of its version guard; the same-head peer completed it. no claim is made about older versions having the new settings names.

@juliusmarminge

Copy link
Copy Markdown
Member

The automated pipeline stopped on this pull request and will not merge it:

the proof was not accepted:

  • New defect in the after: settings-address-pairing.png (after, dfedbc0) shows the no-machine pairing-code placeholder clipped at the input's right edge as "From that environment's Sharing & access, or t3 pair ther". The final letter is cut off. The base placeholder ("From that environment's Connections, or t3 pair there") fits. The longer string the PR introduces in LinkedEnvironmentsSettings.tsx:336 overflows the field at 1280x800.
  • sharing-authorized-clients.png before and after are byte-identical (same md5), as are sharing-create-link-dialog.png before and after. One capture was uploaded under both labels, so these 'Destination context' pairs are not independent before/after captures. They also sit outside the diff and prove nothing about it.
  • The access-change recordings (change-link-access.mp4, change-link-access-trimmed.mp4) are not the same length (7.5s vs 5.8s, 'trimmed'). Both show only the machine-selected dialog state and never the no-machine placeholder state, so they cannot show the clipping either way.

It stays open for a person to finish or close.

@juliusmarminge juliusmarminge added the takeover:in-progress A takeover lead is working on this PR label Nov 13, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Evidence

Enable Linked environments in Labs, save a target without access:write, then inspect its Link dialog and Another address placeholder. Open a replay-agent-posted link request before and after linking the target; inspect Forget confirmation. Repeat the agent-request states on iOS. Run CLI link/unlink help and successfully unlink the target.

Web: Chromium, 1280×800, light theme. Native: iPhone 18 Pro, iOS 27.2, 402×874 logical pixels, light theme. Both commits used fresh isolated databases, synthetic data, and the same driver. All stills were visually inspected and stable across captures at least 500 ms apart; stale toasts were dismissed.

Surface Before — 5f85768394 After — b6aea10be2
Settings pairing and revocation Before: settings pairing and revocation After: settings pairing and revocation
Another address placeholder Before: Another address placeholder After: Another address placeholder
Web agent-request pairing and revocation Before: web agent-request pairing and revocation After: web agent-request pairing and revocation
Web access-change guidance Before: web access-change guidance After: web access-change guidance
Forget-link confirmation Before: Forget-link confirmation After: Forget-link confirmation
iOS pairing and revocation Before: iOS pairing and revocation After: iOS pairing and revocation
iOS access-change guidance Before: iOS access-change guidance After: iOS access-change guidance
CLI descriptions and successful unlink Before transcript After transcript

The unchanged target page confirms the destination exists:

Target environment: Sharing & access, Authorized clients, Create link

Reproduction driver and native capture instructions.

Observed: base directs pairing, revocation, and access changes to Connections. Head directs pairing to Sharing & access → Authorized clients → Create link, revocation to Sharing & access, and access changes to Environments. The longer placeholder fits on both commits at 1280×800; the previously reported clipping was not reproduced.

@juliusmarminge juliusmarminge added takeover:ready Takeover done; auto-lands when gates pass and removed takeover:in-progress A takeover lead is working on this PR labels Nov 13, 2026
@juliusmarminge
juliusmarminge merged commit 6790f85 into pingdotgg:main Nov 13, 2026
40 checks passed
@juliusmarminge juliusmarminge removed the takeover:ready Takeover done; auto-lands when gates pass label Nov 13, 2026
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Nov 13, 2026
**v0.1.10-nightly.20261113.4643** · 21 changes from 5 contributors

- **Faster server reconnection.** Remote servers reconnect as soon as they are ready after Update everything.
- **Copilot follow-up messages.** Send your next Copilot message without waiting for background shell commands to exit.

### Plus 19 more bug fixes and performance improvements.

<details>
<summary>Full changelog</summary>

## What's Changed
* fix(provider-core): Vite+ provider updates respect npm's release-age policy by @juliusmarminge in pingdotgg/t3code#32340
* fix(web): point pairing copy at Sharing & access by @PedroNavHur in pingdotgg/t3code#27692
* fix(web): turn diffs cut off at the size limit say changes are incomplete by @juliusmarminge in pingdotgg/t3code#36079
* fix(web): narrow-window right panel dialog is named Workspace panel by @juliusmarminge in pingdotgg/t3code#36085
* fix(server): thread reads preview linked PRs and list_thread_pull_requests pages by @juliusmarminge in pingdotgg/t3code#35858
* fix(web): new project publish option tells screen readers whether it is on by @juliusmarminge in pingdotgg/t3code#36090
* fix(server): preview drag moves the mouse during the drag by @juliusmarminge in pingdotgg/t3code#36096
* fix(server): a fresh-session scheduled run no longer takes over the thread's conversation by @juliusmarminge in pingdotgg/t3code#36103
* fix(server): deferred-steer check and queued cancel no longer read a thread's whole history by @juliusmarminge in pingdotgg/t3code#36100
* fix(composer): keep reviews from different Git hosts in suggestions by @saphitv in pingdotgg/t3code#36104
* fix(web): terminal "Add to chat" now adds to a queued message being edited by @juliusmarminge in pingdotgg/t3code#36117
* fix(mobile): a final answer followed by more work in the same run stays visible by @juliusmarminge in pingdotgg/t3code#36116
* fix(web): a server updated with the app reconnects as soon as it is ready by @Bil0000 in pingdotgg/t3code#35327
* fix(acp): Copilot runs end when its reply is done, not when its async shells exit by @juliusmarminge in pingdotgg/t3code#36122
* fix(server): a link forgotten mid-resolve says it is not linked by @juliusmarminge in pingdotgg/t3code#36132
* fix(server): t3_queue and handoff analytics no longer read a thread's whole history by @juliusmarminge in pingdotgg/t3code#36130
* perf(server): shell reads of a worktree or family no longer parse every thread payload by @juliusmarminge in pingdotgg/t3code#36146
* fix(desktop): Local environment off survives an unreadable value in desktop-settings.json by @juliusmarminge in pingdotgg/t3code#36168
* fix(mobile): a sub-agent opened from its parent on a narrow iPad keeps Back by @juliusmarminge in pingdotgg/t3code#36175
* fix(server): Codex usage answering after three seconds is no longer dropped by @juliusmarminge in pingdotgg/t3code#36189
* fix(mobile): iOS terminal font and theme changes no longer replay output by @shivamhwp in pingdotgg/t3code#36115

## New Contributors
* @PedroNavHur made their first contribution in pingdotgg/t3code#27692

**Full Changelog**: pingdotgg/t3code@v0.1.10-nightly.20261113.4630...v0.1.10-nightly.20261113.4643

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.10-nightly.20261113.4643
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Nov 13, 2026
Co-authored-by: Julius Marminge <[email protected]>
(cherry picked from commit 6790f85)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Fix PR opened by an issue lead; enters the PR loop pr:gate-failed A land gate failed size:M 30-99 changed lines (additions + deletions). vouch:unvouched Author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Linked environments says Create link is in Settings → Connections, but it's in Sharing & access

3 participants