Skip to content

chore(sync): merge upstream main through 511d20c6f2 - #100

Merged
BreakTheBeta merged 62 commits into
mainfrom
t3/sync-upstream-main-2
Oct 13, 2026
Merged

BreakTheBeta merged 62 commits into
mainfrom
t3/sync-upstream-main-2

Conversation

@BreakTheBeta

Copy link
Copy Markdown
Owner

Fold was 60 commits behind upstream main. This PR merges upstream through 511d20c6f2 (12 October 2026) and keeps every Fold feature.

What's in it

  1. chore(sync): merge upstream main into Fold: a real merge commit, per docs/operations/upstream-sync.md. Its message records how each conflict was settled. Highlights:
    • Mobile Markdown: upstream replaced its own Markdown module with the Enriched renderer. Fold's Android code that let a text selection span paragraphs is removed with it. Enriched also renders one selectable text view, but a selection may break at tables.
    • Foldable workspace: keeps Fold's fold-aware pane layout and adds upstream's new Android navigation rail, Pull Requests tab, and saved list filters. The rail's width comes out of the panes, so the sidebar still lines up with the hinge. Re-tapping the open thread no longer closes the files/terminal/git pane.
    • "Update everything" (upstream feat(web): one sidebar click updates every machine and provider pingdotgg/t3code#18053): upstream offered server updates only once the version was on npm. Fold servers install from Fold's GitHub releases, so a Fold-owned check of fold-server-v<version> replaces the npm check behind a one-line import seam.
    • Smaller ports: GLaDOS settings rows moved to upstream's ListRowLayout, since upstream deleted SettingsControlRow. Upstream's new prominentAction theme colour is threaded through Fold's theme code, and the mobile theme CSS is regenerated. The composer context sheet now uses upstream's native AppSheet.
  2. refactor(mobile): use upstream's Android Pull Requests tab: removes Fold's Android toolbar PR button and overflow-menu item, which upstream's tab now covers. The iPhone/iPad sidebar button and the command palette entry stay, and the palette now opens the Android tab. Also deletes upstream's now-unused npmRelease.ts.

Verify before merging

  • Android foldable layout with the new rail: sidebar width at the hinge, rail hiding with the sidebar, and the Pull Requests tab in the sidebar. This has only been typechecked, not run on a device.
  • Mobile Markdown selection across paragraphs, lists and tables on Android.
  • Reinstall dependencies: the Markdown module was removed, so existing checkouts need vp i.

Upstream behaviour changes

  • "Continue threads after server update" now defaults to on.
  • Typecheck scripts use tsc-rs.

Verification

  • tsc --noEmit is clean for mobile, web, desktop, server (also --singleThreaded), client-runtime, contracts, shared, scripts, and the touched provider and source-control packages.
  • Tests in every changed directory pass, except ones that fail on the pre-merge code too: the Ghostty terminal tests (the vendored wasm isn't built locally) and GitVcsDriverCore "preserves renames … modes".
  • Every row of the README's "More than upstream" table was checked on every surface it lists, comparing origin/main with the merge.
  • The pre-push gate passed.

Done by Claude Opus 5.5 (1M context) in Claude Code.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits October 11, 2026 17:22
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
…ingdotgg#18419)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
…nym (pingdotgg#18279)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#18207)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ead (pingdotgg#17611)

Signed-off-by: Tiger Kaovilai <passawit.kaovilai@gmail.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
…their mock CLI cannot run (pingdotgg#18184)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#18193)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Return exit 125 when the Linux cgroup wrapper target is missing, including when /bin/sh is Bash. Preserve arguments and child exit codes.
…efault (pingdotgg#18461)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rs (pingdotgg#18476)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 28 commits October 11, 2026 21:35
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#18454)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…uilds (pingdotgg#18560)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#18450)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…crashes (pingdotgg#18566)

Disable WaylandWpColorManagerV1 before Electron is ready only on native Wayland Hyprland sessions running a stock 0.48.0-0.50.1 release, which advertise FEATURE_SET_PRIMARIES but reject set_primaries (hyprwm/Hyprland#9444; fixed in 0.51.0 by hyprwm/Hyprland#11499). Any probe failure or explicit feature override keeps the default.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#18654)

Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…g#18679)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Merges pingdotgg/t3code main at 511d20c (60 commits since 6ba6a0d).

Took upstream's:
- Mobile Markdown is now upstream's Enriched renderer. Fold's
  AndroidSelectableMarkdownText (one Text tree so selection spans blocks),
  its package export, and SelectableMarkdownText.android.tsx are removed with
  the t3-markdown-text module. Enriched renders a single selectable native
  text view with Android selection colours. Upstream's github flavor may split
  selection at tables; recheck if cross-block selection matters there.
- ComposerContextSheet uses upstream's AppSheet (native FormSheet). Fold's
  keyboard-first Android back on that sheet's old Modal has no hook there and
  is dropped; the preview modals keep it.
- thread-work-log tool-image tile uses upstream's bg-screen (theme-contrast
  fix) rather than Fold's bg-card.
- SettingsControlRow was deleted upstream; GLaDOS settings rows now use
  upstream's ListRowLayout with the same content.

Ported onto Fold:
- AdaptiveWorkspaceLayout keeps Fold's fold-aware, non-animated pane geometry
  and adds upstream's Android navigation rail (subtracted from the pane width
  and the hinge-aligned sidebar width), the Pull Requests sidebar tab, saved
  list filters, and Android tab-aware thread selection. Upstream's animated
  sidebar/content sizing is not used. Re-selecting the open thread keeps
  Fold's inspector pane.
- Fold's PR entry points (sidebar/toolbar button, mobile command palette)
  select upstream's Android Pull Requests tab when it exists. The tabs
  provider now wraps the keyboard command provider so the palette reaches it.
  Upstream's rail duplicates the Android toolbar button; it is kept for now.
- MaterialThreadListToolbar keeps Fold's sizing and options menu with
  upstream's focus-guarded back handler.
- mobile-preferences keeps Fold's FoldPreferences seam beside upstream's new
  list-filter preferences; the workspace reads saved filters from Fold's
  once-read preferences.
- mobileTheme threads upstream's prominentAction through Fold's Clerk
  palette split; generated Uniwind themes regenerated.
- "Update everything" (upstream pingdotgg#18053) waited for t3 on npm. Fold servers
  install from Fold releases, so a Fold-owned foldServerRelease check of
  fold-server-v<version> replaces it behind a one-line import seam; upstream's
  npmRelease.ts stays untouched and unused. Its test fixture gains Fold's
  updateRepository capability, and docs/user/updating.md says Fold release.

Upstream behaviour changes worth knowing: continueThreadsAfterServerUpdate now
defaults to true; typecheck scripts use tsc-rs.

Verification: tsc clean for mobile, web, desktop, server (incl.
--singleThreaded), client-runtime, contracts, shared, scripts and the touched
provider/source-control packages. Tests in every changed directory pass
except ones that also fail without this merge here: ghostty wasm tests (vendor
wasm not built) and GitVcsDriverCore "preserves renames ... modes" (fails on
origin/main's code too). README feature table walked on every surface.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Upstream's Android navigation (rail and bottom bar) now has a Pull Requests
tab, so Fold's thread-list toolbar button and overflow-menu item duplicated
it. Both are removed. Fold's iPhone/iPad sidebar button and the command
palette entry stay; the palette selects the tab on Android.

Also deletes upstream's apps/web/src/state/npmRelease.ts, which nothing uses
since "update everything" checks Fold's server releases instead.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@BreakTheBeta
BreakTheBeta merged commit 808cde4 into main Oct 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.