chore(sync): absorb upstream main through 1604ccc9d (orchestrator V2) - #167
NoahHendrickson wants to merge 167 commits into
Conversation
Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: Vitalii Yehorov <vitalyiegorov@gmail.com> Co-authored-by: Jake Leventhal <jakeleventhal@me.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Alex Southwell <saphid@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Nicholas Wasmiller <derped@mineperial.com> Co-authored-by: PB <poilmb@gmail.com> Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com> Co-authored-by: Yash Singh <saiansh2525@gmail.com> Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com> Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com> Co-authored-by: scratchyone <scratchywon@gmail.com> Co-authored-by: Dominic Roy <dominic@sdko.org> Co-authored-by: chukfinley <chuk@chuk.dev> Co-authored-by: Primož Ajdišek <bigpod@bigpod.si> Co-authored-by: benthecarman <benthecarman@live.com> Co-authored-by: NaveDanan <nave0712@gmail.com> Co-authored-by: aaditagrawal <103925638+aaditagrawal@users.noreply.github.com> Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com> Co-authored-by: Nick Anisimov <n.anisimov.23@gmail.com> Co-authored-by: MacKinley Smith <smithmackinley@gmail.com> Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: AKolenda <akole779@mtroyal.ca> Co-authored-by: Guillermo Casanova <75276669+Gigioxx@users.noreply.github.com> Co-authored-by: Otavio Salvador <otavio@ossystems.com.br> Co-authored-by: Shirish Pothi <183252392+shirishpothi@users.noreply.github.com> Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com> Co-authored-by: Bob Fowler <bob@rjf.ca> Co-authored-by: Anton Bezdenezhnykh <gamer392@yandex.ru> Co-authored-by: ValeraZSD <48602572+ValeraZSD@users.noreply.github.com> Co-authored-by: Ephraim <ephraim39hr14m@gmail.com> Co-authored-by: Ryan Ilano <ryanilano@users.noreply.github.com> Co-authored-by: Alex <me@pixp.cc> Co-authored-by: maco <gosarmarcel7@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Tristan Knight <admin@snappeh.com> Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com> Co-authored-by: kamkm <99585688+Kamkmgamer@users.noreply.github.com> Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…4860) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ersion (pingdotgg#14863) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#14893) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gents (pingdotgg#14726) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ngdotgg#14903) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ge (pingdotgg#14915) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#14908) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…wser tabs (pingdotgg#14727) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…re binaries (pingdotgg#14944) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gdotgg#14972) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…string (pingdotgg#14950) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ingdotgg#14994) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Added markflorkowski and Yash-Singh1 to exemptions list.
…connect (pingdotgg#15002) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dotgg#15019) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pingdotgg#15016) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… sockets (pingdotgg#14897) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#15029) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dotgg#15024) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
pingdotgg#15008) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…retries back off (pingdotgg#15034) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…otgg#15041) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dotgg#15468) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…15475) Co-authored-by: Bil0000 <62337003+Bil0000@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ngdotgg#15847) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#15807) Co-authored-by: T3 Code Test <t3code-test@example.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…otgg#15577) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#15219) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…le (pingdotgg#15072) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gdotgg#15037) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Yash Singh <saiansh2525@gmail.com>
…ingdotgg#15546) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#14918) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…#15851) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
…#15853) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Merge upstream/main (166 commits since 024d495) into custom, including the orchestrator-V2 rewrite (pingdotgg#2829) the 2026-10-02 sync deferred. Server: the two fork customizations lost their hosts (CheckpointReactor.ts, server.test.ts, the ws.ts bootstrap block). server-local-thread-branch now hooks ThreadLaunchService's thread.create; server-local-checkout-branch-follow is a fork-owned follower (forkLocalCheckoutBranchFollow.ts) that RunFinalizationService feeds with the checkout status its observer already read, wired through runtimeLayer for production only. Desktop: the Electron profile mirrors upstream's V2 step — t3code-fork-v2, importing the fork's own t3code-fork once; the "T3 Code (Fork)" sentinel stays. The launch isolation script and its guard follow. Web: design-mode pills ride upstream's server-side queued runs (the client queue store is gone); the thread sidebar ports sweep-to-settle, the draft context menu, Working ordering and the limited status; the workspace header pills ride ActionGroup/ThreadDetailsControl toolbar-only; the override shadows absorb their upstream diffs; the lucide shim gains 14 glyphs. fork-subagent-spawn-card is parked (upstream removed its host; needs a V2 redesign). The fork lint baselines are re-measured against upstream's own ChatView. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
There was a problem hiding this comment.
Do not approve. The V2 re-homes are the right shape: the checkout follower is its own Reference with a no-op default, thread-branch fill-in sits on ThreadLaunchService.thread.create, draft rows go through presentThreadShell, the spawn tree is parked against V2SubagentGroup, and ChatComposer decides when the idle mic yields to resume. Do not decompose ChatComposer, theme.custom.css, or the yaml for this sync.
One structural miss. The new pill exception keys on a Tailwind utility the toolbar path never applies, so the 28px pin still clips the multiline git progress this PR claims to let out. Stamp a real attribute on that control and key the CSS on it.
Sent by Cursor Automation: Thermo nuke 4.6
| /* Upstream's git progress / success readouts (ThreadDetailsControl `multiline`, | ||
| class h-auto) grow a second output row while an action runs; the pin above | ||
| would clip it to one. Let that one button size to its content. */ | ||
| :root[data-fork="noahhendrickson-t3code"] [data-fork-pill] > button.h-auto { | ||
| height: auto; | ||
| } |
There was a problem hiding this comment.
this keys on a Tailwind utility the toolbar never has. ThreadDetailsControl on the toolbar (panel={false}) renders Button size="sm-multiline" — min-h-8 / sm:min-h-7, no h-auto. The panel path that does add h-auto is unmarked (data-fork-pill={isPanel ? undefined : true}). So this exception matches nothing, and the 28px pin above still clips the progress readout.
this works as a comment, but it makes the surrounding CSS more spaghetti. let's keep the behavior and restructure the hook.
Judo: stamp data-fork-pill-grow (or equivalent) on the toolbar multiline control — same last-resort fence as data-fork-pill — and key this rule on that attribute. Pin the attr + selector in the workspace-header guard; do not regex-lock .h-auto. Do not whole-file decompose theme.custom.css (3004).
| } | ||
| part="primary" | ||
| panel={isPanel} | ||
| multiline |
There was a problem hiding this comment.
this is the toolbar control the 28px pin clips. multiline here becomes Button sm-multiline, not class h-auto, so [data-fork-pill] > button.h-auto cannot see it.
Stamp data-fork-pill-grow when !isPanel (the Button already spreads leftover props). The panel success row below stays unmarked. That gives the CSS exception a real contract instead of a coincidental utility class.
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. |


Problem
customwas 166 commits behind upstream (last sync point024d49520, 2026-10-02). The first commit in that range is pingdotgg#2829, the orchestrator-V2 rewrite the previous sync (#164) deliberately left out: a full server rewrite that deletes the hosts of both fork server customizations (CheckpointReactor.ts,server.test.ts, thews.tsbootstrap block), moves the client-side message queue to the server, and steps the desktop profile.What this does
Merges
upstream/mainthrough1604ccc9dintocustom. 37 conflicted files resolved (30 content, 7 modify/delete), 5 override shadows ported by hand, every fork fence accounted for in a census against the pre-merge baseline.Notable decisions, all fenced and recorded in
.fork/customizations.yaml:server-local-thread-branchre-homes atThreadLaunchService'sthread.create(root and existing-folder launches read the live checkout; a worktree launch names its own branch).server-local-checkout-branch-followbecomes a fork-owned follower (forkLocalCheckoutBranchFollow.ts): run finalization's observer hands back the checkout status it already read, finalize passes it to the follower, andruntimeLayerprovides the real follower (backed by thread management) to production only — no layer cycle, and the replay harness keeps the no-op default. V2 has noexpectedBranchcompare-and-swap; the adoption is guarded byexpectedWorktreePath: null.t3code-fork-v2, importing the fork's ownt3code-forkonce (localStorage, Windows safeStorage keys); the never-matching"T3 Code (Fork)"sentinel stays. The launch isolation script and its guard follow.queuedMessageStore,sendQueuedMessage); queued sends are server-side runs on the singlestartTurnpath, so design-change pills ride every send. Editing an already-queued run leaves pills pending (no clientcreatedAtfor preview correlation). The idle dictation mic yields the slot to upstream's new resume action; a live session never does. The composer-inset stamp moved into upstream'spublishComposerOverlayHeight.limitedstatus into the fork's card rows;SidebarBrandWidthProbere-implemented for the fork's header geometry; the model/price dialogs ride in the usage popover body.ActionGroup/ThreadDetailsControl; the fork marks are toolbar-only, the new thread-details panel stays unmarked; the multiline git progress readout is let out of the 28px pin.ChatView.tsx; upstream's dead imports in fork-owned files carryoxlint-disable-next-linerather than deletion.fork-subagent-spawn-card— upstream removedAgentSpawnRowand the agent-panel model the fork tree drew from; spawn batches render throughV2SubagentGroup. The manifest records the parked state and the guard pins it; the Figma tree needs a V2-shaped redesign, not a port.Verified
ThreadLaunchService,RunFinalizationService,RunExecutionService, runtime layer); 1455 focused web tests (chat, sidebar, usage, custom, overrides); desktop identity / Clerk / user-data testsvp lint apps/web/src0 errors;.fork/lint-owned.mjsno blocking warningsNot run in a browser. Worth a look after merge: the queued-runs control inside the fork composer shell, the sweep gesture on card rows, the thread details panel pills, and first launch of a packaged build (V1 → V2 profile import).
Follow-ups (not in this PR)
V2SubagentGroupand un-parkfork-subagent-spawn-card.DEFERRED_RULES.Claude Fable 5.1 via Claude Code (T3 Code), with four subagents for the sidebar, composer, workspace-header and override-shadow/desktop clusters.
🤖 Generated with Claude Code