Skip to content

chore(sync): merge upstream main into Fold - #52

Merged
BreakTheBeta merged 17 commits into
mainfrom
sync-upstream-main
Sep 21, 2026
Merged

BreakTheBeta merged 17 commits into
mainfrom
sync-upstream-main

Conversation

@BreakTheBeta

Copy link
Copy Markdown
Owner

Problem

Fold's main was 14 commits behind upstream pingdotgg/t3code, and nothing in the repo recorded how these syncs are supposed to be done — so each one re-derived the same conflict decisions from scratch.

What this does

Merges upstream main (through adcd90858c) as a true merge commit, preserving the merge base so the next sync only has to resolve what changes after this point. No rebase, no squash, no cherry-picking.

All 14 upstream commits come in, and every Fold feature is preserved.

Conflicts, and how they were settled

One presentation prop instead of two overlapping ones. Upstream added presentation ("toolbar" | "menu") to OpenInPicker, ProjectScriptsControl, and GitActionsControl for its collapsed narrow header. Fold had independently added displayMode ("toolbar" | "panel") to the same components for the thread details panel. They name the same axis, so they're now one presentation prop with three values. Upstream's name wins deliberately — renaming it to Fold's convention would make every future upstream hunk touching that prop conflict. Upstream's extracted item lists (editorItems, scriptItems, gitItems, initializeGit) are reused by all three modes rather than duplicated into Fold's branches.

Regions Fold relocated. Fold moved the header's script/open-in/Git controls into ThreadDetailsPanel, and replaced the queued-message timeline row with its own queue UI. Upstream's reworks of those old locations don't apply; Fold's side stands. ChatHeader still picks up upstream's WorkspaceBreadcrumbText fade for narrow titles, which is the part of that change that does apply here.

state/query.ts. Both sides added dataUpdatedAt. Kept upstream's number | null contract plus Fold's fallback to the previous success — data already falls back on a failed refetch, so the timestamp has to follow it or the two disagree.

bin.test.ts / server.test.ts. Stay deleted. Orchestration v2 removed the v1 harnesses they exercise.

Also migrated Fold's server testkits and cli/project.test.ts to upstream's per-signal OTLP config (otlpTracesExport and friends) from pingdotgg#12657.

Maintainability

Adds docs/operations/upstream-sync.md: the procedure, why it must stay a merge, and the recurring conflict shapes above so the next sync recognises them instead of re-deciding. Refreshes the README's upstream baseline commit and date.

Verification

  • Typecheck across all workspaces ✅
  • Lint on every touched file ✅
  • Tests covering the merged areas ✅

Pre-existing failures are unchanged, and each was confirmed against a pre-merge checkout of the same tree: the act is not a function suites (a React 19 test-env issue that also fails in the main checkout) and contracts' responseStreamingMode case.

No UI screenshots: the only visual change Fold actually renders is upstream's breadcrumb text fade in ChatHeader.


Claude Opus 5 (1M context) via Claude Code in T3 Code.

🤖 Generated with Claude Code

flamboh and others added 16 commits September 20, 2026 18:25
…10831)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…tgg#12657)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
…ion (pingdotgg#10098)

Co-authored-by: shivamhwp <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Brings in 14 upstream commits (through adcd908) as a true merge, so the
next sync only has to resolve what changes after this point.

Conflicts, and how they were settled:

- OpenInPicker / ProjectScriptsControl / GitActionsControl: upstream added a
  `presentation` prop ("toolbar" | "menu") for its collapsed narrow header
  while Fold had added `displayMode` ("toolbar" | "panel") for the thread
  details panel. Both name the same axis, so they are now one
  `presentation` prop with three values. Upstream's name wins so its own call
  sites and future edits merge unchanged; Fold's "panel" rides along as an
  extra member. Upstream's extracted item lists (`editorItems`, `scriptItems`,
  `gitItems`, `initializeGit`) are reused by every mode rather than duplicated.
- ChatHeader: Fold moved scripts, open-in, and Git actions out of the header
  and into the thread details panel, so upstream's rework of that region does
  not apply. The header keeps Fold's layout and picks up upstream's
  WorkspaceBreadcrumbText fade for narrow titles.
- MessagesTimeline: Fold replaced the queued-message timeline row with its own
  queue UI, so upstream's citation fix for that row has no target here. The
  matching `UserMessageBody` prop relaxation merged cleanly.
- state/query.ts: both sides added `dataUpdatedAt`. Kept upstream's
  `number | null` contract plus Fold's fallback to the previous success, which
  keeps the timestamp consistent with `data` on a failed refetch.
- bin.test.ts / server.test.ts: stay deleted; orchestration v2 removed the v1
  harnesses they exercise.

Also migrated Fold's server testkits and cli/project.test.ts to upstream's
per-signal OTLP config (`otlpTracesExport` and friends) from pingdotgg#12657.

Verified: typecheck across all workspaces, lint on every touched file, and the
tests covering the merged areas. Pre-existing failures are unchanged — the
`act is not a function` suites fail the same way on the pre-merge tree, as does
contracts' responseStreamingMode case.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The merge lineage is the thing that keeps these syncs cheap, so write down
that it must stay a merge, and the recurring conflict shapes that otherwise
get re-derived from scratch each time. Refresh the README's upstream baseline
to the commit this sync landed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 20, 2026
@BreakTheBeta
BreakTheBeta merged commit 36752fb into main Sep 21, 2026
10 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants