Repository navigation
merge upstream/main into fork - #502
Merged
adampeterhiggins merged 136 commits intoOct 27, 2026
Merged
Conversation
…provider and cwd (pingdotgg#25370) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…aft, not by the composer (pingdotgg#25376) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Poses now cover iPhone SE, iPhone 18 Pro, iPhone Duo folded and unfolded, iPad Pro 13" in both orientations, Pixel 10 Pro, Pixel 10 Pro Fold folded, unfolded and unfolded landscape, and Pixel Tablet in both orientations. Landscape poses rotate once the app is up (a rotation during launch is lost) and check that the screen really is wider than tall. Taps fall back to the element's centre when agent-device refuses a covered ref, and a gateway whose workers briefly reconnect is retried. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The --prepare flag from pingdotgg#25390 had no default, so effect/cli made it required and every mobile:install failed with "Missing required flag". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agent-device names rotations relative to the device's natural orientation, which is landscape on the Pixel Tablet and an unfolded Fold, so "landscape-left" turned them portrait. The runner now asks for a shape and tries each rotation until the screen has it. It also prepares each platform's dev client before leasing, rides out longer worker drops, and skips the Duo poses by default until agent-device can fold Simlock's simulators. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oes (pingdotgg#25426) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tart (pingdotgg#25364) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25456) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…from mounted components (pingdotgg#25459) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…eir listeners (pingdotgg#25464) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e hears scrolling through one viewport signal (pingdotgg#25463) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25477) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…r thread is not open (pingdotgg#25457) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… search runs from handlers (pingdotgg#25458) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25489) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#25493) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#25468) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25461) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25461) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ger throws (pingdotgg#25503) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#25462) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#25515) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gg#25516) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…er title (pingdotgg#25521) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…hout effects (pingdotgg#25523) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#25530) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…text by 23% (pingdotgg#25790) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#25778) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#24741) Co-authored-by: none23 <n.anisimov.23@gmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… warnings (pingdotgg#25815) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rives (pingdotgg#25805) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…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>
# Conflicts: # apps/mobile/src/App.tsx # apps/mobile/src/features/home/HomeScreen.tsx # apps/mobile/src/features/pull-requests/PullRequestListFilters.tsx # apps/mobile/src/features/pull-requests/PullRequestsScreen.tsx # apps/mobile/src/features/pull-requests/pullRequestList.test.ts # apps/mobile/src/features/pull-requests/usePullRequestList.ts # apps/mobile/src/features/settings/SettingsRouteScreen.tsx # apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx # apps/mobile/src/features/threads/NewTaskDraftScreen.tsx # apps/mobile/src/features/threads/ThreadComposer.tsx # apps/mobile/src/features/threads/ThreadFeed.tsx # apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx # apps/mobile/src/features/threads/ThreadQueueControl.tsx # apps/mobile/src/features/threads/thread-list-v2-items.tsx # apps/mobile/src/features/threads/use-composer-command-menu.test.ts # apps/mobile/src/features/threads/use-composer-command-menu.ts # apps/mobile/src/lib/markdownDocument.ts # apps/mobile/src/native/EnrichedMarkdownText.tsx # apps/mobile/src/state/use-selected-thread-requests.ts # apps/server/src/mcp/McpHttpServer.test.ts # apps/server/src/mcp/McpHttpServer.ts # apps/server/src/mcp/toolkits/preview/tools.ts # apps/server/src/mcp/toolkits/thread/tools.ts # apps/server/src/orchestration-v2/ProviderTurnStartService.ts # apps/server/src/provider/builtInDrivers.ts # apps/server/src/provider/providerStatusCache.ts # apps/web/src/AppRoot.tsx # apps/web/src/appInit.tsx # apps/web/src/components/ChatMarkdown.tsx # apps/web/src/components/ChatView.tsx # apps/web/src/components/CommandPalette.logic.ts # apps/web/src/components/CommandPalette.tsx # apps/web/src/components/ComposerPromptEditorTiptap.tsx # apps/web/src/components/ThreadRouteView.tsx # apps/web/src/components/ThreadTerminalDrawer.test.ts # apps/web/src/components/ThreadTerminalDrawer.tsx # apps/web/src/components/chat/ComposerBannerStack.browser.test.tsx # apps/web/src/components/chat/ComposerBannerStack.tsx # apps/web/src/components/chat/MessagesTimeline.tsx # apps/web/src/components/chat/ModelListRow.tsx # apps/web/src/components/chat/ModelPickerContent.tsx # apps/web/src/components/chat/OpenInPicker.tsx # apps/web/src/components/chat/ProviderModelPicker.tsx # apps/web/src/components/chat/ProviderSubagentBar.tsx # apps/web/src/components/chat/QueuedRunsControl.tsx # apps/web/src/components/chat/SkillInlineText.tsx # apps/web/src/components/chat/ThreadActivityBanners.tsx # apps/web/src/components/chat/TimelineWorkGroupRows.tsx # apps/web/src/components/chat/UserMessageContextChips.tsx # apps/web/src/components/chat/useComposerContextImport.ts # apps/web/src/components/chat/useThreadLifecycle.tsx # apps/web/src/components/chat/useTimelineFollow.ts # apps/web/src/components/chat/useTimelinePositionRestore.ts # apps/web/src/components/contextChipParts.tsx # apps/web/src/components/pullRequest/LinkPullRequestDialog.tsx # apps/web/src/components/settings/AddProviderInstanceDialog.tsx # apps/web/src/components/settings/IntegrationsSettings.tsx # apps/web/src/components/settings/SettingsPanels.tsx # apps/web/src/components/settings/SettingsScopeSentence.tsx # apps/web/src/components/settings/SettingsSidebarNav.tsx # apps/web/src/components/settings/StorageSettings.tsx # apps/web/src/components/settings/ThemeImportDialog.tsx # apps/web/src/components/settings/TypographySettings.tsx # apps/web/src/components/settings/providerDriverMeta.ts # apps/web/src/components/settings/settingsSearch.ts # apps/web/src/components/sidebar/SidebarThreadHeader.tsx # apps/web/src/components/sidebar/SidebarThreadRow.tsx # apps/web/src/composerDraftStore.ts # apps/web/src/routes/__root.tsx # apps/web/src/routes/_chat.tsx # apps/web/src/themePalette.ts # docs/README.md # docs/user/cursor.md # docs/user/install.md # docs/user/project-settings.md # docs/user/thread-sidebar.md # docs/user/updating.md # packages/contracts/src/settings.ts # packages/provider-core/src/server/orchestrationInstructions.ts # packages/shared/src/inlineSkills.ts # packages/shared/src/t3McpToolPresentation.test.ts # packages/shared/src/t3McpToolPresentation.ts
Upstream's settings regrouping made Diagnostics a detail page under Maintenance, dropping the fork's sidebar entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What's in this sync
This brings in upstream v0.1.3 and 134 upstream commits since the fork's current main (October 26–27).
New features
Fixes
Notable internal and provider changes
Remaining commits cover mobile visual alignment and file links, PR approvals/stats, account warnings and model badge expiry, onboarding recovery, telemetry batching, accessibility, preview/test reliability, mobile installation/e2e tooling, the FAQ, and review/evaluation infrastructure. The exact upstream commit list follows for auditability.
Discord announcements were not used: the requested channel returned five older messages (October 20), none marked as crossposts or webhooks and none matching this commit range.
All 134 upstream commits added by this sync
6ea34149bbrefactor(client): composers share one workspace snapshot refresh per provider and cwd (pingdotgg/t3code#25370)6ffde5ba39refactor(mobile): composer pastes and picks are cancelled by their draft, not by the composer (pingdotgg/t3code#25376)911091ba7echore(mobile): e2e poses for current devices, Duo and landscape fixes3433ba15fdfix(mobile): select the correct draft after adding a project (pingdotgg/t3code#24269)6a1c8d1e34fix(mobile): mobile:install no longer requires --prepare3e47c1cabcfix(mobile): e2e landscape poses rotate for real on tablets and foldscc0b86ddf1fix(server): goals stop the running turn, clear while working, no echoes (pingdotgg/t3code#25426)071239804erefactor(web): pull request list remembers each answer for the next start (pingdotgg/t3code#25364)3f3c1b9bcfrefactor(web): HTML previews handle frame messages in one listener (pingdotgg/t3code#25456)2acc7b55cfrefactor(web): review guide runs are watched from their answers, not from mounted components (pingdotgg/t3code#25459)9d7997afc5refactor(web): resize drags, panel shells and the browser host own their listeners (pingdotgg/t3code#25464)3cb16cf165fix(web): find shows its match after a thread switch, and the timeline hears scrolling through one viewport signal (pingdotgg/t3code#25463)59a3f52ad3fix(mobile): a new thread's first send no longer sticks on Starting (pingdotgg/t3code#25477)d5a791b940fix(client): drafts for answered questions are cleared even when their thread is not open (pingdotgg/t3code#25457)28df7a246frefactor(web): terminal output no longer re-renders the drawer, theme search runs from handlers (pingdotgg/t3code#25458)f0dd86f164fix(web): stable callbacks refresh before layout effects read them (pingdotgg/t3code#25489)7d3208cbeatest(web): say why the useStableCallback test renders without a router (pingdotgg/t3code#25493)e5ea25d129fix(mobile): queued edits end when their run starts, wherever you are (pingdotgg/t3code#25468)148d2fdc0erefactor(web): root theme, toast and chrome sync start with the app (pingdotgg/t3code#25461)a936f05a6arefactor(web): root theme, toast and chrome sync start with the app (pingdotgg/t3code#25461)d6fb62ac3ffix(mobile): editing a queued message while a question is open no longer throws (pingdotgg/t3code#25503)f05c38f166fix(web): browser viewport resizes work without an open preview panel (pingdotgg/t3code#25462)d81757eea9test(web): attachment preview omission tests no longer time out on CI (pingdotgg/t3code#25515)87ea18cad9fix(mobile): describe when composer view commands can reject (pingdotgg/t3code#25516)7c6e85cfdafix(web): browser history and titles show up again (pingdotgg/t3code#25491)3f9448747bfix(web): switching back to a thread no longer restores its tab's older title (pingdotgg/t3code#25521)e6ec114128refactor(web): pull request page reacts to turns and sweep Escape without effects (pingdotgg/t3code#25523)b424c6e429fix(web): an armed pull request confirm no longer outlives its button (pingdotgg/t3code#25530)210b2e7c6afix(mobile): keep expanding composer text above its toolbar (pingdotgg/t3code#25396)1c1050eb7ffix(server): release completed PR sync sweep data from the read cache (pingdotgg/t3code#25285)e762f09e26fix(mobile): drop the unused useLayoutEffect import that fails lint on main (pingdotgg/t3code#25575)374e57d90brefactor(web): provider settings and Codex setup run as explicit flows (pingdotgg/t3code#25524)8e1bb0376ctest(web): attachment preview omission cases check the prepared document instead of rendering each one (pingdotgg/t3code#25562)c4d5950268refactor(mobile): pull request screens use a file-jump store and handler work (pingdotgg/t3code#25525)4e42eaf429fix(mobile): label the pull request toast action View (pingdotgg/t3code#25581)220eb73524refactor(mobile): media previews share file leases and close on blur in one place (pingdotgg/t3code#25527)b6994c5499fix(shared): pin T3 Connect cloudflared to 2026.10.4, which drops the compromised eMudhra intermediates (pingdotgg/t3code#25572)278588a61afix(web): skill chips in chat open the same details popover as the composer (pingdotgg/t3code#25432)dd5b5401e1refactor(web): chat route shortcuts register once instead of rebuilding on every store change (pingdotgg/t3code#25366)fe507c5a1efix(clients): queued messages can't be edited while a question is open (pingdotgg/t3code#25593)0899305765docs: add an FAQ that answers what people ask every day (pingdotgg/t3code#25451)560ddb14d9feat(web): warn before adding a second Claude or Codex account (pingdotgg/t3code#25475)0790e3891bfix(server): expire new-model badges after seven days (pingdotgg/t3code#25609)451bb459f1refactor(web): running timers share one clock instead of an interval each (pingdotgg/t3code#25616)4034b5f6b5fix(web): simplify the created pull request success row (pingdotgg/t3code#25613)5effca10b3fix(web): thread jump hints wait for their delay on every hold (pingdotgg/t3code#25636)a54ba53a5cfix(mobile): open threads from the local cache instead of "Thread unavailable" (pingdotgg/t3code#25627)e2d3ded436fix(infra): task-cache telemetry no longer strands an event queued during a flush (pingdotgg/t3code#25653)0c901edf57refactor(web): video previews attach listeners on their element and share one visibility observer (pingdotgg/t3code#25630)3de3eee0d1refactor(mobile): voice input session owns recording, metering and keep-awake (pingdotgg/t3code#25631)6838e31b9cfix(web): screen readers can wrap to the first and last message of a long thread (pingdotgg/t3code#23780)024e593a63fix(client-runtime): a slow host no longer shows settings as read-only (pingdotgg/t3code#25526)a4fbea8653refactor(mobile): thread rows share one clock and cache SVGs instead of per-row effects (pingdotgg/t3code#25612)0604547a3afix(server): a thread whose worktree was deleted recovers on the next message (pingdotgg/t3code#18359)977a18823crefactor(mobile): pull request list records answers where they land (pingdotgg/t3code#25373)abf8f43f2afix(mobile): keep floating status within the composer width (pingdotgg/t3code#25671)9db433f4barefactor(web): settings group by concern, with General split into focused pages (pingdotgg/t3code#25651)576a40fa53fix(server): telemetry keeps a failed batch for 30 minutes, not 1.5 (pingdotgg/t3code#25474)78e93fd9d1fix(mobile): a caret move in one composer no longer moves another draft's insert point (pingdotgg/t3code#25681)d73fd1279atest(web): attachment preview Word and large-text tests no longer flake on CI (pingdotgg/t3code#25664)82dc892c5afeat(evals): shared evals package and an eval for T3 tool-use mistakes (pingdotgg/t3code#24635)0b0417a56brefactor(web): Cmd+O presses the Open in editor button instead of a per-picker listener (pingdotgg/t3code#25667)a7caea34abfix(mobile): queued messages are delivered by an app service, not a render loop (pingdotgg/t3code#25678)08bd2ec09ctest(web): PDF viewer behavior is covered by fast tests (pingdotgg/t3code#25699)0623d09aeerefactor(mobile): drop the unreachable pending-task editor from new-task drafts (pingdotgg/t3code#25684)bd3287b640feat(web): thread state lives at the end of the timeline, not stacked on the composer (pingdotgg/t3code#25401)5432d8e723refactor(web): drafts promote from the draft store, not from route effects (pingdotgg/t3code#25615)9bc0c33438refactor(mobile): settings use web's pages and groups (pingdotgg/t3code#25686)a2398c2ce3refactor(mobile): thread inspector mode is derived, not synced (pingdotgg/t3code#25682)68339a0846refactor(mobile): pull request list, filters and viewed files without synchronizing effects (pingdotgg/t3code#25614)becf853deffix(web): PDF search finds phrases that wrap across lines (pingdotgg/t3code#25702)ed44f251d8feat(server): cut T3's MCP tool schemas by a third and merge 18 tools into action tools (pingdotgg/t3code#25423)354f6c86ddfix(mobile): pull request rows refresh their diff stats after a new push (pingdotgg/t3code#25713)daa720a986fix(workflows): keep completed workflows reachable (pingdotgg/t3code#24587)10a82e86edfix(web): devices agents open in background threads now show up (pingdotgg/t3code#25714)71ba6b374crefactor(web): optimistic chat messages leave without a timer (pingdotgg/t3code#25710)323d9611fffeat(acp): ACP session notices show as notices, not reply text (pingdotgg/t3code#25704)5127de8c29fix(mobile): scale and align thread list icons (pingdotgg/t3code#25668)3b48b52326refactor(mobile): new-task branch defaults are derived, not written after render (pingdotgg/t3code#25706)6df241d23afeat(provider): add Vercel fx as a provider (pingdotgg/t3code#18277)417bc79711fix(mobile): usage chart bars round at the top instead of the bottom (pingdotgg/t3code#21383)d145077b4ffix(mobile): a draft route's branch checkout runs once, even across a reconnect (pingdotgg/t3code#25712)65b4a69407fix(web): thread details popover closes when the card moves inline (pingdotgg/t3code#25731)f6a9315d19refactor(web): diff and file reveals are requests, and workspace edits refetch by construction (pingdotgg/t3code#25732)3425671a95feat(web): Add provider leads with first-class providers (pingdotgg/t3code#25753)5811d5c846refactor(mobile): app-lifetime services install once, and the usage widget stops re-rendering on every presentation change (pingdotgg/t3code#25740)8e86eb2b4dfix(client-runtime): searches and refreshes no longer wait on an unreachable environment (pingdotgg/t3code#25703)5d91ab1117refactor(web): command palette state lives in a store, git and branch pickers drop timer and sync effects (pingdotgg/t3code#25733)e0d068cc9ffix(mobile): restore Android chat content corners (pingdotgg/t3code#23989)d2c440312efix(server): agents show trends and comparisons as inline charts again (pingdotgg/t3code#25766)689763a603fix(mobile): isolate file tree state by workspace (pingdotgg/t3code#24270)83838af7bafix(mobile): finished subagents stay reachable from the Agents pill (pingdotgg/t3code#25759)e689dad42cfix(mobile): keep segmented controls readable on cards and screens (pingdotgg/t3code#25729)b1619f3a74fix(web): cancelling update everything no longer flashes the update button's focus ring and tooltip (pingdotgg/t3code#25774)44dae85688fix(mobile): lists end at the search field, and HTML previews start below the header (pingdotgg/t3code#25765)850d1e7a6cfix(provider-cursor): bump @cursor/sdk to 1.0.38 so long-context tiers send Max Mode (pingdotgg/t3code#21074)c294d63b21fix(server): Sonnet also answers trend and comparison data with inline charts (pingdotgg/t3code#25776)fe867b86c8fix(server): Claude MCP timeouts preserve the native session (pingdotgg/t3code#25660)32bf48f428fix(server): preserve settled runs during delegated acknowledgements (pingdotgg/t3code#25672)5522180329fix(mobile): align the iPad composer with workspace navigation (pingdotgg/t3code#24942)a9b513b50cchore(evals): store eval cases as .ndjson so review tools skip them (pingdotgg/t3code#25782)394929af76test(server): CI fails when agent context grows past main (pingdotgg/t3code#25785)bea2e9d62frefactor(mobile): theme preferences reach the native runtime without a layout effect (pingdotgg/t3code#25767)2ad853ab21refactor(mobile): the share inbox is a module store, presented from navigation state (pingdotgg/t3code#25744)6f6c6c14b7refactor(web): drop the unreachable paint-only thread timeline path (pingdotgg/t3code#25787)401b01747cchore(release): prepare v0.1.30b02b21e5arefactor(mobile): notifications, quick actions and Connect onboarding navigate through the root ref (pingdotgg/t3code#25769)278fdce1aftest(server): data regression test now fails when recent fetch savings regress (pingdotgg/t3code#25795)bc813670d9fix(server): all MCP tools now send compact schemas, cutting tool context by 23% (pingdotgg/t3code#25790)96fc7b9551refactor(web): the new design is the only design, with no toggle (pingdotgg/t3code#25778)c976a09df0feat(mobile): add a "Use last project" preference for new threads (pingdotgg/t3code#24741)b84e121226fix(mobile): round shared Android sheets and Chat settings (pingdotgg/t3code#18547)6f0f1a9851feat(mobile): split wide Android Settings into two panes (pingdotgg/t3code#24298)70eccd48e4fix(web): keep right panel maximize available in narrow windows (pingdotgg/t3code#25389)6bbb2d8508fix(server): Macs without Android no longer show avdmanager discovery warnings (pingdotgg/t3code#25815)2202787df0fix(web): onboarding import no longer hangs when the project never arrives (pingdotgg/t3code#25805)1a4f3c4a3cfix(mobile): Windows image paths and non-ASCII file links open like desktop (pingdotgg/t3code#25802)f81c4cd79ffix(web,mobile): markdown previews no longer show YAML frontmatter as a giant heading (pingdotgg/t3code#25804)b333c175bafix(web): compact toggle shows the token count again (pingdotgg/t3code#25818)bc8d02ffd5fix(server): preserve interrupted Claude context after revert (pingdotgg/t3code#25695)1702d55214fix(web,mobile): bot approvals are visible on the PR summary (pingdotgg/t3code#25829)f3b058cd6afix(web,mobile): stopped runs no longer look like errors (pingdotgg/t3code#25830)d2ab13b095refactor(mobile): share imports run outside the new-task screen (pingdotgg/t3code#25793)c175e5737efix(build): TEMPORARY workaround so linux-arm64 builds run on 16/64 KiB page kernels (pingdotgg/t3code#25825)d033768ec7fix(server): preserve completed runs when accepting child deliveries (pingdotgg/t3code#25666)e5f2e5dbbcfix(client-runtime): iOS resume keeps live sockets and drops dead ones 4x faster (pingdotgg/t3code#25824)56695ae3ecfeat: model labels show the name you'd say out loud (pingdotgg/t3code#24205)1ebbc205f6chore(review): CodeRabbit reviews tests against docs/internals/testing.md (pingdotgg/t3code#24204)a24b109bc3refactor(mobile): showcase capture readiness is a tested pure model (pingdotgg/t3code#25816)03be432a5dfix(mobile): a held thread move retires when a snooze wakes, even with no list open (pingdotgg/t3code#25809)4cb29a56f6fix(web): switching a file between markdown and the editor no longer saves a draft twice (pingdotgg/t3code#25768)92e645032cfix(web,mobile): queued messages get a simpler Send now row, no reordering (pingdotgg/t3code#25846)737eab244dfix(mobile): Add project path survives its host dropping out and returning (pingdotgg/t3code#25819)28286d523frefactor(mobile): opening Review or Files shows the inspector in the first commit (pingdotgg/t3code#25817)Merge scope
Base:
mainat38007f610b483cf5fd407d1c9bed196ce514a277. No open upstream-sync PRs or parent stack existed at selection or the pre-push refresh. This PR adds only upstream commits absent from that base.Pinned upstream:
28286d523fc34582cbe2b5fd0bcf2947a97ed89f.Range:
38007f610b483cf5fd407d1c9bed196ce514a277..28286d523fc34582cbe2b5fd0bcf2947a97ed89f(134 commits). Before merging, the fork had 551 commits absent upstream, and upstream had 134 absent the fork. Upstream history is preserved in one--no-ffmerge; no rebase, cherry-pick, or existing sync-branch modification.Conflict resolutions
docs/fork-differences.md; updated moved Settings guidance.Fork commit audit for files split upstream
The following behaviors were checked for receiving props and live callers in the merged tree. Independent reviews checked web account/context/palette/tab/usage/StartFrom/citation flows and settings reachability.
apps/web/src/components/ChatView.tsx
cf8bd5a1c3feat(web): cite a stretch of the transcript, tool calls included (feat(web): cite a stretch of the transcript, tool calls included #476)20dd2703a9feat(web): pick the project and model when sending a citation to a new thread (feat(web): pick the project and model when sending a citation to a new thread #474)ad4e011e7bfeat(web): send a citation to another thread from its comment panel (feat(web): send a citation to another thread from its comment panel #442)c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)765e389b56fix(client): new threads no longer open with their messages missing (fix(client): new threads no longer open with their messages missing #418)8717249712fix(web): quick messages to No project no longer ask for a base branch (fix(web): quick messages to No project no longer ask for a base branch #413)e92856575efeat(desktop): quick message panel attaches context in place (feat(desktop): quick message panel attaches context in place #384)e4c9c94c5cfeat(desktop): quick message panel opens a composer from any app (feat(desktop): quick message panel opens a composer from any app #370)6eede0f5defeat(web): start from an automation in the new-thread picker (feat(web): start from an automation in the new-thread picker #371)6ff90d838afeat(scheduled-tasks): same-day catch-up for missed runs and a Run-now shortcut (feat(scheduled-tasks): same-day catch-up for missed runs and a Run-now shortcut #362)86854166a4fix(web): sending a citation comment sends only that citation (fix(web): sending a citation comment sends only that citation #359)e1facadd01feat: save thread messages as drafts, with send button menus everywhere (feat: save thread messages as drafts, with send button menus everywhere #353)08e2fb850efix(web): switching a started thread's model no longer crashes the chat view (fix(web): switching a started thread's model no longer crashes the chat view #342)4c7707f411fix(web): show one divider when a model switch hands off context (fix(web): show one divider when a model switch hands off context #334)d42edbbfd4feat: reference local checkouts in a message or link them to a thread (feat: reference local checkouts in a message or link them to a thread #305)3d2d038bd9feat(threads): model change marker shows effort, fast mode and other parameters (feat(threads): model change marker shows effort, fast mode and other parameters #294)7698e94ed8fix(tabs): forking into a tab no longer picks a turn that is still running (fix(tabs): forking into a tab no longer picks a turn that is still running #277)bc778cfa4afix(web): composer chips convert at the same boundaries on paste and typing (fix(web): composer chips convert at the same boundaries on paste and typing #276)82d8dce7c3feat: extend agent controls and fork workflows (feat: extend agent controls and fork workflows #270)5357dabf83fix: resuming a usage-limited thread uses the newly picked model (fix: resuming a usage-limited thread uses the newly picked model #269)3b1d7d2394feat: attach subagents to chat by @handle (feat: attach subagents to chat by @handle #259)7657d8a411feat(web): continue a sibling tab's conversation from its context pill (feat(web): continue a sibling tab's conversation from its context pill #255)d11209b334feat(threads): Stop can keep delegated subagents running (feat(threads): Stop can keep delegated subagents running #237)01a220d3e3feat(threads): every fork into a new tab carries the conversation itself (feat(threads): every fork into a new tab carries the conversation itself #236)444a6f6d77feat(threads): show where the model changed for the next message (feat(threads): show where the model changed for the next message #212)cb4d538e7afeat(notion): attach pages as composer context (feat(notion): attach pages as composer context #140)0487615075feat: attach Slack messages and threads as chat context (feat: attach Slack messages and threads as chat context #134)36a5516f9efeat: attach and start threads from GitHub issues (feat: attach and start threads from GitHub issues #110)0c1a2c3304feat(web): continue from a subagent's work in a new chat tab (feat(web): continue from a subagent's work in a new chat tab #109)afab8cb1d8feat(web): pick and preview thread context from the composer (feat(web): pick and preview thread context from the composer #95)e2afc1f2f6feat: recover threads interrupted by provider usage limits (feat: recover threads interrupted by provider usage limits #101)76c1f10c90feat(web): view two chat tabs side by side (feat(web): view two chat tabs side by side #100)cccc1c0dbffeat(web): show subagent tool calls relative to the thread workspace (feat(web): show subagent tool calls relative to the thread workspace #97)c349a4ed01fix(web): starting a thread from a PR checks it out into the new thread (fix(web): starting a thread from a PR checks it out into the new thread #93)66d7c796ebfeat: attach repositories to messages and clone them into .context (feat: attach repositories to messages and clone them into .context #89)9c99eb2050feat(web): reference other threads from the composer @ menu (feat(web): reference other threads from the composer @ menu #86)a2150fbd8afix(web): switching chat tabs keeps the right panel open (fix(web): switching chat tabs keeps the right panel open #82)751d2ec15efeat(web): attach a pull request as context from the attach menu (feat(web): attach a pull request as context from the attach menu #78)bc00985c6dfeat(web): fork chats after agent responses (feat(web): fork chats after agent responses #76)b94a8c1b9efeat(web): open subagents in dedicated sidebar tabs (feat(web): open subagents in dedicated sidebar tabs #74)1dc2061d27feat(web): create a new thread and its worktree before the first messageb2c48292d2feat: drill into subagents from the Agents panelc513d647f7feat(web): start a new thread from a PR, branch, or Linear issuec7713b9cacfeat: attach Linear issues as context in the composer7bbc207f71feat(mobile): Conductor run scripts and settings on mobile6d713242dffeat(web): run Conductor run scripts from the chat header64e792d687feat(web): fork into a new tab from the model picker (feat(web): fork into a new tab from the model picker #47)43cd8187d6feat(web): fork a user message into a new chat tab (feat(web): fork a user message into a new chat tab #44)86839d1ff4fix(web): returning to a thread reopens the chat tab you left (fix(web): returning to a thread reopens the chat tab you left #27)cc0376790bfeat(web): reference other chat tabs from the composer @ menu (feat(web): reference other chat tabs from the composer @ menu #26)b6bb596036feat(server): per-instance home dirs for parallel provider sign-in (feat(server): per-instance home dirs for parallel provider sign-in #7)7f2ef1d689feat(tabs): share workspace across chat tabs (feat(tabs): share workspace across chat tabs #13)7392c39657feat(providers): add Devin CLI provider via ACP (feat(providers): add Devin CLI provider via ACP #1)apps/web/src/components/CommandPalette.tsx
2494e44278refactor(integrations): isolate RPC and palette wiring (refactor(integrations): isolate RPC and palette wiring #496)39a760ccbbMerge pull request feat(google): add read-only Gmail across connector surfaces #493 from adampeterhiggins/ah/add-gmail-google-connector9dd9e36c82feat(integrations): add Google Drive and Calendar context (feat(integrations): add Google Drive and Calendar context #487)5843b00cccfix(web): restore fork features lost in the merge upstream/main into fork #415 upstream sync (fix(web): restore fork features lost in the #415 upstream sync #458)c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)6eede0f5defeat(web): start from an automation in the new-thread picker (feat(web): start from an automation in the new-thread picker #371)6ff90d838afeat(scheduled-tasks): same-day catch-up for missed runs and a Run-now shortcut (feat(scheduled-tasks): same-day catch-up for missed runs and a Run-now shortcut #362)51201bd32afeat: Discord integration with the same entry points as Slack (feat: Discord integration with the same entry points as Slack #356)e1facadd01feat: save thread messages as drafts, with send button menus everywhere (feat: save thread messages as drafts, with send button menus everywhere #353)c673040d0bfeat: attach Granola meeting notes as context (feat: attach Granola meeting notes as context #288)82d8dce7c3feat: extend agent controls and fork workflows (feat: extend agent controls and fork workflows #270)1cf0291525feat(threads): add optional searchable chat group names (feat(threads): add optional searchable chat group names #240)c1c87684f5feat(web,mobile): restart a chat tab's agent session from its menus (feat(web,mobile): restart a chat tab's agent session from its menus #228)38ebd51017feat(conductor): import Conductor workspaces as chat-tab threads (feat(conductor): import Conductor workspaces as chat-tab threads #199)41caa2b107feat(web): type > in the file picker to switch to commands (feat(web): type > in the file picker to switch to commands #200)57a0bd767bfeat(notion): app.notion.com links attach, and the integration can be turned off (feat(notion): app.notion.com links attach, and the integration can be turned off #194)9e60beb0a8fix(slack): allow disabling the integration (fix(slack): allow disabling the integration #142)cb4d538e7afeat(notion): attach pages as composer context (feat(notion): attach pages as composer context #140)0487615075feat: attach Slack messages and threads as chat context (feat: attach Slack messages and threads as chat context #134)36a5516f9efeat: attach and start threads from GitHub issues (feat: attach and start threads from GitHub issues #110)afab8cb1d8feat(web): pick and preview thread context from the composer (feat(web): pick and preview thread context from the composer #95)6ea52f7081feat: import Codex and Claude CLI conversations as threads (feat: import Codex and Claude CLI conversations as threads #99)76c1f10c90feat(web): view two chat tabs side by side (feat(web): view two chat tabs side by side #100)19f30b54fffeat(web): attention inbox for threads that need you (feat(web): attention inbox for threads that need you #96)bb287bac98feat: link a Linear issue to a thread and show its status (feat: link a Linear issue to a thread and show its status #94)66d7c796ebfeat: attach repositories to messages and clone them into .context (feat: attach repositories to messages and clone them into .context #89)a02770d743feat(web): export thread transcripts to Markdown (feat(web): export thread transcripts to Markdown #87)751d2ec15efeat(web): attach a pull request as context from the attach menu (feat(web): attach a pull request as context from the attach menu #78)c513d647f7feat(web): start a new thread from a PR, branch, or Linear issue6bef2af9c8feat(web): use the Linear logo for Linear actions and chipsc7713b9cacfeat: attach Linear issues as context in the composer49f0299af1feat(web): optionally list chat tabs under their thread in the sidebar (feat(web): optionally list chat tabs under their thread in the sidebar #33)apps/web/src/components/ThreadRouteView.tsx
8aa52bcc5bfix(web): restore started threads when navigating back (fix(web): restore started threads when navigating back #302)76c1f10c90feat(web): view two chat tabs side by side (feat(web): view two chat tabs side by side #100)apps/web/src/components/chat/ComposerBannerStack.tsx
c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)9aba5b0edefix(web): usage limit banner shows one info button, not two (fix(web): usage limit banner shows one info button, not two #414)d454d77bd7fix(web): keep the usage-limit reset time on the details hover (fix(web): keep the usage-limit reset time on the details hover #392)496cc8a961fix(web): usage limit banner no longer flashes on resume at reset (fix(web): usage limit banner no longer flashes on resume at reset #389)apps/web/src/components/chat/useTimelineFollow.ts
apps/web/src/components/chat/useTimelinePositionRestore.ts
5843b00cccfix(web): restore fork features lost in the merge upstream/main into fork #415 upstream sync (fix(web): restore fork features lost in the #415 upstream sync #458)c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)apps/web/src/routes/__root.tsx
9dd9e36c82feat(integrations): add Google Drive and Calendar context (feat(integrations): add Google Drive and Calendar context #487)3eb2f5190dfeat(desktop): configure quick message appearance independently (feat(desktop): configure quick message appearance independently #478)c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)e4c9c94c5cfeat(desktop): quick message panel opens a composer from any app (feat(desktop): quick message panel opens a composer from any app #370)51201bd32afeat: Discord integration with the same entry points as Slack (feat: Discord integration with the same entry points as Slack #356)c673040d0bfeat: attach Granola meeting notes as context (feat: attach Granola meeting notes as context #288)82d8dce7c3feat: extend agent controls and fork workflows (feat: extend agent controls and fork workflows #270)1cf0291525feat(threads): add optional searchable chat group names (feat(threads): add optional searchable chat group names #240)e483cb0740feat(threads): hide and group threads, with a sidebar filter menu (feat(threads): hide and group threads, with a sidebar filter menu #206)6ea52f7081feat: import Codex and Claude CLI conversations as threads (feat: import Codex and Claude CLI conversations as threads #99)a02770d743feat(web): export thread transcripts to Markdown (feat(web): export thread transcripts to Markdown #87)3973acc932feat(web): configure custom Open in applications and file defaults (feat(web): configure custom Open in applications and file defaults #73)apps/web/src/routes/_chat.tsx
c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)c513d647f7feat(web): start a new thread from a PR, branch, or Linear issueapps/web/src/components/ThreadTerminalDrawer.tsx
c460d20a11merge upstream/main into fork (merge upstream/main into fork #415)74431ef89afix(web): terminal citation previews look like the terminal (fix(web): terminal citation previews look like the terminal #312)4181728585feat(web): terminal line height setting and centred terminal text (feat(web): terminal line height setting and centred terminal text #182)76b293f8cffeat(web): terminal ANSI colors in themes and a terminal cursor setting (feat(web): terminal ANSI colors in themes and a terminal cursor setting #178)SettingsPanels / IntegrationsSettings / StorageSettings
9dd9e36c82feat(integrations): add Google Drive and Calendar context (feat(integrations): add Google Drive and Calendar context #487)3eb2f5190dfeat(desktop): configure quick message appearance independently (feat(desktop): configure quick message appearance independently #478)a14388d26dfeat(server): stop Codex and Cursor threads at subscription limits (feat(server): stop Codex and Cursor threads at subscription limits #400)239091b3fdfeat(claude): stop threads at subscription usage limits (feat(claude): stop threads at subscription usage limits #376)e4c9c94c5cfeat(desktop): quick message panel opens a composer from any app (feat(desktop): quick message panel opens a composer from any app #370)51201bd32afeat: Discord integration with the same entry points as Slack (feat: Discord integration with the same entry points as Slack #356)c673040d0bfeat: attach Granola meeting notes as context (feat: attach Granola meeting notes as context #288)82d8dce7c3feat: extend agent controls and fork workflows (feat: extend agent controls and fork workflows #270)5fc267706dfeat(composer): attach repositories from an ordered list of owners (feat(composer): attach repositories from an ordered list of owners #249)979a359056chore(sync): merge upstream/main into fork28296340b9fix(web): configure sidebar views for each thread category (fix(web): configure sidebar views for each thread category #217)883c7d9914feat(server): pause running threads before an application update (feat(server): pause running threads before an application update #215)622ffce439feat: terminals can activate a Python environment, including conda (feat: terminals can activate a Python environment, including conda #186)4181728585feat(web): terminal line height setting and centred terminal text (feat(web): terminal line height setting and centred terminal text #182)76b293f8cffeat(web): terminal ANSI colors in themes and a terminal cursor setting (feat(web): terminal ANSI colors in themes and a terminal cursor setting #178)cb4d538e7afeat(notion): attach pages as composer context (feat(notion): attach pages as composer context #140)0487615075feat: attach Slack messages and threads as chat context (feat: attach Slack messages and threads as chat context #134)5674b08e6bfeat: let agents in threads start and drive other threads (feat: let agents in threads start and drive other threads #117)4ba6d53a05feat(web): sort, limit and drag a chat's tabs in the sidebar (feat(web): sort, limit and drag a chat's tabs in the sidebar #119)66d7c796ebfeat: attach repositories to messages and clone them into .context (feat: attach repositories to messages and clone them into .context #89)3973acc932feat(web): configure custom Open in applications and file defaults (feat(web): configure custom Open in applications and file defaults #73)6342ad0c73feat: connect a Linear account from settingsa6828e5d6bfeat: configurable worktree branch prefix (feat: choose your own worktree branch prefix #42)0d72c46341feat(web): add ignored names that do not block worktree cleanup (feat(web): add ignored names that do not block worktree cleanup #29)49f0299af1feat(web): optionally list chat tabs under their thread in the sidebar (feat(web): optionally list chat tabs under their thread in the sidebar #33)61d540f9cdfeat(web): choose whether View PR opens in the side panel or browser (feat(web): choose whether View PR opens in the side panel or browser #34)Controls ported into the new General/Threads/Diffs/Browser/Worktrees pages or retained Integrations page; corresponding search targets and old links verified. The provider registry now lives in client-runtime and retains both fork drivers plus upstream fx.
Split/refactored mobile fork commit checklist
NewTaskDraftScreen.tsx / ThreadComposer.tsx / use-composer-command-menu.ts: callers and receiving props checked in merged tree.
SettingsServerControlsRouteScreen.tsx / former SettingsThreadsRouteScreen.tsx -> ThreadSettingsSections.tsx:
Verification
apps/mobile/src/state/thread-task-permissions.test.ts, whose thread fixture lacked theupdatedAtupstream now reads. The fixture was fixed and all 7 tests pass. That batch's typecheck also flagged an untyped schedule literal inapps/server/src/mcp/toolkits/orchestrator/tools.test.ts; after the fix, server and mobile typechecks pass (0 errors) and that file's 5 tests pass.git diff --checkpasses outside four whitespace-bearing lines in the inherited LegendList patch payload. That patch is byte-for-byte upstream's; install/patch validation passed, so its payload was left intact.Runtime verification (web)
Run on
vp run devin this worktree against an empty isolated database (the live database is over the 500 MiB seed limit), driven through T3's Browser panel:settingsSearch.test.tsandCommandPalette.logic.test.ts(58 tests) and the web typecheck pass.#menu opens with Checkouts, Pull requests, GitHub issues and Repositories tabs (Linear, Slack and Notion need connected accounts, so they weren't exercised), and multi-pickattachReferenceItemsis still wired.t3 thread list,thread search,thread export,schedule list,draft listandusageall work, andt3 thread --helplists answer, resume, search, export, rename, move, archive and delete.Merge with Create a merge commit. It keeps upstream history and the merge base for the next sync.
Model: GPT-6.1-Sol (merge, conflict resolution and review, with parallel agents), then Claude Opus 5.5 (final fixes and PR) after the first run ran out of credits. Harness: Codex and Claude Code in T3 Code.
🤖 Generated with Claude Code