Repository navigation
fix(web): remember editor selections before opening folders - #19078
Conversation
- Select an editor in the picker without immediately opening the workspace - Prefer the macOS Zed app bundle over a conflicting `zed` on PATH
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped editor-launch bug fix: toolbar selections are remembered without opening a folder, while menu launches remain unchanged, and macOS Zed resolution avoids a PATH name collision. Regression coverage covers both UI modes and the bundle-selection scenario. You can add or adjust custom eligibility rules. Learn more. |
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. |
- The feature branch starts from upstream main, so this also brings in upstream pingdotgg#19078 and pingdotgg#19077. pingdotgg#19078 changes OpenInPicker's menu clicks; Cody's Tailscale SSH login and hint stay in the remote-open path. - personal-fixes.json: adds the scheduled task thread options test.
## What's Changed * fix(web): remember editor selections before opening folders by @Yash-Singh1 in pingdotgg/t3code#19078 * fix(ci): retry Cursor webhook HTTP 400s on main by @Yash-Singh1 in pingdotgg/t3code#19077 * fix(web): let context handoff details use the available width by @Yash-Singh1 in pingdotgg/t3code#19098 * fix(server): snoozed threads allow queued automatic wakes by @Yash-Singh1 in pingdotgg/t3code#19099 * fix(web): merge button fits its label and animates width changes by @flamboh in pingdotgg/t3code#18478 * fix(web): Cmd+Enter creates the new project while an option is highlighted by @SunkenInTime in pingdotgg/t3code#18901 * fix(pi): queue turn-start prompts when native work is running by @StiensWout in pingdotgg/t3code#18639 * fix(pi): load T3 tool schemas for completion gateways by @StiensWout in pingdotgg/t3code#18643 * fix(devices): report agent tool startup failures by @PixPMusic in pingdotgg/t3code#18502 * fix(web): settings warn when an environment silently drops a setting by @flamboh in pingdotgg/t3code#18334 * fix(desktop): stop unsolicited Messages code autofill by @StiensWout in pingdotgg/t3code#19118 * feat(chat): show pending context handoff when selecting a model by @maria-rcks in pingdotgg/t3code#18369 * fix(server): collect SQLite planner statistics when the database opens by @otavio in pingdotgg/t3code#18471 * fix(server): failed threads no longer scan every tool item for errors by @realhasanshoaib in pingdotgg/t3code#18628 * fix(web): keep clone folder names readable in the setup project picker by @tachytelicdetonation in pingdotgg/t3code#12474 * fix(composer): allow slash skill search within messages by @Bil0000 in pingdotgg/t3code#19107 ## New Contributors * @tachytelicdetonation made their first contribution in pingdotgg/t3code#12474 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261013.3066...v0.0.46-nightly.20261013.3080 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261013.3080
## What's Changed * fix(web): remember editor selections before opening folders by @Yash-Singh1 in pingdotgg/t3code#19078 * fix(ci): retry Cursor webhook HTTP 400s on main by @Yash-Singh1 in pingdotgg/t3code#19077 * fix(web): let context handoff details use the available width by @Yash-Singh1 in pingdotgg/t3code#19098 * fix(server): snoozed threads allow queued automatic wakes by @Yash-Singh1 in pingdotgg/t3code#19099 * fix(web): merge button fits its label and animates width changes by @flamboh in pingdotgg/t3code#18478 * fix(web): Cmd+Enter creates the new project while an option is highlighted by @SunkenInTime in pingdotgg/t3code#18901 * fix(pi): queue turn-start prompts when native work is running by @StiensWout in pingdotgg/t3code#18639 * fix(pi): load T3 tool schemas for completion gateways by @StiensWout in pingdotgg/t3code#18643 * fix(devices): report agent tool startup failures by @PixPMusic in pingdotgg/t3code#18502 * fix(web): settings warn when an environment silently drops a setting by @flamboh in pingdotgg/t3code#18334 * fix(desktop): stop unsolicited Messages code autofill by @StiensWout in pingdotgg/t3code#19118 * feat(chat): show pending context handoff when selecting a model by @maria-rcks in pingdotgg/t3code#18369 * fix(server): collect SQLite planner statistics when the database opens by @otavio in pingdotgg/t3code#18471 * fix(server): failed threads no longer scan every tool item for errors by @realhasanshoaib in pingdotgg/t3code#18628 * fix(web): keep clone folder names readable in the setup project picker by @tachytelicdetonation in pingdotgg/t3code#12474 * fix(composer): allow slash skill search within messages by @Bil0000 in pingdotgg/t3code#19107 ## New Contributors * @tachytelicdetonation made their first contribution in pingdotgg/t3code#12474 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261013.3066...v0.0.46-nightly.20261013.3080 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261013.3080
Merges `pingdotgg/t3code` up to `6002c5c68c` (42 commits, base `5070a83a32`), using a merge commit. No open merge PR to stack on; this branches from `main` at `882bb0a638`. ## Resolution - **`package.json`** (conflict): dropped upstream's `tsc-rs` 0.6.0 bump (pingdotgg#19187). The fork removed `tsc-rs`, and the `tsc-rs` tripwire holds that. New path-policy entry: `root-package-json` (`decide`). - **`pnpm-lock.yaml`** (conflict, `theirs`): took upstream's copy. Its seven `tsc-rs@0.6.0` entries fail `minimumReleaseAge` before resolution can prune them, so I stripped them and let `install.mjs` re-derive the rest. The fork edges (`moatless-api`, `mermaid`) are back, and `verify --only lockfile` passes. - 14 other files that both sides touched merged without conflict. `duplicate-adds` and `resolution-check` are both clean. `FilePreviewPanel.tsx` (`decide`) took upstream's `threadRef` prop and kept both fork deltas. The two unlisted files now have `converged` entries: `terminal-drawer-open-in-editor` and `thread-shell-subtasks`. In `threadShell.ts`, upstream's `isChildRunLive` and the fork's listing filter merged together correctly. - File counts: 136 files landed, against 136 in the upstream range. The only differences are `package.json` (missing, because its one upstream change was the dropped bump) and `docs/fork/inventory.json` (extra, fork-only). The fork delta is 809 files. - **Script fix:** Moatless replaced its dispatch match arms with a `MethodTable` (moatless#1138). Because of that, `unsupported-methods.mjs` found no arms and exited 2. It now reads `.detached`/`.session`/`.stream` registrations and follows handlers passed by name. Result: ADD 0, DROP 0, KEEP 2 (`vcs.switchRef`, `git.preparePullRequestThread`), which matches `gaps.md`. ## Verification `verify.mjs`: these checks pass: duplicate-adds, tripwires, resolution-check, unsupported-methods (after the fix), lockfile, fmt, lint, typecheck, build. `test` fails. Each of the failing files also failed when run alone, and they are the same five files as in the 2026-10-13 merge, all caused by the sandbox: shared `AgentScope`, server `ServerBrowserPage` (no Playwright browser), `AcpAdapterV2`, `OrchestratorReplayFixtures`, and `OpenCodeServerLedger`. ## Usable as-is - Full-screen visual replies with zoom (pingdotgg#17561). Links inside HTML renders open the way chat links do (pingdotgg#18897). App shortcuts keep working after you click into an HTML render (pingdotgg#18898). - Touch-scrolling in terminal output (pingdotgg#11305). Fixed: answering a question reset the editor caret (pingdotgg#11337). Links in agent questions are now clickable (pingdotgg#19197). - Fixed: "Subagent needs input" stayed after the subagent finished (pingdotgg#18996). This is client-side and uses `activityRunStatus` with a fallback to `status`. - Slash skill search now works mid-message (pingdotgg#19107). Fixed: removing a project opened a new thread for it (pingdotgg#15864). Settings now warn when an environment silently drops a setting (pingdotgg#18334). - Smaller fixes: context handoff details use the available width (pingdotgg#19098), pace icon alignment (pingdotgg#18580), tool-call collection perf (pingdotgg#18853), git file paths keep whitespace in the contract schema (pingdotgg#12465), Android beta links (pingdotgg#18955). - Pending context-handoff preview when you pick a model (pingdotgg#18369). It is computed on the client from `server.providers` (`requiresNewThreadForModelChange`, `continuation.groupKey`). If Moatless does not report those fields, the preview shows a handoff on every provider switch. ## Unsupported in Moatless / needs implementation - Delegated tasks in separate worktrees (pingdotgg#19102): `isolation: "worktree"` on the orchestrator MCP `delegate_task`, and `workspaceStrategy` on the child-launch command. Moatless does not create worktrees (`FEATURES.worktreeSelection`). - These land behind flags that are already gated: scheduled-task dialog fix (pingdotgg#18940, `scheduledTasks`), PR merge/auto-merge button sizing (pingdotgg#18478, pingdotgg#19111, `pullRequestSurface`), remembering editor selections (pingdotgg#19078, `openInEditor`), device tool startup failures (pingdotgg#18502, `deviceHub`), npm "update everything" (pingdotgg#18709, `serverUpdateBanner`), clone folder names in the welcome wizard (pingdotgg#12474), Cmd+Enter create-project in the palette (pingdotgg#18901). - No new RPC methods (ADD 0). ## Backend behavior to consider reproducing in Moatless I added these to the "Runtime fixes upstream made to its own server" entry in `docs/fork/gaps.md`: - Worktree isolation for delegated tasks (pingdotgg#19102). - Snoozed threads still take queued automatic wakes (pingdotgg#19099). - Indexed failed-thread error lookup (pingdotgg#18628). - SQLite: no fsync on every commit, and planner stats collected on open (pingdotgg#19205, pingdotgg#18471). - Distinct CI checks with overlapping names (pingdotgg#19162). - Bitbucket short-hash heads in review guides (pingdotgg#18900). - Webhook template backtracking (pingdotgg#19160). - OpenCode timeout formatting (pingdotgg#12469). - Pi tool schemas and turn-start queueing (pingdotgg#18643, pingdotgg#18639). - Usage hubs without a host, and Antigravity accounts deduplicated (pingdotgg#11368, pingdotgg#19207). - Haiku 5.5 as the default for background text generation (pingdotgg#18781). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- Moatless task: https://moatless.soaplabstest.com/tasks/db18f6dc-70c1-4d89-ada7-cd4b4f19a247
Problem
Choosing an editor in the folder picker immediately opened the folder, leaving no way to set a preference without launching it. On macOS, a
zedexecutable earlier onPATHcould also point to OpenZFS instead of the Zed editor.Change
In the toolbar picker, selecting an editor now saves it as the preferred editor; the menu picker still opens the folder. On macOS, editor lookup checks the Zed app bundle before
PATHcandidates.Scope and approval
This is a focused fix for editor selection and launch behavior. No prior issue or discussion was needed.
Verification
Added picker tests for saving the preference in local and remote modes, and a server test for selecting the macOS Zed bundle when another
zedis onPATH. Tests were added but not run.