Skip to content

chore: sync upstream pingdotgg/t3code (20260708) - #126

Merged
adamfgr merged 17 commits into
mainfrom
chore/upstream-sync-20260708
Jul 8, 2026
Merged

chore: sync upstream pingdotgg/t3code (20260708)#126
adamfgr merged 17 commits into
mainfrom
chore/upstream-sync-20260708

Conversation

@wizzoapp

@wizzoapp wizzoapp Bot commented Jul 8, 2026

Copy link
Copy Markdown

Upstream sync — pingdotgg/t3code (2026-07-08)

Cherry-picks the 14 new upstream commits since the last sync
(32e7844..03ac1f0) onto main.

Synced commits

(The T3 Connect add → revert → re-revert sequence nets to the feature being
present, matching upstream main.)

Conflicts resolved (the only merge-introduced surface)

  • apps/mobile/app.config.ts — kept the fork's shared widgets const
    (also consumed by the Android string-resources plugin) and adopted
    upstream's new frequentUpdates: true entitlement.
  • apps/web/src/routes/__root.tsx — kept the fork-local <PwaRuntime />
    wrapper while tracking upstream's add/remove of <ConnectOnboardingDialog />
    through the revert sequence (present in final state).
  • apps/web/src/components/settings/ConnectionsSettings.tsx — kept the
    fork's superset of ConnectionsSettings.logic imports (remote pairing +
    resolveRelayClerkTokenOptions) on top of upstream's T3 Connect refactor.
  • .github/workflows/mobile-eas-preview.yml — kept the fork's deletion of
    this workflow (fork ships its own release-pipeline workflows).
  • scripts/build-desktop-artifact.test.ts — kept the fork's desktop ASAR
    packaging tests (the fork's DESKTOP_ASAR_UNPACK is a superset) and added
    upstream's new createStageWorkspaceConfig allowBuilds/patchedDependencies
    test; dropped upstream's fff shared library test that asserted the narrow
    upstream unpack set (incompatible with the fork's elaborate unpack).
  • patches/react-native-screens@4.25.2.patch — the auto-merge duplicated the
    Android ScreenStackHeaderConfigViewManager no-op setter overrides so pnpm
    could not apply the patch; took upstream's version verbatim (same pinned
    4.25.2) and refreshed the lockfile patch hash.
  • pnpm-lock.yaml — regenerated deterministically (pnpm 11.10.0) to reconcile
    fork-local entries after the mid-range lockfile resolution.

Verification (green)

  • vp run typecheck ✓ (15/15 workspaces)
  • vp check ✓ (0 errors, 14 pre-existing upstream-origin lint warnings)
  • vp test run ✓ (exit 0; hand-resolved build-desktop-artifact.test.ts = 30/30)

Sync gated by CI + the CI-only sync policy per the fork's upstream-sync
procedure; commits use the audited FACTORY_SKIP escape hatch.

juliusmarminge and others added 16 commits July 8, 2026 03:08
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#3755)

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Theo Browne <t3dotgg@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Reconcile the lockfile with the final package.json set (the mid-range
conflict resolution took upstream's lockfile wholesale, dropping some
fork-local entries; regenerated deterministically with pnpm 11.10.0).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The cherry-pick auto-merged patches/react-native-screens@4.25.2.patch and
duplicated the Android ScreenStackHeaderConfigViewManager no-op setter
overrides (fork's @@ -103 'config:' block + upstream's @@ -295 'view:'
block), so pnpm could not apply the patch. This patch backs an upstream
mobile nav feature on the same pinned 4.25.2; take upstream's version
verbatim and refresh the lockfile patch hash.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@wizzoapp

wizzoapp Bot commented Jul 8, 2026

Copy link
Copy Markdown
Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e78fad58ec

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread apps/web/src/cloud/useCloudLinkController.ts
Comment thread infra/relay/src/environments/EnvironmentLinker.ts
Comment thread packages/shared/src/agentAwareness.ts
Comment thread apps/mobile/src/features/cloud/CloudAuthProvider.tsx
Comment thread apps/mobile/src/features/cloud/ConnectOnboardingRouteScreen.tsx
Comment thread infra/relay/src/environments/EnvironmentLinker.ts
@wizzoapp
wizzoapp Bot marked this pull request as draft July 8, 2026 09:34
@wizzoapp
wizzoapp Bot marked this pull request as ready for review July 8, 2026 09:34

@adamfgr adamfgr left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Auto-approved by wizzo-approve: all policy conditions verified against HEAD 3ab3490.

@adamfgr
adamfgr added this pull request to the merge queue Jul 8, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3ab3490338

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines 526 to +530
}

