Repository navigation
fix(git): preserve whitespace in file paths (#12464) - #12465
Conversation
ApprovabilityVerdict: Would Approve Macroscope's review found this PR approvable — This is a small, backward-compatible Git path-validation fix with focused regression tests and no broad runtime or infrastructure changes. However, server-side path parsers still trim whitespace before these schemas receive the values, leaving the intended end-to-end fix incomplete. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
|
Note Generated by GPT 6.1 Sol @coderabbitai full review The incremental review was skipped because its checkpoint could not be recovered after the merge from main. Requesting a full review of the current PR diff at |
✅ Action performedFull review finished. |
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
## What's Changed * fix(claude): default background text generation to haiku 5.5 by @maria-rcks in pingdotgg/t3code#18781 * chore(typecheck): bump tsc-rs to 0.6.0 by @t3dotgg in pingdotgg/t3code#19187 * fix(server): keep OpenCode timeouts from crashing the error formatter by @tachytelicdetonation in pingdotgg/t3code#12469 * feat(server): run delegated tasks in separate worktrees by @Bil0000 in pingdotgg/t3code#19102 * fix(git): preserve whitespace in file paths (#12464) by @Defmon3 in pingdotgg/t3code#12465 * fix(server): stop fsyncing SQLite on every commit so slow disks no longer drop clients by @t3dotgg in pingdotgg/t3code#19205 * fix(chat): make links in agent questions clickable by @t3dotgg in pingdotgg/t3code#19197 * fix(usage): show one Antigravity account once, not once per machine by @t3dotgg in pingdotgg/t3code#19207 * fix(web): Android beta links point to the APK release, not the banned Google group by @shivamhwp in pingdotgg/t3code#18955 * fix(client): "Subagent needs input" no longer sticks after the subagent finishes by @shivamhwp in pingdotgg/t3code#18996 * fix(web): stop question answers from resetting the editor caret by @shivamhwp in pingdotgg/t3code#11337 * fix(web): app shortcuts keep working after clicking into an HTML render by @maria-rcks in pingdotgg/t3code#18898 * fix(source-control): keep distinct CI checks with overlapping names by @Lucenx9 in pingdotgg/t3code#19162 * fix(server): avoid excessive backtracking in webhook templates by @Lucenx9 in pingdotgg/t3code#19160 * fix(web): auto-merge button fits its label and animates width changes by @flamboh in pingdotgg/t3code#19111 * fix(web): scroll terminal output with touch gestures by @shivamhwp in pingdotgg/t3code#11305 * feat(web): view visual replies full screen with zoom by @Bil0000 in pingdotgg/t3code#17561 * fix(web): removing a project no longer opens a new thread for it by @shivamhwp in pingdotgg/t3code#15864 * fix(server): usage hubs with a host-less URL no longer vanish from Limits by @shivamhwp in pingdotgg/t3code#11368 * fix(mobile): search bar animates in on iOS 26+ instead of popping by @juliusmarminge in pingdotgg/t3code#19209 ## New Contributors * @Defmon3 made their first contribution in pingdotgg/t3code#12465 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261013.3080...v0.0.46-nightly.20261014.3093 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261014.3093
## What's Changed * fix(claude): default background text generation to haiku 5.5 by @maria-rcks in pingdotgg/t3code#18781 * chore(typecheck): bump tsc-rs to 0.6.0 by @t3dotgg in pingdotgg/t3code#19187 * fix(server): keep OpenCode timeouts from crashing the error formatter by @tachytelicdetonation in pingdotgg/t3code#12469 * feat(server): run delegated tasks in separate worktrees by @Bil0000 in pingdotgg/t3code#19102 * fix(git): preserve whitespace in file paths (#12464) by @Defmon3 in pingdotgg/t3code#12465 * fix(server): stop fsyncing SQLite on every commit so slow disks no longer drop clients by @t3dotgg in pingdotgg/t3code#19205 * fix(chat): make links in agent questions clickable by @t3dotgg in pingdotgg/t3code#19197 * fix(usage): show one Antigravity account once, not once per machine by @t3dotgg in pingdotgg/t3code#19207 * fix(web): Android beta links point to the APK release, not the banned Google group by @shivamhwp in pingdotgg/t3code#18955 * fix(client): "Subagent needs input" no longer sticks after the subagent finishes by @shivamhwp in pingdotgg/t3code#18996 * fix(web): stop question answers from resetting the editor caret by @shivamhwp in pingdotgg/t3code#11337 * fix(web): app shortcuts keep working after clicking into an HTML render by @maria-rcks in pingdotgg/t3code#18898 * fix(source-control): keep distinct CI checks with overlapping names by @Lucenx9 in pingdotgg/t3code#19162 * fix(server): avoid excessive backtracking in webhook templates by @Lucenx9 in pingdotgg/t3code#19160 * fix(web): auto-merge button fits its label and animates width changes by @flamboh in pingdotgg/t3code#19111 * fix(web): scroll terminal output with touch gestures by @shivamhwp in pingdotgg/t3code#11305 * feat(web): view visual replies full screen with zoom by @Bil0000 in pingdotgg/t3code#17561 * fix(web): removing a project no longer opens a new thread for it by @shivamhwp in pingdotgg/t3code#15864 * fix(server): usage hubs with a host-less URL no longer vanish from Limits by @shivamhwp in pingdotgg/t3code#11368 * fix(mobile): search bar animates in on iOS 26+ instead of popping by @juliusmarminge in pingdotgg/t3code#19209 ## New Contributors * @Defmon3 made their first contribution in pingdotgg/t3code#12465 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261013.3080...v0.0.46-nightly.20261014.3093 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261014.3093
Closes #12464
Git action inputs and working-tree status results trim file paths, changing
" leading.txt"into"leading.txt". Preserve the exact strings in both path fields while continuing to reject empty paths.Verification against upstream
9ea9c3d5d: the two whitespace-preservation assertions fail without the fix and pass with it. Both empty-path rejection assertions pass in both cases, giving four passing focused tests with the fix. This verifies schema decoding; a complete staging or commit operation was not tested.Developed with Astra 6 in Codex/T3 Code and reviewed with Fable 5.1.