Repository navigation
chore: sync with upstream/main (58e60bf5e) - #82
Conversation
…esktop (pingdotgg#25802) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: amv146 <39172404+amv146@users.noreply.github.com>
… a giant heading (pingdotgg#25804) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#25695) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gg#25829) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…5830) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…dotgg#25793) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…iB page kernels (pingdotgg#25825) TEMPORARY workaround for an upstream Node bug: nodejs/node#67048 Node 26.9+ --build-sea writes linux-arm64 executables that 16/64 KiB page kernels cannot load. linux-arm64 now injects with postject, and the archive build rejects incompatible ELF layouts. One-time exception. Revert once Node ships a fix: grep for the Node issue URL and drop postject from scripts/package.json. Fixes pingdotgg#23433. Replaces pingdotgg#23443. Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25666) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s 4x faster (pingdotgg#25824) Co-authored-by: Omar <76748259+omar9848492@users.noreply.github.com> Co-authored-by: Carlos D. Escobar-Valbuena <carlosdavidescobar@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (Claude Code) <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ingdotgg#25816) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…h no list open (pingdotgg#25809) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…saves a draft twice (pingdotgg#25768) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ering (pingdotgg#25846) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rning (pingdotgg#25819) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…first commit (pingdotgg#25817) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rom screen effects (pingdotgg#25820) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#25837) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#25860) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25812) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#25882) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…d one (pingdotgg#25839) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s it unavailable (pingdotgg#25632) Co-authored-by: Theo Browne <me@theo.li>
…otgg#25841) Co-authored-by: jason chien <3936511+jason5545@users.noreply.github.com>
…b checks agent-device 0.21.32 folds the iPhone Duo in Simlock's device set. The folded Duo keeps its side rail inside a thread, so the hide-on-push tab checks only apply to bottom tab bars. The Duo poses stay pending: alert accept cannot see the open-link prompt on the Duo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#25854) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…derive instead of syncing (pingdotgg#25813) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…checks tokens, and lists the pool through worker reconnects (pingdotgg#26706) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…filter (pingdotgg#26730) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ong threads (pingdotgg#26739) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…f usage (pingdotgg#26164) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…6779) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…its usage limit (pingdotgg#26234) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#24937) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#26522) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#26859) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…E-2026-111497) (pingdotgg#26348) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…a thread (pingdotgg#26874) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Merge pingdotgg/t3code main (58e60bf) into the fork. ADRs in docs/adr record how each fork feature was reconciled.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Git 2.56 reports a .git file pointing nowhere as "gitfile does not point to a valid repository" instead of "not a git repository", so cleanup recorded a failure instead of keeping the worktree. GitHub's ubuntu-24.04 image now ships Git 2.56 and upstream's storage cleanup test fails there.
| client_id: clientId, | ||
| grant_type: "refresh_token", | ||
| refresh_token: session.refreshToken, |
There was a problem hiding this comment.
⚫️ [PROBLEM] Provide a supported refresh path for expiring GitHub App tokens
⚫️ [PROBLEM] In packages/source-control-github/src/server/GitHubAppSignIn.ts:210–212, the refresh grant sends client_id and refresh_token, but GitHub's GitHub App refresh endpoint also requires client_secret. The device-code exchange can succeed without a secret, so initial sign-in works while refreshing an expiring user token fails; once the access token expires, app-only users lose GitHub access and must sign in again. The mocked refresh responses do not exercise that requirement. Route refreshes through a confidential backend that holds the app secret, or explicitly support non-expiring tokens/re-authentication instead; do not bundle the app secret into distributed clients.
| const body = yield* decodeToolCallResponse( | ||
| responseJson(response.headers["content-type"], yield* response.text), | ||
| ).pipe( |
There was a problem hiding this comment.
⚫️ [PROBLEM] Bound peer calls through response-body completion
⚫️ [PROBLEM] apps/server/src/peer/PeerMcpClient.ts:200–202 reads the whole response without an application deadline, and the initialization and POST requests at lines 103–151 are unbounded as well. A peer can answer its descriptor successfully and then stall /mcp or keep its SSE body open. In that case, the 50-second wait chunks in PeerForwarding do not bound the actual HTTP operation, so followers cannot reach their retry logic. Cancellation is also affected: RemoteDelegation.cancel awaits stopThere before recording the local cancellation (apps/server/src/peer/RemoteDelegation.ts:729–734). Add deadlines covering both headers and body consumption, allowing the requested wait duration plus transport grace for wait calls, and map expiry to a retryable failure.
|
Thanks for building out linked-environment workflows and the recovery paths around them. OverviewThis change adds peer linking and remote task delegation through MCP, GitHub App sign-in, shared terminal sizing across clients, and new diagnostics and startup recovery behavior. My review focused on the new peer transport, authentication, and related recovery and terminal paths; it was not an exhaustive review of all 2,382 changed files. I inspected code and tests but did not execute the test suite. Main Issues⚫️ GitHub App refresh cannot authenticate: ⚫️ Stalled peer calls delay recovery and cancellation: Recommendation: request changes for these two issues. Both are detailed inline with suggested approaches. |
Problem
The fork is 362 commits behind
upstream/main. This sync keeps the features recorded indocs/adrand uses upstream's implementation wherever it can.Change
Merged
pingdotgg/t3codemain at58e60bf5e808fc226d9b769d66d1ea9fec014d23. 45 files conflicted, and 7 upstream workflow edits hit workflows the fork deletes. The fork's diff against upstream came through almost unchanged; the real work was re-homing fork code onto upstream refactors.Re-homed on upstream's structure
fillNewTaskWorkspaceBranchnow takes the project's Default base branch, and picks no base while Create new branch is off. The new task flow, its send path, and the pending-drafts list share that one rule.resolveAutomaticWorktreeBaseBranchwas deleted and its tests moved. Upstream removed queued-task editing (#25684), so the fork's copy of the toggle there went with it.environmentReleaseCheckAtom(#25895). Its reader now returns the server's version andreleaseRepositorytogether.update_scheduled_taskintoschedule_task(#25423). The fork'stargetstays on the combined input, and the update branch now forwards it; upstream's does not.createNewBranchwere reapplied there.LegacySidebar.tsx,logicalProject.ts, the catalog store's unusedclear,withRunningThreadContinuation, and the remaining capability gates (project overrides, link-resolutionpullRequests). Fork tests that asserted those gates were reduced to the cases that still apply.agentContextBudget.jsonmust equal the measured context. It now records the fork's MCP tool list (46,912 bytes, about 1 KB over upstream's because of the fork'stargetandcreateBranchcopy).ci.ymlon GitHub-hosted runners, without upstream's Blacksmith apt mirrors, and ported upstream's built-web boot check. Dropped upstream's newagent-context-budget.ymlandmobile-fingerprint-label.yml; the release, relay, desktop, and mobile workflows stay deleted.CI fix outside the merge. GitHub's
ubuntu-24.04image moved from Git 2.55 to 2.56, which reports a.gitfile pointing nowhere as "gitfile does not point to a valid repository". Upstream's storage cleanup only recognized "not a git repository", so its own test failed on the runner (and would onmain). Storage cleanup now accepts both messages; ADR 0027 records it.Implemented upstream: nothing new this round. Upstream's spoken short names (#24205) sit beside ADR 0007's slug qualifiers instead of replacing them.
ADRs
All ADRs now compare against
58e60bf5e. Notes were added or rewritten in 0007, 0008, 0009, 0011, 0014, 0016, and 0021, and ADR 0027 is new.git show --remerge-diff HEADshows the whole conflict resolution.Scope and approval
This is a maintainer-requested sync of the fork onto upstream. Every fork divergence is covered by an ADR in
docs/adr.Verification
vp run check:changed upstream/main: format, lint, knip, GraphQL, typecheck (36 packages), tests (136 files, including web browser tests), and React compiler coverage all pass.GitManagertests needGIT_CONFIG_GLOBAL=/dev/nullhere, because the global config setspush.default=upstream.LD_LIBRARY_PATH.vp check, and a manual pass in a real client. CI runs the suites.Model: Claude Opus 5.5; harness: Claude Code in T3 Code.
🤖 Generated with Claude Code