Skip to content

fix(server): changed files keep their real paths for renames and non-ASCII names - #20175

Merged
juliusmarminge merged 8 commits into
pingdotgg:mainfrom
Atharvsinh-codez:fix/git-status-real-paths
Oct 19, 2026
Merged

juliusmarminge merged 8 commits into
pingdotgg:mainfrom
Atharvsinh-codez:fix/git-status-real-paths

Conversation

@Atharvsinh-codez

@Atharvsinh-codez Atharvsinh-codez commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Git status used display-oriented path parsing, which misread quoted, non-ASCII and renamed files. Selective commits and editor actions also used the wrong directory when the project was nested inside a repository.

Change

Use NUL-delimited Git status and numstat records, reuse the existing numstat parser, and stage selected repository-relative paths with literal top-level pathspecs. Return the repository root with local status so file actions resolve against the same snapshot; keep the root optional for older servers and disable the editor action when it is unavailable. Preserve significant trailing whitespace when decoding the root path.

Thanks @Atharvsinh-codez for the original fix and regression cases in #20175.

Scope and approval

This covers Git path decoding, nested selective commits, and the shared web/desktop file action. It does not change provider behavior or introduce a new Git workflow. The existing mobile selection path continues to submit repository-relative paths. Maintainer takeover and original-branch publication are authorized; no merge is requested.

Verification

At local head ad93c17, incorporating main c274a25:

  • The trailing-space root regression failed with the previous decoder and passed with the correction. The driver suite passed 168 tests before and after integration. Manager/status suites passed 197 tests before integration; the browser command-boundary suite passed 16 after integration. Scoped lint, formatting and server/contracts/web typechecks passed. An independent Sol review ran another 69 focused cases successfully.
  • A real local web client verified tracked and untracked file targets in normal nested and space-suffixed-root projects. All four targets matched existing files. An explicit-message selective commit included the Unicode file and rename while leaving both unchecked files uncommitted. Full path evidence.

Before — prior local head f7de77f, same space-root fixture and action; the requested root lost its space:

Before: incorrect file target loses the repository root space

After — current local head, preserving the space:

After: correct file target preserves the repository root space

Selective commit — Unicode and rename selected, unrelated files excluded:

Selective commit keeps unrelated files excluded

Mixed versions: a new client connected to an older server disables this editor action when the root is unavailable. An older client connected to a new server can still resolve nested editor targets incorrectly; upgrading both sides is needed for that fix. Commit selection remains compatible.

Limits: no editor is installed, so the client error and full DOM target establish path resolution, not successful editor launch. This pass exercised local web, not a native shell, mobile, relay or tunnel. The before capture is retained from the earlier exact head. The proof worker accidentally triggered automatic commit-message generation once in the disposable fixture, preserved and reversed that commit, then performed the explicit-message selective test; no conversational provider run, source change or live user-state write occurred. Owned servers were stopped afterward.

Implementation: Claude Fable 5.1 through T3 Code. Fresh full cumulative reviews by Claude Opus 5.5 and GPT-6.1 Sol through T3 Code both found no substantive defects at this head; Opus independently passed all 168 driver tests.

…ASCII names

Status read `git status --porcelain=2` and `git diff-index --numstat`
in their display form. Numstat writes a rename inside a folder as
`src/{old.ts => new.ts}`, which became `new.ts}`, and porcelain quotes
names with non-ASCII bytes, which the whitespace split turned into
`notes.md"`. Committing a selection that included either path failed
with "pathspec did not match".

Read both commands with -z so paths arrive verbatim, reuse the existing
NUL numstat parser, and list a rename's original path so its deletion
can still be selected.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T06:37:21.131791Z 3450b0b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 16, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 3450b0b

Macroscope's review found this PR approvable — This is a focused, test-covered server bug fix that makes Git status paths reliable for renames, spaces, and non-ASCII names. Its runtime impact is confined to changed-file reporting and selective commit staging, with no schema, default, deployment, or static-analysis changes.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7964f9ee-a2d7-4190-8b0d-55c9b47a50c4
📥 Commits

Reviewing files that changed from the base of the PR and between 86680b5 and f21194c.

📒 Files selected for processing: 2
  • apps/server/src/vcs/GitVcsDriverCore.test.ts
  • apps/server/src/vcs/GitVcsDriverCore.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

Git status now parses NUL-delimited porcelain and numstat output. It tracks rename paths and accumulates repeated file statistics. Selected-file staging uses repository-relative paths from nested directories.

Changes: Git status and selected-file commits

Layer / File(s) Summary
NUL-delimited status and numstat parsing
apps/server/src/vcs/GitVcsDriverCore.ts, apps/server/src/vcs/GitVcsDriverCore.test.ts
Status commands request NUL-delimited output. The parser reads porcelain records and numstat data, tracks both paths for renames, and accumulates repeated file statistics. Tests cover committing a renamed file and a modified file with a non-ASCII name.
Selected-file staging from nested directories
apps/server/src/vcs/GitVcsDriverCore.ts, apps/server/src/vcs/GitVcsDriverCore.test.ts
Selected paths use top-anchored literal pathspecs. A test checks that a nested-directory commit leaves an unselected root-level change uncommitted.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to f2119

No actionable issue remains in the reviewed status and selected-file commit changes; the PR is mergeable after normal checks.

### Architecture Summary

Architecture risk: 🔵 Low · up to f2119

The change affects 1 system.

Changed systems: apps/server

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — apps/server (service) was modified; 2 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in apps/server/src/vcs/GitVcsDriverCore.test.ts: The expected status command arguments now include -z; the previous expectation omitted the NUL-delimited output option.
  • observed — Modified behavior in apps/server/src/vcs/GitVcsDriverCore.test.ts: Adds a test covering a modified non-ASCII filename and an edited rename. It checks the reported paths, stages those paths through commit, and expects the working tree to be clean afterward.
  • observed — Modified behavior in apps/server/src/vcs/GitVcsDriverCore.test.ts: Adds a nested-directory commit-selection test. It checks that status reports repository-relative paths, commits two selected nested files, and leaves the unselected root README modification present.
  • observed — Modified behavior in apps/server/src/vcs/GitVcsDriverCore.ts: Removed parseNumstatEntries, which parsed newline-separated numstat output and normalized rename paths by taking the text after =>. The status flow now uses NUL-delimited review numstat parsing.
Pre-merge checks: Passed 4
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly identifies the main fix: preserving real paths for renamed and non-ASCII files. It is concise and follows the repository's conventional commit format.
Description check Passed The description includes all required sections and provides clear problem details, implementation scope, approval context, focused verification results, limitations, and test evidence. It is sufficien…
Full details: Description check

Explanation

The description includes all required sections and provides clear problem details, implementation scope, approval context, focused verification results, limitations, and test evidence. It is sufficiently complete for review.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3450b0b878

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"status",
"--porcelain=2",
"--branch",
"-z",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Stage NUL status paths from the worktree root

When cwd is a repository subdirectory (the supported nested-project case in GitVcsDriverCore.test.ts:1531), this added -z changes porcelain-v2 names from cwd-relative to repository-relative. After checking git status -h (-z, --[no-]null is documented as “terminate entries with NUL”), I reproduced from /repo/nested that the line form reports ? new.ts while this command reports ? nested/new.ts\0. stageCommitChanges still invokes git --literal-pathspecs add in /repo/nested, so once the user unchecks any file, the selected path resolves to /repo/nested/nested/new.ts and the commit fails with an unmatched pathspec; use a top-anchored literal pathspec (as diffCheckpoints does) or stage from the worktree root.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, confirmed. From /repo/nested, git status --porcelain=2 prints ? new.ts but -z prints ? nested/new.ts. Numstat was already root-relative before this PR, so tracked edits in a nested project were already failing this way. The -z change would have made untracked files fail too.

Fixed in f21194c. Selected files are now staged with :(top,literal) pathspecs, the same way diffCheckpoints does it. I also added commits selected files from a nested project directory, which fails without the staging change and passes with it.

AdEx-Partners-DE added a commit to AdEx-Partners-DE/t3code that referenced this pull request Oct 16, 2026
…ASCII names (adopts upstream pingdotgg#20175)

Own diff of pingdotgg#20175 at 3450b0b against its merge base.
One conflict in GitVcsDriverCore.ts: the pull request removes
parseNumstatEntries; kept the fork's comment above parseReviewNumstat that
sat in the same hunk. GitVcsDriverCore.test.ts: the same 10 known Windows
failures before and after, 145 passed before, 146 after; tsc clean in
apps/server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With -z, status reports paths relative to the repository root, but
selected files were staged relative to cwd. In a project that is a
subdirectory of its repository, committing only some files resolved
`nested/new.txt` to `nested/nested/new.txt` and failed. Anchor the
pathspecs at the top, the same way checkpoint diffs already do.
@juliusmarminge juliusmarminge self-assigned this Oct 18, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Taking over this one. I’ll reduce the tests to the useful coverage, update the implementation against current main, and verify it before publishing the changes.

juliusmarminge and others added 5 commits October 18, 2026 16:40
The repository root is now the editor target for every status path, but the root lookup trimmed Git's --show-toplevel output, so a repository whose directory name ends in a space sent the editor to a path that does not exist. Strip only the single trailing newline Git prints.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@juliusmarminge
juliusmarminge merged commit 771fd93 into pingdotgg:main Oct 19, 2026
25 of 26 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 19, 2026
## What's Changed
* fix(mobile): settings no longer tell you to update when you're up to date by @shivamhwp in pingdotgg/t3code#21688
* test(web): fix the workflow script test that times out on busy CI runners by @shivamhwp in pingdotgg/t3code#21699
* fix(mobile): a file shared into a new task shows in the composer before you send by @shivamhwp in pingdotgg/t3code#21659
* fix(desktop): a cold WSL distro gets 30 seconds to boot instead of 10 by @SunkenInTime in pingdotgg/t3code#21070
* fix(web): detect software keyboard before handling composer Enter by @Yash-Singh1 in pingdotgg/t3code#21763
* fix(mobile): the Git sheet uses the standard list rows by @juliusmarminge in pingdotgg/t3code#21785
* fix(server): changed files keep their real paths for renames and non-ASCII names by @Atharvsinh-codez in pingdotgg/t3code#20175
* fix(server): a message promoted into a stopping run stays queued by @lbgos in pingdotgg/t3code#16926
* perf(mobile): streaming re-renders less on the open thread screen by @juliusmarminge in pingdotgg/t3code#20963
* feat(usage): show even-pace marks on Limits bars by @flamboh in pingdotgg/t3code#14477
* fix(web): Usage hourly labels follow the Time format setting by @mInrOz in pingdotgg/t3code#15575
* fix(web): stop repeating the subagent name in the waiting banner by @saphid in pingdotgg/t3code#16022
* fix(web): Cmd+O no longer opens the editor more than once by @5knnbdwm in pingdotgg/t3code#18983
* fix(web): hoist favorited legacy models to the top of the model picker by @TonybynMp4 in pingdotgg/t3code#11933
* fix(server): a rollback blocked by Git's index lock says so instead of a generic error by @shivamhwp in pingdotgg/t3code#11340
* fix(mobile): expanded tool-call groups keep following new calls by @nekohasekai in pingdotgg/t3code#15747
* fix(web): going back in the command palette keeps the search that led there by @saphid in pingdotgg/t3code#15940
* fix(web): changing a project's model no longer keeps the old model's options by @yaacovcorcos in pingdotgg/t3code#16581
* fix(web): preserve snapshot thumbnail context and detail by @maria-rcks in pingdotgg/t3code#18440
* fix(web): keep expanded tool actions usable from the keyboard by @saphid in pingdotgg/t3code#18831
* fix(usage): Claude usage no longer lists a `<synthetic>` model by @tris203 in pingdotgg/t3code#14672
* fix(server): release webhook claims when acceptance fails by @saphid in pingdotgg/t3code#18820
* fix(desktop): make the annotation editor border and shadow actually render by @PollyGlot in pingdotgg/t3code#9406
* fix(server): Claude follow-ups no longer fail in Auto on models without Auto by @Gigioxx in pingdotgg/t3code#15687
* fix(web): reopening Connections picks up new network addresses by @lnieuwenhuis in pingdotgg/t3code#15840
* fix(client): MCP apps can no longer trap you in full screen; it opens only after a tap by @shivamhwp in pingdotgg/t3code#18548
* fix(web,mobile): disabled provider instances no longer badge their siblings by @tris203 in pingdotgg/t3code#14545
* fix(web): threads open at the newest message, not thousands of pixels above it by @t3dotgg in pingdotgg/t3code#19663
* fix(mobile): report rejected shared settings writes by @juliusmarminge in pingdotgg/t3code#9356
* fix(claude): show automatic compaction while it runs by @maria-rcks in pingdotgg/t3code#15631
* fix(web): keep the parent thread highlighted while viewing its subagent by @saphid in pingdotgg/t3code#15163
* fix(web): show pull request checkout error detail by @saphid in pingdotgg/t3code#15007
* fix(server): mark unvisited thread completions unread by @maria-rcks in pingdotgg/t3code#15607
* fix(web): started threads no longer offer a machine picker that does nothing by @tris203 in pingdotgg/t3code#19900
* fix(web): provider model names no longer get cut off by their slug by @ilyaliao in pingdotgg/t3code#16522
* fix(claude): mid-sentence skill chips keep the full request by @ScottN-PV in pingdotgg/t3code#15253
* fix(web): preserve unsaved keybinding edits when saving another binding by @pnupu in pingdotgg/t3code#11109
* fix(connections): retry unsupported saved direct connections by @none23 in pingdotgg/t3code#15107
* fix(web): show readable messages for structured thread errors by @juliusmarminge in pingdotgg/t3code#21483
* fix(web): custom shortcuts work when Local environment is off by @Mnigos in pingdotgg/t3code#15825
* fix(web): keep thread notification tags within the Windows toast limit by @satyalyadav in pingdotgg/t3code#12289
* fix(web): pinned thread marker stays put when hovering the row by @flamboh in pingdotgg/t3code#11122
* fix(web): keep a typed question answer when you open a new thread by @Gigioxx in pingdotgg/t3code#13865
* fix(web): renumber following items when continuing a plain-Markdown numbered list by @saphid in pingdotgg/t3code#14332
* fix(web): clicking a logged request route no longer opens it in the editor by @lnieuwenhuis in pingdotgg/t3code#15838
* fix(desktop): reject offscreen annotation screenshot crops by @maria-rcks in pingdotgg/t3code#18441
* fix(web): NVDA browse mode reaches the new-thread project picker again by @akj in pingdotgg/t3code#17877
* fix(web): stop composer banner glass overlap by @t3-code[bot] in pingdotgg/t3code#8034
* fix(web): keep pasted decorators as text by @Gigioxx in pingdotgg/t3code#8415
* fix(shell): avoid interactive job control in environment probes by @LouisDeconinck in pingdotgg/t3code#11275
* fix(web): a closed proactive diff stays closed when you return to a thread by @ilyaliao in pingdotgg/t3code#14705
* fix(web): render powerline separators at cell edges by @SadriG91 in pingdotgg/t3code#5607
* fix(server): provider failures say why a turn could not start by @saphid in pingdotgg/t3code#16303

## New Contributors
* @Atharvsinh-codez made their first contribution in pingdotgg/t3code#20175
* @lbgos made their first contribution in pingdotgg/t3code#16926
* @yaacovcorcos made their first contribution in pingdotgg/t3code#16581
* @pnupu made their first contribution in pingdotgg/t3code#11109
* @LouisDeconinck made their first contribution in pingdotgg/t3code#11275
* @SadriG91 made their first contribution in pingdotgg/t3code#5607

**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261019.3360...v0.1.1-nightly.20261019.3373

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261019.3373
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 19, 2026
## What's Changed
* fix(mobile): settings no longer tell you to update when you're up to date by @shivamhwp in pingdotgg/t3code#21688
* test(web): fix the workflow script test that times out on busy CI runners by @shivamhwp in pingdotgg/t3code#21699
* fix(mobile): a file shared into a new task shows in the composer before you send by @shivamhwp in pingdotgg/t3code#21659
* fix(desktop): a cold WSL distro gets 30 seconds to boot instead of 10 by @SunkenInTime in pingdotgg/t3code#21070
* fix(web): detect software keyboard before handling composer Enter by @Yash-Singh1 in pingdotgg/t3code#21763
* fix(mobile): the Git sheet uses the standard list rows by @juliusmarminge in pingdotgg/t3code#21785
* fix(server): changed files keep their real paths for renames and non-ASCII names by @Atharvsinh-codez in pingdotgg/t3code#20175
* fix(server): a message promoted into a stopping run stays queued by @lbgos in pingdotgg/t3code#16926
* perf(mobile): streaming re-renders less on the open thread screen by @juliusmarminge in pingdotgg/t3code#20963
* feat(usage): show even-pace marks on Limits bars by @flamboh in pingdotgg/t3code#14477
* fix(web): Usage hourly labels follow the Time format setting by @mInrOz in pingdotgg/t3code#15575
* fix(web): stop repeating the subagent name in the waiting banner by @saphid in pingdotgg/t3code#16022
* fix(web): Cmd+O no longer opens the editor more than once by @5knnbdwm in pingdotgg/t3code#18983
* fix(web): hoist favorited legacy models to the top of the model picker by @TonybynMp4 in pingdotgg/t3code#11933
* fix(server): a rollback blocked by Git's index lock says so instead of a generic error by @shivamhwp in pingdotgg/t3code#11340
* fix(mobile): expanded tool-call groups keep following new calls by @nekohasekai in pingdotgg/t3code#15747
* fix(web): going back in the command palette keeps the search that led there by @saphid in pingdotgg/t3code#15940
* fix(web): changing a project's model no longer keeps the old model's options by @yaacovcorcos in pingdotgg/t3code#16581
* fix(web): preserve snapshot thumbnail context and detail by @maria-rcks in pingdotgg/t3code#18440
* fix(web): keep expanded tool actions usable from the keyboard by @saphid in pingdotgg/t3code#18831
* fix(usage): Claude usage no longer lists a `<synthetic>` model by @tris203 in pingdotgg/t3code#14672
* fix(server): release webhook claims when acceptance fails by @saphid in pingdotgg/t3code#18820
* fix(desktop): make the annotation editor border and shadow actually render by @PollyGlot in pingdotgg/t3code#9406
* fix(server): Claude follow-ups no longer fail in Auto on models without Auto by @Gigioxx in pingdotgg/t3code#15687
* fix(web): reopening Connections picks up new network addresses by @lnieuwenhuis in pingdotgg/t3code#15840
* fix(client): MCP apps can no longer trap you in full screen; it opens only after a tap by @shivamhwp in pingdotgg/t3code#18548
* fix(web,mobile): disabled provider instances no longer badge their siblings by @tris203 in pingdotgg/t3code#14545
* fix(web): threads open at the newest message, not thousands of pixels above it by @t3dotgg in pingdotgg/t3code#19663
* fix(mobile): report rejected shared settings writes by @juliusmarminge in pingdotgg/t3code#9356
* fix(claude): show automatic compaction while it runs by @maria-rcks in pingdotgg/t3code#15631
* fix(web): keep the parent thread highlighted while viewing its subagent by @saphid in pingdotgg/t3code#15163
* fix(web): show pull request checkout error detail by @saphid in pingdotgg/t3code#15007
* fix(server): mark unvisited thread completions unread by @maria-rcks in pingdotgg/t3code#15607
* fix(web): started threads no longer offer a machine picker that does nothing by @tris203 in pingdotgg/t3code#19900
* fix(web): provider model names no longer get cut off by their slug by @ilyaliao in pingdotgg/t3code#16522
* fix(claude): mid-sentence skill chips keep the full request by @ScottN-PV in pingdotgg/t3code#15253
* fix(web): preserve unsaved keybinding edits when saving another binding by @pnupu in pingdotgg/t3code#11109
* fix(connections): retry unsupported saved direct connections by @none23 in pingdotgg/t3code#15107
* fix(web): show readable messages for structured thread errors by @juliusmarminge in pingdotgg/t3code#21483
* fix(web): custom shortcuts work when Local environment is off by @Mnigos in pingdotgg/t3code#15825
* fix(web): keep thread notification tags within the Windows toast limit by @satyalyadav in pingdotgg/t3code#12289
* fix(web): pinned thread marker stays put when hovering the row by @flamboh in pingdotgg/t3code#11122
* fix(web): keep a typed question answer when you open a new thread by @Gigioxx in pingdotgg/t3code#13865
* fix(web): renumber following items when continuing a plain-Markdown numbered list by @saphid in pingdotgg/t3code#14332
* fix(web): clicking a logged request route no longer opens it in the editor by @lnieuwenhuis in pingdotgg/t3code#15838
* fix(desktop): reject offscreen annotation screenshot crops by @maria-rcks in pingdotgg/t3code#18441
* fix(web): NVDA browse mode reaches the new-thread project picker again by @akj in pingdotgg/t3code#17877
* fix(web): stop composer banner glass overlap by @t3-code[bot] in pingdotgg/t3code#8034
* fix(web): keep pasted decorators as text by @Gigioxx in pingdotgg/t3code#8415
* fix(shell): avoid interactive job control in environment probes by @LouisDeconinck in pingdotgg/t3code#11275
* fix(web): a closed proactive diff stays closed when you return to a thread by @ilyaliao in pingdotgg/t3code#14705
* fix(web): render powerline separators at cell edges by @SadriG91 in pingdotgg/t3code#5607
* fix(server): provider failures say why a turn could not start by @saphid in pingdotgg/t3code#16303

## New Contributors
* @Atharvsinh-codez made their first contribution in pingdotgg/t3code#20175
* @lbgos made their first contribution in pingdotgg/t3code#16926
* @yaacovcorcos made their first contribution in pingdotgg/t3code#16581
* @pnupu made their first contribution in pingdotgg/t3code#11109
* @LouisDeconinck made their first contribution in pingdotgg/t3code#11275
* @SadriG91 made their first contribution in pingdotgg/t3code#5607

**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261019.3360...v0.1.1-nightly.20261019.3373

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261019.3373
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants