chore: sync upstream pingdotgg/t3code (20260708) - #126
Conversation
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>
…otgg#3777) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
…gg#3781) 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>
|
@codex review |
There was a problem hiding this comment.
💡 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".
There was a problem hiding this comment.
💡 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".
| } | ||
|
|
||
| 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 |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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)}` |
There was a problem hiding this comment.
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 👍 / 👎.
| if (preferences === null) { | ||
| return true; | ||
| } |
There was a problem hiding this comment.
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 👍 / 👎.
| if (!(yield* tokens.hasCredential)) { | ||
| yield* Console.log( | ||
| "Run `t3 connect login` first so this environment can be authorized to publish.", | ||
| ); | ||
| return; |
There was a problem hiding this comment.
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 👍 / 👎.
Upstream sync — pingdotgg/t3code (2026-07-08)
Cherry-picks the 14 new upstream commits since the last sync
(
32e7844..03ac1f0) ontomain.Synced commits
7246b0a5bImprove live activity routing and diagnostics (Improve live activity routing and diagnostics pingdotgg/t3code#3685)97f833b0cPrevent Add Project sheet from collapsing on relayout (Prevent Add Project sheet from collapsing on relayout pingdotgg/t3code#3759)e8be5c676Use variant-specific splash icons in mobile app (Use variant-specific splash icons in mobile app pingdotgg/t3code#3762)04b305f95Fix Expo widget asset wiring order (Fix Expo widget asset wiring order pingdotgg/t3code#3763)d74cfc97aExtend Done display to 15 minutes and show up to 5 Live Activity banner rows (Extend Done display to 15 minutes and show up to 5 Live Activity banner rows pingdotgg/t3code#3761)0dc262e08Clear VCS presentation state on finish (Clear VCS presentation state on finish pingdotgg/t3code#3764)7d61eae3aLead with the outcome when no agents are active in the Live Activity (Lead with the outcome when no agents are active in the Live Activity pingdotgg/t3code#3768)2816b06aaAdd T3 Connect onboarding for mobile and web (Add T3 Connect onboarding for mobile and web pingdotgg/t3code#3765)caeaf307cRevert "Add T3 Connect onboarding for mobile and web" (Revert "Add T3 Connect onboarding for mobile and web" pingdotgg/t3code#3776)13d3bc27bExpose Clerk Google sign-in env vars to Expo (Expose Clerk Google sign-in env vars to Expo pingdotgg/t3code#3772)bf7817e23Set up Cursor Cloud dev environment (web + Android toolchain) (Set up Cursor Cloud dev environment (web + Android toolchain) pingdotgg/t3code#3755)55e7e79d4Revert "Revert "Add T3 Connect onboarding..."" (Revert "Revert "Add T3 Connect onboarding for mobile and web"" pingdotgg/t3code#3777)afe116c41Use rounded depth logo for production splash screen (Use rounded depth logo for production splash screen pingdotgg/t3code#3780)224f26977fix(release): stage pnpm 11 allowBuilds for desktop installs (fix(release): stage pnpm 11 allowBuilds for desktop installs pingdotgg/t3code#3781)(The T3 Connect add → revert → re-revert sequence nets to the feature being
present, matching upstream
main.)Conflicts resolved (the only merge-introduced surface)
widgetsconst(also consumed by the Android string-resources plugin) and adopted
upstream's new
frequentUpdates: trueentitlement.<PwaRuntime />wrapper while tracking upstream's add/remove of
<ConnectOnboardingDialog />through the revert sequence (present in final state).
fork's superset of
ConnectionsSettings.logicimports (remote pairing +resolveRelayClerkTokenOptions) on top of upstream's T3 Connect refactor.this workflow (fork ships its own release-pipeline workflows).
packaging tests (the fork's
DESKTOP_ASAR_UNPACKis a superset) and addedupstream's new
createStageWorkspaceConfigallowBuilds/patchedDependenciestest; dropped upstream's
fff shared librarytest that asserted the narrowupstream unpack set (incompatible with the fork's elaborate unpack).
Android
ScreenStackHeaderConfigViewManagerno-op setter overrides so pnpmcould not apply the patch; took upstream's version verbatim (same pinned
4.25.2) and refreshed the lockfile patch hash.
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-resolvedbuild-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_SKIPescape hatch.