Repository navigation
chore: merge upstream pingdotgg/t3code through 12069eefd7 - #200
Open
andrewcai8 wants to merge 97 commits into
Open
andrewcai8 wants to merge 97 commits into
andrewcai8 wants to merge 97 commits into
Conversation
…turn settles (pingdotgg#16878) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nt is idle (pingdotgg#16486) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ingdotgg#16287) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… connect (pingdotgg#16887) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ntrackedFiles=no (pingdotgg#15834) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nd (pingdotgg#14917) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#16895) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ady holds (pingdotgg#16897) Co-authored-by: saphid <saphid@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…legacy (pingdotgg#16903) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… phone's orientation (pingdotgg#16885) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…16908) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#16676) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: PR Batch Tester <agent@local.test>
…pingdotgg#15856) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pingdotgg#16939) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#16757) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ingdotgg#16917) Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ttp (pingdotgg#16909) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tgg#16974) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…6284) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…14677) Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com>
…height (pingdotgg#17086) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Guillaume <78903686+grodriguez-fr@users.noreply.github.com> Co-authored-by: Cristian Uibar <cristi@buffup.media> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#17127) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#17137) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… databases (pingdotgg#17139) Takeover of pingdotgg#13902. Co-authored-by: Derek Trimm <275381468+derektrimm@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…le decoding (pingdotgg#17141) Continues pingdotgg#17044 by @SunkenInTime. Co-authored-by: Dara Adedeji <daraadedeji07@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…dotgg#16970) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…7140) Keep up to six Cursor usage pages requested ahead of the one being read, still read in page order, and cancel requests left in flight when the read ends. Continues pingdotgg#14384. Co-authored-by: Krishna Vijay <228381532+im-kvijay@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rge (pingdotgg#17148) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…only what is still loading (pingdotgg#17147) Takeover of pingdotgg#16376. Co-authored-by: Ben Davis <45952064+bmdavis419@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#17145) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#17152) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pos (pingdotgg#15946) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…0439) Co-authored-by: Yash Singh <saiansh2525@gmail.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merges upstream 611132c..12069ee (91 commits). 18 files conflicted. Fork adaptations beyond the conflicts: - Thread links no longer carry an environment (upstream pingdotgg#17017), so the MCP list item and Home's fleet launch result drop `link`, Home's watch reports name threads by title, and Home's instructions say a link only opens threads in Home's own environment. - Cursor usage for extra Cursor logins reads through upstream's cached CursorAccountReader. The fork's own history cache is removed. - A cloud box's cached shell fills its deferred pull request links before the host-chat reseed saves it back. - Fork migration ledger test expects upstream migrations 59 and 60. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…swers Upstream pingdotgg#17017 dropped the required `link` from thread list, read and launch results. A cloud box still on a pre-#200 build decodes the host's answers with its old schema, so a launch into a new cloud chat that provisioned a machine read as a failure there, and a retry provisioned a duplicate. Lists of sleeping boxes and calls passed through from upgraded boxes failed the same way. The host now adds the old `[title](t3-thread://v1/<environmentId>/<threadId>)` link to every thread in those answers before it sends them to a box, keeping any link the answer already carries. New decoders drop it. The step is marked for deletion once every cloud box runs #200 or later. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
…ts for its cache write The merged thread details panel renders the same Run on picker as the composer but never received the fork's cloud options, which failed web typecheck. ChatView now passes cloud.runOn through ThreadDetailsPanel. The Cursor logins test scoped the service outside the temporary state directory, so the account cache write could race its removal. Scope it inside, as the upstream UsageService tests do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…reader The merge moved Cursor account reads onto upstream's CursorAccountReader service, and UsageService.make now registers a finalizer that waits for its cache writes, so it needs a Scope. The import script built the scanner without either, which failed server typecheck. The script now provides CursorUsageReader.layer, as server.ts does, and scopes the scan so the scanner's cache lands before the upload starts. The script still filters Cursor instances and keeps keychain reads off, so the reader is never asked for an account. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test scoped the service outside its temporary state directory, so the scanner's cache write could race the directory's removal (ENOTEMPTY, 2 of 5 local runs). Scope it inside, as the Cursor logins test now does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The daily upstream sync failed again because
git merge upstream/mainhit 18 conflicts. This merges upstream611132c171..12069eefd7(91 commits) by hand, as a real merge commit. The fork's cloud machines, Home port, worker forks, account rotation and background-shell fixes all stay. Upstream wins everywhere the fork had not deliberately changed something.Notable upstream changes
@muse-code/sdkdependency. Cloud provisioning has no case for it, so it is refused as "does not support cloud provisioning", like the other providers outside Codex, Claude and Cursor.[title](t3-thread://v1/<threadId>)opens the thread in the environment of the message that holds the link, and clients show the thread's current title. Tools no longer return a readylink.t3command from Settings (feat(desktop): install the t3 command from Settings pingdotgg/t3code#16683). Sign-in and captchas work in desktop browser tabs (fix(desktop): sign-in and captchas work again in desktop browser tabs pingdotgg/t3code#16939).Cross-environment series and Home
Conflicted files and how each was resolved
Server MCP and contracts:
packages/contracts/src/orchestratorMcp.ts: kept the fork'sprojectIdon thread list items and droppedlink, as upstream did.apps/server/src/mcp/OrchestratorMcpService.ts: upstream'snowMs-only list item and detail. Kept the fork's exportedlistItemFromShellandreadThreadPage.readThreadPageno longer takes an environment id.toolkits/orchestrator/tools.ts,toolkits/project/tools.ts: upstream's descriptions, including how to write a thread link, with the fork's Home sentence appended.t3_thread_launchkeeps the fork'sFleetThreadLaunchResult.toolkits/thread/tools.ts: upstream's description and its newsettlesWhenTurnEndsresult, with the fork'sFleetThreadOrganizeInputparameters and Home sentence.toolkits/thread/handlers.ts: the fork's Home routing first, then upstream'ssettleThread({ byOwnAgent }). Home's fleet path settles other threads directly, which is one member of the new result union.toolkits/project/handlers.ts: the fork's Home and remote launch block. The upstream-removedlinkstays removed.Server, other:
orchestration-v2/ProviderTurnStartService.ts: both. The fork's resume-fallback notice and upstream'srefusedBeforePromptcheck sit side by side.usage/UsageService.ts: upstream's parallel source scan and its cached Cursor reader. The fork's box usage reads,maxHourlyWindowMsandusageHostIdstay. See below for extra Cursor logins.apps/server/package.json,pnpm-lock.yaml: both@namespacelabs/sdk(fork) and@muse-code/sdk(upstream).Web:
ChatView.tsx: a held cloud send claims its first turn, then upstream resets full history.timelineSkillspasses the fork's provisioned skills.BranchToolbar.tsx: upstream'sdisplayModelabel with the fork's cloud "Run on" label first.BranchToolbarEnvironmentSelector.tsx: upstream droppeddisplayModeand the panel styling here. Only the fork'scloudRunOnprop remains.usage/UsagePage.tsx: upstream'sshownWindow, keeping the fork's "to now" label and live reference time for the past-24-hours view (fork perf(client): reuse usage queries within the hour and ask only selected environments #36).Client runtime and mobile:
client-runtime/src/connection/presentation.ts: the fork's box exports and blocked-reason type plus upstream's route helpers.client-runtime/src/platform/persistence.ts: the fork'sCatalogRegistrationplus upstream'sDeferredShellSnapshot.apps/mobile/src/Stack.tsx: both imports.CloudBoxesWorkerstill mounts in the new v5 layout.What the fork had to adapt beyond the conflicts
link.FleetServiceandCloudFleetHoststop building it. Home's watch reports name a thread by its quoted title next to its environment and thread id. Home's AGENTS section now says to link threads in Home's own environment as[title](t3-thread://v1/<threadId>)and to name threads elsewhere by title and environment. Before this, a Home link opened a thread on any machine. Now only Home's own machine's threads are clickable until upstream lands cross-environment references.CursorAccountReader. The fork'scursorAccountHistory.tsdid the same thing in memory, so it is deleted.cursorLogins.tsnow only lists the other Cursor instances' logins.UsageServicereads each one through upstream'scursorAccountSourceand counts an account reached through several logins once. The existing two-login tests now passawaitRefresh, since upstream answers a cold read with arefreshingsource.Reseedstep loads the cached box shell and saves it back. It now fills the deferred links first (withPullRequestsLoaded), so a reseed cannot strip a box's PR links from the cache. New tests cover it.CursorUsageReader.layer.Verification
Run locally with the main checkout's installed
node_moduleslinked in. No network installs.src/environmentControl,ProviderAccountSwitch.test.tsandsrc/usage: 67 files, 1001 tests pass.src/mcp,src/home,src/project: 47 of 48 files, 509 of 510 tests pass. Orchestration around the merged areas (ProviderSessionManager,ProviderTurnStartService,RunExecutionService,ThreadManagementService,ThreadStop,ClaudeAdapterV2,ProviderSwitchand background-note integration): 12 files, 396 tests pass.src/persistence,server.test,RpcAuthorization,runtimeLayer: pass.threadLinksandusageFormat: pass. client-runtimeconnection,platform, shell state,providerSkills,rpc: 28 files, 374 tests pass.BranchToolbarlogic and panel,ChatView.logic,components/usage,src/cloud,components/home: 30 files, 364 tests pass.vp linton every resolved and adapted file: no errors.Failures I saw, none in files this merge touched:
AgentSessionScanner"excludes sandboxes reached through a symlink" fails here. Guess: macOS/varis itself a symlink to/private/var. The file is unchanged by this merge.ProviderRegistry"re-probes when settings change the codex binaryPath" fails here because this Mac has Homebrew and the probe also spawnsbrew. Guess: CI's Linux runners have nobrew.UsageService"upgrades a v4 cache" is flaky. It failed 1 of 4 runs on the merged file and 4 of 5 runs with upstream's ownUsageService.tsswapped in, so it is upstream's flake.Could not run:
@muse-code/sdkis not installed in the main checkout, and network installs are off. Server suites ran against a local, uncommitted stub of the package, so the Muse adapter, SDK and text-generation tests were not run. CI installs the real package.Old cloud boxes and thread links
Cloud boxes upgrade only when idle, so a busy one keeps the pre-merge build for days. Those builds decode thread list, read and launch answers with a required
link, which pingdotgg#17017 removed. Without it, an old box'st3_thread_launchinto a new cloud chat provisioned a machine but read the answer as a failure, and a retry provisioned a second one. Listing a sleeping box, and calls the host passed through from an upgraded box, failed the same way.CloudFleetHostnow adds the old[title](t3-thread://v1/<environmentId>/<threadId>)link to each thread in those answers before it sends them to a box. It keeps a link the answer already has. New boxes drop the field. The code is marked for deletion once every cloud box runs this merge or later. A test decodes the host's list, read and launch answers with the pre-merge schemas. It fails withMissing key at ["threads"][0]["link"]without the change.Risks
readThread,settleThread, the shell cache types and the usage service requirements. The tests above cover the fork code that uses them, but CI may still find a type break in auto-merged code.threads.list. A new host reads an old guest's extralinkfield fine. An old host would reject a new guest's list, because the field it expects is gone. Guess: hosts and guests run the same release.Claude Opus 5.5, Claude Code
🤖 Generated with Claude Code