Skip to content

sync: merge 35 upstream commits from pingdotgg/t3code#69

Open
aaditagrawal wants to merge 36 commits intomainfrom
sync/upstream-2026-04-17
Open

sync: merge 35 upstream commits from pingdotgg/t3code#69
aaditagrawal wants to merge 36 commits intomainfrom
sync/upstream-2026-04-17

Conversation

@aaditagrawal
Copy link
Copy Markdown
Owner

Summary

Merges 35 upstream commits (7a00846..d22c6f5) from pingdotgg/t3code into the fork while preserving all fork-specific multi-provider support and UI/UX niceties.

Strategy

Used a partitioned resolution approach:

  1. Single merge commitgit merge upstream/main produced 23 conflicts out of ~205 files touched.
  2. Conflict partition — classified each conflict by risk against the fork's divergence (11 LIGHT, 12 HIGH) using a pre-merge risk analysis.
  3. Tier A (parallel LIGHT resolution) — 3 agents in parallel resolved LIGHT conflicts with mechanical 3-way merges.
  4. Tier B (serial HIGH resolution) — 5 + 5 parallel Opus passes for the 12 HIGH files, each preserving the fork's multi-provider surface and adopting upstream's improvements.
  5. Typecheck + test fallout fixes — 3 remaining type errors in desktop/web, 2 provider-related widenings (`PROVIDER_CACHE_IDS`), 1 migration test ID adjustment, 1 environment-sensitive open.test.ts assertion.

Upstream features adopted

