From 8b82d4edf6e0d5dee7d91bd16196d95fdf5f2264 Mon Sep 17 00:00:00 2001 From: extoci Date: Thu, 22 Oct 2026 21:14:43 +0000 Subject: [PATCH 1/5] fix(copy): clarify connection setup and pairing --- .../connection/ConnectionsNewRouteScreen.tsx | 4 +--- .../settings/EnvironmentRoutesSection.tsx | 4 ++-- apps/web/src/components/HostedEmptyState.tsx | 12 ++++++------ .../cloud/ConnectOnboardingDialog.tsx | 17 +++++++---------- .../settings/AuthorizedClientsSettings.tsx | 10 +++++----- .../settings/SavedEnvironmentRows.tsx | 10 +++++----- .../components/settings/SessionPermissions.tsx | 4 ++-- .../src/components/settings/settingsSearch.ts | 2 +- 8 files changed, 29 insertions(+), 34 deletions(-) diff --git a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx index a91e7b69d9ea..c25e95de120d 100644 --- a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx +++ b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx @@ -377,9 +377,7 @@ function T3ConnectSection() { return ( - - Or use the managed relay - + Or use T3 Connect {isSignedIn ? ( - Applies to the route marked In use. Other routes may have different permissions and - have not been checked. + These permissions only apply to the current connection. Other ways of connecting may + have different permissions. {AUTH_SCOPE_OPTIONS.map(({ scope, title }) => ( diff --git a/apps/web/src/components/HostedEmptyState.tsx b/apps/web/src/components/HostedEmptyState.tsx index 4bf8195a5ea1..e66a42843c33 100644 --- a/apps/web/src/components/HostedEmptyState.tsx +++ b/apps/web/src/components/HostedEmptyState.tsx @@ -36,14 +36,14 @@ export function HostedEmptyState() { - {localEnvironmentOff ? "This computer is off" : "No computer connected"} + {localEnvironmentOff ? "This host is disabled in T3 Code" : "No host connected"} {localEnvironmentOff - ? "Turn it back on, or connect a different computer." + ? "Enable it in Connections, or connect another host." : cloudEnabled - ? "Your agents run on your computer." - : "Your agents run on your computer. Start T3 Code there first."} + ? "Your agents run on your host." + : "Your agents run on your host. Start T3 Code there first."} @@ -106,7 +106,7 @@ function T3ConnectSteps() { return next; }), }} - empty={

Waiting for your computer…

} + empty={

Waiting for your host…

} /> ) : null} @@ -148,7 +148,7 @@ function SetupStep({ function RunOnComputer({ command }: { readonly command: string }) { return ( <> -

Run on your computer:

+

Run on your host:

- Mesh your devices together. Publish this environment and connect the rest, all in one - place. - + <>Use T3 Code on your other devices. Choose what to share and which hosts to connect. } > {steps.length > 1 ? ( @@ -279,7 +276,7 @@ function ConfiguredConnectOnboardingDialog() { } const STEP_LABELS: Record = { - publish: "Publish", + publish: "Access and activity", devices: "Connect devices", }; @@ -302,15 +299,15 @@ function PublishStep({
) : shareablePairingUrl === null ? (

- Copy the token and pair from another client using this backend's reachable host. + Copy the pairing code. On your other device, enter it alongside this server's + address.

) : null}
@@ -484,8 +485,8 @@ const PairingLinkListRow = memo(function PairingLinkListRow({ ) : (

- No QR for this endpoint. Another device scanning a loopback link would dial itself; - copy the URL for use on this machine instead. + This address only works on this device. Choose a network address to pair another + device.

)} @@ -674,8 +675,7 @@ export const AuthorizedClientsHeaderAction = memo(function AuthorizedClientsHead Create pairing link - Generate a one-time link that another device can use to pair with this backend as an - authorized client. + Generate a single-use link to connect another device to this T3 Code server. diff --git a/apps/web/src/components/settings/SavedEnvironmentRows.tsx b/apps/web/src/components/settings/SavedEnvironmentRows.tsx index 5a331193bcae..20ad5ab484de 100644 --- a/apps/web/src/components/settings/SavedEnvironmentRows.tsx +++ b/apps/web/src/components/settings/SavedEnvironmentRows.tsx @@ -547,7 +547,7 @@ function ConfiguredCloudLinkRow({ canManageRelay }: { readonly canManageRelay: b description: enabled ? "This environment is available through T3 Connect." : publishAgentActivity - ? "The managed tunnel was removed. Agent activity publishing stays on." + ? "The managed tunnel was removed. Agent activity stays enabled." : "This environment is no longer available through T3 Connect.", }); } @@ -567,8 +567,8 @@ function ConfiguredCloudLinkRow({ canManageRelay }: { readonly canManageRelay: b type: "success", title: enabled ? "Agent activity enabled" : "Agent activity disabled", description: enabled - ? "This environment publishes agent activity to your mobile clients." - : "This environment will stop publishing agent activity.", + ? "This environment sends agent activity to your mobile devices." + : "This environment will stop sending agent activity to your mobile devices.", }); } setIsUpdatingPreference(false); @@ -639,14 +639,14 @@ function ConfiguredCloudLinkRow({ canManageRelay }: { readonly canManageRelay: b description={ signedOut ? "Sign in to send activity to mobile notifications and Live Activities." - : "Send activity to mobile notifications and Live Activities without T3 Connect." + : "Use agent activity in push notifications or Live Activities on your phone." } control={ signedOut ? ( signInButton ) : (

{routeContext - ? "These permissions apply to your active route. Other routes may have different permissions." - : "These permissions apply to this client’s current connection."} + ? "These permissions only apply to the current connection. Other ways of connecting may have different permissions." + : "These permissions only apply to the current connection."}

    {AUTH_SCOPE_OPTIONS.map(({ scope, title }) => ( diff --git a/apps/web/src/components/settings/settingsSearch.ts b/apps/web/src/components/settings/settingsSearch.ts index 000ae5d4742e..253ff679def7 100644 --- a/apps/web/src/components/settings/settingsSearch.ts +++ b/apps/web/src/components/settings/settingsSearch.ts @@ -993,7 +993,7 @@ export const SETTINGS_SEARCH_ITEMS = [ { id: "publish-agent-activity", localEnvironmentOnly: true, - title: "Publish agent activity", + title: "Send agent activity to mobile devices", to: "/settings/connections", targetId: "connections-environment", searchTerms: ["mobile push notifications live activities cloud tunnel"], From b1e89639b4ba673df90c5b4e3327439108594d33 Mon Sep 17 00:00:00 2001 From: extoci Date: Fri, 23 Oct 2026 18:58:32 +0000 Subject: [PATCH 2/5] fix(copy): name the host in T3 Connect setup --- apps/web/src/components/HostedEmptyState.tsx | 2 +- .../cloud/ConnectOnboardingDialog.tsx | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/web/src/components/HostedEmptyState.tsx b/apps/web/src/components/HostedEmptyState.tsx index e66a42843c33..e3ca0ea60006 100644 --- a/apps/web/src/components/HostedEmptyState.tsx +++ b/apps/web/src/components/HostedEmptyState.tsx @@ -42,7 +42,7 @@ export function HostedEmptyState() { {localEnvironmentOff ? "Enable it in Connections, or connect another host." : cloudEnabled - ? "Your agents run on your host." + ? "Your agents run on your computer." : "Your agents run on your host. Start T3 Code there first."} diff --git a/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx b/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx index 9afc61fb2d30..34676f5a8bd9 100644 --- a/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx +++ b/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx @@ -63,6 +63,11 @@ function ConfiguredConnectOnboardingDialog() { primaryEnvironmentId === null ? environmentsReady : primarySessionState._tag !== "Initial"; const controller = useCloudLinkController(); + const hostLabel = controller.linkState.target?.label ?? "this host"; + const stepLabels: Record = { + publish: `Share ${hostLabel}`, + devices: "Connect devices", + }; const showPublishStep = canManageRelay && controller.linkState.target !== null; const steps: ReadonlyArray = showPublishStep ? ["publish", "devices"] @@ -196,7 +201,7 @@ function ConfiguredConnectOnboardingDialog() { > {steps.length > 1 ? ( STEP_LABELS[id])} + steps={steps.map((id) => stepLabels[id])} currentStep={steps.indexOf(step)} isStepDisabled={() => isApplying} onStepChange={(index) => { @@ -216,6 +221,7 @@ function ConfiguredConnectOnboardingDialog() { {step === "publish" ? ( = { - publish: "Access and activity", - devices: "Connect devices", -}; - function PublishStep({ + hostLabel, exposeEnvironment, publishAgentActivity, disabled, @@ -288,6 +290,7 @@ function PublishStep({ onExposeEnvironmentChange, onPublishAgentActivityChange, }: { + readonly hostLabel: string; readonly exposeEnvironment: boolean; readonly publishAgentActivity: boolean; readonly disabled: boolean; @@ -300,7 +303,7 @@ function PublishStep({
    Date: Sat, 24 Oct 2026 10:10:35 +0000 Subject: [PATCH 3/5] fix(copy): explain why local pairing has no QR code --- .../web/src/components/settings/AuthorizedClientsSettings.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/settings/AuthorizedClientsSettings.tsx b/apps/web/src/components/settings/AuthorizedClientsSettings.tsx index d75372b112b3..b02761c6a09a 100644 --- a/apps/web/src/components/settings/AuthorizedClientsSettings.tsx +++ b/apps/web/src/components/settings/AuthorizedClientsSettings.tsx @@ -485,8 +485,8 @@ const PairingLinkListRow = memo(function PairingLinkListRow({ ) : (

    - This address only works on this device. Choose a network address to pair another - device. + Not showing a QR code because this address only works on this device. Use a network + address instead, or copy the link to use it here.

    )} From 341ed11ef75b998e56f4cf411d7ea751c5b669f7 Mon Sep 17 00:00:00 2001 From: maria-rcks Date: Thu, 5 Nov 2026 05:01:46 +0000 Subject: [PATCH 4/5] fix(web): read the Connect host label from the environment list --- apps/web/src/components/cloud/ConnectOnboardingDialog.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx b/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx index 2a9d078a0fe0..05884b0ea6e9 100644 --- a/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx +++ b/apps/web/src/components/cloud/ConnectOnboardingDialog.tsx @@ -78,7 +78,10 @@ function ConfiguredConnectOnboardingDialog() { primaryEnvironmentId === null ? environmentsReady : primarySessionState._tag !== "Initial"; const controller = useCloudLinkController(primaryEnvironmentId); - const hostLabel = controller.linkState.target?.label ?? "this host"; + const linkTargetId = controller.linkState.target?.environmentId; + const hostLabel = + environments.find((environment) => environment.environmentId === linkTargetId)?.label ?? + "this host"; const stepLabels: Record = { publish: `Share ${hostLabel}`, devices: "Connect devices", From a74925788dd5835e41fedc62b16925361f931cf9 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Sun, 15 Nov 2026 04:29:37 +0000 Subject: [PATCH 5/5] docs(user): rename agent activity toggle in telemetry guide The setting is now labelled "Send agent activity to mobile devices". Co-Authored-By: Claude Opus 5.5 --- docs/user/telemetry.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/user/telemetry.md b/docs/user/telemetry.md index 2f2ccc893276..0184b622dc63 100644 --- a/docs/user/telemetry.md +++ b/docs/user/telemetry.md @@ -51,14 +51,14 @@ managed policy do not disable mobile tracing. ## Agent activity for mobile notifications -When **Publish agent activity** is enabled on a host, it sends project and thread titles, model -names, activity status, and environment and thread identifiers to the T3 Connect relay for -[mobile notifications and live activities](./mobile-notifications.md). This is separate from -product events and relay diagnostics. The telemetry opt-out does not disable it. - -To stop publishing, turn off **Publish agent activity** under **Settings > Sharing & access** on -the host. Turning off notifications on a phone controls that phone's alerts, not the host's -publishing setting. +When **Send agent activity to mobile devices** is enabled on a host, it sends project and thread +titles, model names, activity status, and environment and thread identifiers to the T3 Connect +relay for [mobile notifications and live activities](./mobile-notifications.md). This is separate +from product events and relay diagnostics. The telemetry opt-out does not disable it. + +To stop sending it, turn off **Send agent activity to mobile devices** under **Settings > Sharing & +access** on the host. Turning off notifications on a phone controls that phone's alerts, not the +host's setting. ## Export diagnostics to your own receiver