flow.setSubmitting(true);
// Arm the lock-screen card before the async thread creation: backgrounding
// the app right after tapping submit would otherwise reject the foreground

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge End the Live Activity when task creation fails

On iOS with cloud enabled, this starts the lock-screen Live Activity before createProjectThread has succeeded. If the request rejects (offline, auth/session failure, or server error), no agent work exists to publish; the relay's replay for a freshly armed card suppresses a null aggregate during its grace window, and after the token registration succeeds there is no guaranteed follow-up to end the local card, so users can be left with a stale "Connecting" activity. Please either arm only after the task is durably created or end the local activity in the failure path; the same cleanup is needed for the existing-thread send path.

Useful? React with 👍 / 👎.

// Failing server-side first turns the hang into a completed 504 whose trace
// contains the exact child span that stalled, and the response still carries
// the traceparent back to the client.
export const RELAY_REQUEST_DEADLINE_MS = 9_000;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep the relay deadline above endpoint timeouts

For managed T3 Connect status/connect requests, EnvironmentConnector already waits up to ENVIRONMENT_MINT_REQUEST_TIMEOUT_MS (10s) and then maps the slow endpoint to the structured offline/endpoint-timeout responses. Wrapping every relay route in this 9s deadline preempts those paths, so a slow-but-expected endpoint now returns a generic 504 before the connector can classify it, making clients lose the per-environment status/timeout result. Exempt the managed endpoint routes or set this deadline above the connector timeout.

Useful? React with 👍 / 👎.

const deepLinkRow = attentionRow ?? row0;
const deepLink =
deepLinkRow && deepLinkRow.deepLink.startsWith("/") && !deepLinkRow.deepLink.startsWith("//")
? `t3code://${deepLinkRow.deepLink.slice(1)}`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Build widget links with the active app scheme

On development and preview builds, app.config.ts registers only t3code-dev/t3code-preview via scheme: variant.scheme, but the Live Activity widget always emits t3code://. Taps from those builds will either launch the production app if it is installed or fail to route back to the containing app, so the new widget deep links are broken outside production. Generate this URL from the active scheme (or register all variants natively) instead of hard-coding the production scheme.

Useful? React with 👍 / 👎.

Comment on lines +160 to +162
if (preferences === null) {
return true;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor notification permission for Live Activity alerts

When iOS notification permission is denied while Live Activities remain enabled, device registration stores notificationsEnabled: false but keeps the per-event switches true. This helper ignores the global flag, so chooseLiveActivityDelivery can still attach an alerting Live Activity update/end payload with sound: "default" for approvals or completions even though the device explicitly cannot receive notifications. Return false when preferences.notificationsEnabled is false before honoring the per-event switches.

Useful? React with 👍 / 👎.

Comment on lines +526 to +530
if (!(yield* tokens.hasCredential)) {
yield* Console.log(
"Run `t3 connect login` first so this environment can be authorized to publish.",
);
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Queue the publish-only link after login

If a user runs t3 connect publish before they have stored CLI credentials, this path sets the local publish flag and tells them to run t3 connect login, but returns before recording the desired publish_only link. connect login only stores credentials, and server startup only reconciles when the desired-link secret is present, so following the prompt leaves publishing enabled locally but the environment never links to the relay until the user discovers they must run publish again. Either queue the desired link here or have login complete the pending publish setup.

Useful? React with 👍 / 👎.

Merged via the queue into main with commit a725ab4 Jul 8, 2026
24 of 25 checks passed
@adamfgr
adamfgr deleted the chore/upstream-sync-20260708 branch July 8, 2026 10:00
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.

3 participants