Fork features preserved

  • All 8 provider adapters (codex, claudeAgent, copilot, cursor, opencode, geminiCli, amp, kilo) + conformance tests
  • Extended `ProviderKind` union across contracts/model/settings/provider
  • `appearance` / `accentColor` / `themeConfig` / `ProviderLogo` UI system
  • `customModels`, `gitTextGeneration`, `providerModelOptions`
  • Migration IDs 23/24 (fork's `NormalizeLegacyProviderKinds` and `RepairProjectionThreadProposedPlanImplementationColumns`) kept; upstream's 023/024 registered at IDs 25/26 to avoid breaking deployed fork databases
  • DesktopBridge log channels (`LOG_DIR/LIST/READ/OPEN_DIR`); upstream's `getAppBranding` replaces fork's `getWsUrl`
  • `PROVIDER_CACHE_IDS` widened from upstream's 2 to fork's 8
  • macOS `.app` bundle fallback in `open.ts` (fork-specific)

Test plan

  • `bun install` succeeds (adds `@legendapp/list` and related deps)
  • `bun typecheck` clean across all 7 packages
  • `bun lint` (0 errors, 24 pre-existing warnings)
  • `bun fmt:check` clean
  • `bun run test` — 888 passed, 11 skipped, 0 failed (900 total)
  • Manual smoke: launch desktop, verify provider startup for each of the 8 providers
  • Manual smoke: verify nightly update channel toggle in settings
  • Manual smoke: verify filesystem browse works in command palette / open picker
  • Manual smoke: verify Kiro appears in open-picker when installed

Notes for reviewers

  • Migration numbering is intentional. Upstream's `023_ProjectionThreadShellSummary` and `024_BackfillProjectionThreadShellSummary` files keep their upstream-compatible filenames but run at IDs 25/26 on fork-tracked DBs.
  • `open.test.ts` `zedLineOnly` assertion switched from `darwin` to `linux` — the fork's macOS `.app` fallback was making the assertion environment-sensitive (depends on whether Zed.app is installed on the host).
  • The release.yml took the fork's simplified flow rather than upstream's nightly-channel expansion because the fork doesn't publish CLI packages to npm.

juliusmarminge and others added 30 commits April 12, 2026 18:22
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: julius <julius0216@outlook.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
…ingdotgg#1541)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…gg#2024)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
justsomelegs and others added 6 commits April 15, 2026 14:20
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…gg#2049)

Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Integrates upstream/main (d22c6f5) into the fork while preserving all
multi-provider support (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) and fork UI/UX additions.

Highlights adopted from upstream:
- Nightly release channel + update channel selector (pingdotgg#2012, pingdotgg#2049, pingdotgg#1969)
- Filesystem browse API + command palette project picker (pingdotgg#2024)
- Launch Args setting for Claude provider (pingdotgg#1971)
- Kiro editor support in open picker (pingdotgg#1974)
- Claude plan events for TodoWrite during input streaming (pingdotgg#1541)
- Lost provider session recovery (pingdotgg#1938)
- Cache provider status and gate desktop startup (pingdotgg#1962)
- LegendList migration for chat scrolling and branch lists (pingdotgg#1953)
- Shell snapshot queries + backfill migration (pingdotgg#1973, pingdotgg#2004)
- PATH hydration + fallback detection (pingdotgg#1799)
- Warm sidebar thread subscriptions (pingdotgg#2001)
- Full thread title tooltip (pingdotgg#1994)
- Markdown file link UX (pingdotgg#1956), composer polish (pingdotgg#1944, pingdotgg#1992, pingdotgg#1985)
- Worktree/branch state + draft reuse fixes (pingdotgg#2005, pingdotgg#2003, pingdotgg#1995, pingdotgg#1936)
- Window controls overlay for Windows/Linux (pingdotgg#1969)
- Backend readiness timeout 10s→30s (pingdotgg#1979)
- Clear tracked RPCs on reconnect, live stream subscriptions (pingdotgg#2000, pingdotgg#1972)
- Various misc fixes (pingdotgg#2051, pingdotgg#2052, pingdotgg#2025, pingdotgg#2027, pingdotgg#2049, pingdotgg#1997, pingdotgg#1975)

Fork features preserved and reconciled:
- All 8 provider adapters + conformance tests
- Extended ProviderKind union across contracts/model/settings/provider
- appearance/accentColor/themeConfig/ProviderLogo UI system
- customModels + gitTextGeneration + providerModelOptions
- Migration IDs 23 (NormalizeLegacyProviderKinds) and 24
  (RepairProjectionThreadProposedPlanImplementationColumns) kept; new
  upstream migrations registered at IDs 25-26 to avoid breaking deployed
  fork databases
- DesktopBridge: log directory channels (LOG_DIR/LIST/READ/OPEN_DIR)
  retained; getWsUrl replaced by upstream's getAppBranding
- PROVIDER_CACHE_IDS extended to all 8 providers
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 16, 2026

Important

Review skipped

Too many files!

This PR contains 184 files, which is 34 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bbbde9f7-99c1-4d10-991e-f56c2bd6e714

📥 Commits

Reviewing files that changed from the base of the PR and between b3bd5c3 and 19eae71.

⛔ Files ignored due to path filters (20)
  • assets/dev/blueprint-icon-composer.icon/Assets/T3.svg is excluded by !**/*.svg
  • assets/dev/blueprint-icon-composer.icon/Assets/Texturelabs_Paper_381XL.jpg is excluded by !**/*.jpg
  • assets/dev/blueprint-icon-composer.icon/Assets/gpt-image-1.5-kn76n9hynne5q3qxy3g91chp2d84t871.png is excluded by !**/*.png
  • assets/dev/blueprint-ios-1024.png is excluded by !**/*.png
  • assets/dev/blueprint-macos-1024.png is excluded by !**/*.png
  • assets/dev/blueprint-universal-1024.png is excluded by !**/*.png
  • assets/dev/blueprint-web-apple-touch-180.png is excluded by !**/*.png
  • assets/dev/blueprint-web-favicon-16x16.png is excluded by !**/*.png
  • assets/dev/blueprint-web-favicon-32x32.png is excluded by !**/*.png
  • assets/dev/blueprint-web-favicon.ico is excluded by !**/*.ico
  • assets/dev/blueprint-windows.ico is excluded by !**/*.ico
  • assets/nightly/blueprint-ios-1024.png is excluded by !**/*.png
  • assets/nightly/blueprint-macos-1024.png is excluded by !**/*.png
  • assets/nightly/blueprint-universal-1024.png is excluded by !**/*.png
  • assets/nightly/blueprint-web-apple-touch-180.png is excluded by !**/*.png
  • assets/nightly/blueprint-web-favicon-16x16.png is excluded by !**/*.png
  • assets/nightly/blueprint-web-favicon-32x32.png is excluded by !**/*.png
  • assets/nightly/blueprint-web-favicon.ico is excluded by !**/*.ico
  • assets/nightly/blueprint-windows.ico is excluded by !**/*.ico
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (184)
  • .github/workflows/ci.yml
  • .oxfmtrc.json
  • CLAUDE.md
  • apps/desktop/scripts/electron-launcher.mjs
  • apps/desktop/src/appBranding.test.ts
  • apps/desktop/src/appBranding.ts
  • apps/desktop/src/backendReadiness.test.ts
  • apps/desktop/src/backendReadiness.ts
  • apps/desktop/src/desktopSettings.test.ts
  • apps/desktop/src/desktopSettings.ts
  • apps/desktop/src/main.ts
  • apps/desktop/src/preload.ts
  • apps/desktop/src/serverListeningDetector.test.ts
  • apps/desktop/src/serverListeningDetector.ts
  • apps/desktop/src/syncShellEnvironment.test.ts
  • apps/desktop/src/syncShellEnvironment.ts
  • apps/desktop/src/updateChannels.test.ts
  • apps/desktop/src/updateChannels.ts
  • apps/desktop/src/updateMachine.test.ts
  • apps/desktop/src/updateMachine.ts
  • apps/desktop/src/updateState.test.ts
  • apps/server/src/checkpointing/Layers/CheckpointDiffQuery.test.ts
  • apps/server/src/config.ts
  • apps/server/src/http.ts
  • apps/server/src/open.test.ts
  • apps/server/src/open.ts
  • apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts
  • apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts
  • apps/server/src/orchestration/Layers/ProjectionPipeline.ts
  • apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.test.ts
  • apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.ts
  • apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts
  • apps/server/src/orchestration/Layers/ProviderCommandReactor.ts
  • apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts
  • apps/server/src/orchestration/Normalizer.ts
  • apps/server/src/orchestration/Services/ProjectionSnapshotQuery.ts
  • apps/server/src/os-jank.test.ts
  • apps/server/src/os-jank.ts
  • apps/server/src/persistence/Layers/ProjectionRepositories.test.ts
  • apps/server/src/persistence/Layers/ProjectionThreads.ts
  • apps/server/src/persistence/Migrations.ts
  • apps/server/src/persistence/Migrations/023_ProjectionThreadShellSummary.ts
  • apps/server/src/persistence/Migrations/024_BackfillProjectionThreadShellSummary.test.ts
  • apps/server/src/persistence/Migrations/024_BackfillProjectionThreadShellSummary.ts
  • apps/server/src/persistence/Services/ProjectionThreads.ts
  • apps/server/src/provider/Layers/ClaudeAdapter.test.ts
  • apps/server/src/provider/Layers/ClaudeAdapter.ts
  • apps/server/src/provider/Layers/ClaudeProvider.ts
  • apps/server/src/provider/Layers/CodexProvider.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.ts
  • apps/server/src/provider/makeManagedServerProvider.ts
  • apps/server/src/provider/providerStatusCache.test.ts
  • apps/server/src/provider/providerStatusCache.ts
  • apps/server/src/server.test.ts
  • apps/server/src/serverRuntimeStartup.test.ts
  • apps/server/src/serverRuntimeStartup.ts
  • apps/server/src/serverSettings.test.ts
  • apps/server/src/workspace/Layers/WorkspaceEntries.test.ts
  • apps/server/src/workspace/Layers/WorkspaceEntries.ts
  • apps/server/src/workspace/Layers/WorkspacePaths.test.ts
  • apps/server/src/workspace/Layers/WorkspacePaths.ts
  • apps/server/src/workspace/Services/WorkspaceEntries.ts
  • apps/server/src/workspace/Services/WorkspacePaths.ts
  • apps/server/src/ws.ts
  • apps/web/package.json
  • apps/web/src/authBootstrap.test.ts
  • apps/web/src/branding.test.ts
  • apps/web/src/branding.ts
  • apps/web/src/chat-scroll.test.ts
  • apps/web/src/chat-scroll.ts
  • apps/web/src/commandPaletteStore.ts
  • apps/web/src/components/BranchToolbar.logic.test.ts
  • apps/web/src/components/BranchToolbar.logic.ts
  • apps/web/src/components/BranchToolbar.tsx
  • apps/web/src/components/BranchToolbarBranchSelector.tsx
  • apps/web/src/components/BranchToolbarEnvModeSelector.tsx
  • apps/web/src/components/ChatMarkdown.browser.tsx
  • apps/web/src/components/ChatMarkdown.tsx
  • apps/web/src/components/ChatView.browser.tsx
  • apps/web/src/components/ChatView.logic.test.ts
  • apps/web/src/components/ChatView.logic.ts
  • apps/web/src/components/ChatView.tsx
  • apps/web/src/components/CommandPalette.logic.ts
  • apps/web/src/components/CommandPalette.tsx
  • apps/web/src/components/CommandPaletteResults.tsx
  • apps/web/src/components/ComposerPromptEditor.tsx
  • apps/web/src/components/DiffPanel.tsx
  • apps/web/src/components/DiffPanelShell.tsx
  • apps/web/src/components/GitActionsControl.logic.test.ts
  • apps/web/src/components/GitActionsControl.logic.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/KeybindingsToast.browser.tsx
  • apps/web/src/components/NoActiveThreadState.tsx
  • apps/web/src/components/PlanSidebar.tsx
  • apps/web/src/components/Sidebar.logic.test.ts
  • apps/web/src/components/Sidebar.logic.ts
  • apps/web/src/components/Sidebar.tsx
  • apps/web/src/components/ThreadTerminalDrawer.tsx
  • apps/web/src/components/chat/ChatComposer.tsx
  • apps/web/src/components/chat/CompactComposerControlsMenu.browser.tsx
  • apps/web/src/components/chat/CompactComposerControlsMenu.tsx
  • apps/web/src/components/chat/MessagesTimeline.browser.tsx
  • apps/web/src/components/chat/MessagesTimeline.logic.test.ts
  • apps/web/src/components/chat/MessagesTimeline.logic.ts
  • apps/web/src/components/chat/MessagesTimeline.test.tsx
  • apps/web/src/components/chat/MessagesTimeline.tsx
  • apps/web/src/components/chat/MessagesTimeline.virtualization.browser.tsx
  • apps/web/src/components/chat/OpenInPicker.tsx
  • apps/web/src/components/desktopUpdate.logic.test.ts
  • apps/web/src/components/settings/SettingsPanels.browser.tsx
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/timelineHeight.test.ts
  • apps/web/src/components/timelineHeight.ts
  • apps/web/src/components/ui/combobox.tsx
  • apps/web/src/components/ui/select.tsx
  • apps/web/src/composerDraftStore.ts
  • apps/web/src/environmentApi.ts
  • apps/web/src/environmentBootstrap.ts
  • apps/web/src/environments/primary/auth.ts
  • apps/web/src/environments/runtime/connection.test.ts
  • apps/web/src/environments/runtime/connection.ts
  • apps/web/src/environments/runtime/service.threadSubscriptions.test.ts
  • apps/web/src/environments/runtime/service.ts
  • apps/web/src/filePathDisplay.test.ts
  • apps/web/src/filePathDisplay.ts
  • apps/web/src/hooks/useHandleNewThread.ts
  • apps/web/src/hooks/useThreadActions.ts
  • apps/web/src/index.css
  • apps/web/src/keybindings.test.ts
  • apps/web/src/keybindings.ts
  • apps/web/src/lib/desktopUpdateReactQuery.test.ts
  • apps/web/src/lib/gitStatusState.test.ts
  • apps/web/src/lib/projectPaths.test.ts
  • apps/web/src/lib/projectPaths.ts
  • apps/web/src/lib/windowControlsOverlay.ts
  • apps/web/src/localApi.test.ts
  • apps/web/src/localApi.ts
  • apps/web/src/main.tsx
  • apps/web/src/markdown-links.test.ts
  • apps/web/src/markdown-links.ts
  • apps/web/src/routes/_chat.$environmentId.$threadId.tsx
  • apps/web/src/routes/_chat.tsx
  • apps/web/src/routes/pair.tsx
  • apps/web/src/routes/settings.tsx
  • apps/web/src/rpc/wsRpcClient.ts
  • apps/web/src/rpc/wsTransport.test.ts
  • apps/web/src/rpc/wsTransport.ts
  • apps/web/src/session-logic.test.ts
  • apps/web/src/session-logic.ts
  • apps/web/src/store.test.ts
  • apps/web/src/store.ts
  • apps/web/src/storeSelectors.ts
  • apps/web/src/terminal-links.ts
  • apps/web/src/timestampFormat.ts
  • apps/web/test/wsRpcHarness.ts
  • assets/dev/blueprint-icon-composer.icon/icon.json
  • docs/release.md
  • packages/contracts/src/editor.ts
  • packages/contracts/src/filesystem.ts
  • packages/contracts/src/index.ts
  • packages/contracts/src/ipc.ts
  • packages/contracts/src/orchestration.test.ts
  • packages/contracts/src/orchestration.ts
  • packages/contracts/src/rpc.ts
  • packages/contracts/src/settings.ts
  • packages/shared/package.json
  • packages/shared/src/cliArgs.test.ts
  • packages/shared/src/cliArgs.ts
  • packages/shared/src/git.test.ts
  • packages/shared/src/git.ts
  • packages/shared/src/path.test.ts
  • packages/shared/src/path.ts
  • packages/shared/src/shell.test.ts
  • packages/shared/src/shell.ts
  • scripts/build-desktop-artifact.test.ts
  • scripts/build-desktop-artifact.ts
  • scripts/lib/brand-assets.ts
  • scripts/release-smoke.ts
  • scripts/resolve-nightly-release.test.ts
  • scripts/resolve-nightly-release.ts
  • scripts/resolve-previous-release-tag.ts
  • scripts/update-release-package-versions.test.ts
  • scripts/update-release-package-versions.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/upstream-2026-04-17

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). labels Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). 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.