Repository navigation
fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME - #25560
Conversation
`vp run dev --home-dir=~/t3-dev` (shells leave `~` after `=` alone) or a `T3CODE_HOME=~/t3-dev` line in `.env` made the dev runner resolve the home against the current directory, so dev state landed in a literal `./~/t3-dev` folder inside the checkout. The server already expands `~` for T3CODE_HOME; the dev runner now does the same before resolving. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped dev-runner bug fix that expands home-relative You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Base path resolution and tests scripts/dev-runner.ts, scripts/dev-runner.test.ts |
resolveBaseDir expands ~ and home-relative paths. Tests cover bare ~, slash and backslash suffixes, whitespace-padded input, named-user tilde paths, ordinary relative paths, and absolute paths. |
Priority:
Estimated code review effort: 2 (Simple) | ~8 minutes
Change: Bug fix
Possibly related PRs
- pingdotgg/t3code#24100: Expands
~when the SSH server resolves its home directory.
Suggested reviewers: yash-singh1
Merge Risk: 
Minimal · up to f229a
-
The reviewed path expansion behavior and its boundary tests are reported as passing, with no unresolved merge-blocking issue identified.
Pre-merge checks: 
4
-
Full details: Description check
-
Explanation
The description includes the required Problem, Change, Scope and approval, and Verification sections. It explains the bug, implementation, approval rationale, focused tests, observed results, and the unperformed real-server check.
-
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.
|
Note Written by thanks @MarcoDotIO. your fix correctly matches the server's tilde expansion and preserves dev-home precedence. i kept your commit, merged current main, removed the explanatory comment, and extended the existing test for backslash separators, whitespace, named-user tilde paths, and ordinary relative/absolute paths. the production diff is six added lines. verification at
unverified: full dev-server startup and native windows execution. no ui changed, so no visual evidence applies. |
|
Note Written by Verified in a real dev environmentverified unchanged head
runtime transcript excerpt: Not verifiednative windows/macOS execution, electron, native ios/android clients, and remote relay/tunnel access were not exercised on this linux vm. bare |
**v0.1.6-nightly.20261029.3892** · 86 changes from 24 contributors ## Highlights Resize the file explorer to see long paths. ## Fixes - Commits no longer land on a switched branch (#24473) - Password-protected OpenCode servers accept configured credentials (#25230) - Provider errors and logs no longer expose certain credentials (#23313) - Signed attachment URLs no longer leak into traces (#24556) - Self-hosted GitLab merge request URLs are recognized (#23848) - Terminal links with wide characters open correctly (#24013) - Terminal history survives cancelled control sequences (#25193) - Review guides use the latest diff (#23225) - MCP forms appear when tool results report errors (#25225) - Clearing desktop browser data also clears cached responses (#22002) <details> <summary>Full changelog</summary> ## What's Changed * fix(web): reconnecting notice no longer shifts the new thread composer by @t3dotgg in pingdotgg/t3code#26958 * feat(marketing): homepage looks like the app by @t3dotgg in pingdotgg/t3code#26960 * fix(cli): restore Windows desktop launcher console input by @t3-code-bot[bot] in pingdotgg/t3code#24870 * feat(settings): add and list 1Password secret providers behind T3CODE_FEATURE_SECRETS by @yordis in pingdotgg/t3code#25709 * fix(mobile): use monospace in the Android terminal preview by @only21mil in pingdotgg/t3code#23401 * fix(web): edit from here uses a pencil icon by @voltcrash in pingdotgg/t3code#21878 * fix(desktop): clear Cache Storage when deleting browser profile data by @only21mil in pingdotgg/t3code#22002 * fix(web): respect reduced motion in thread loading controls by @saphid in pingdotgg/t3code#22100 * fix(provider-acp): redact API keys with underscores in ACP stderr logs by @only21mil in pingdotgg/t3code#24015 * fix(provider-core): redact compound credential keys in provider errors by @only21mil in pingdotgg/t3code#23313 * fix(web): show rounded diff counts as 1m instead of 1000k by @only21mil in pingdotgg/t3code#23723 * fix(desktop): a timed-out login-shell probe no longer skips the server's PATH repair by @tiliakoos in pingdotgg/t3code#21771 * fix(server): keep the previous preview browser version on a shared home by @only21mil in pingdotgg/t3code#23771 * fix(settings): servers check secret provider writes and keep unknown configs to themselves by @juliusmarminge in pingdotgg/t3code#27044 * fix(web): keep a closed split terminal's tab in view by @only21mil in pingdotgg/t3code#22106 * fix(web): the ~ breadcrumb opens the home folder by @Onkarj012 in pingdotgg/t3code#22412 * fix(gitlab): accept merge request URLs from self-hosted hosts by @only21mil in pingdotgg/t3code#23848 * fix(server): commits no longer land on a branch switched in mid-action by @only21mil in pingdotgg/t3code#24473 * fix(server): image attachments report their size when the T3 home is behind a symlink by @MarcoDotIO in pingdotgg/t3code#24245 * fix(ssh): skip directories in config includes by @maria-rcks in pingdotgg/t3code#25187 * fix(server): Authorized clients names Edge, Firefox and Opera on phones correctly by @MarcoDotIO in pingdotgg/t3code#23340 * fix(mobile): fork rows show a readable label instead of a thread ID by @JeremiahDJordan in pingdotgg/t3code#22064 * fix(markdown): formulas ending in a comma render by @NikitaMGrimm in pingdotgg/t3code#22883 * fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME by @MarcoDotIO in pingdotgg/t3code#25560 * fix(desktop): keep development protocol requests on the configured server by @only21mil in pingdotgg/t3code#22010 * fix(mobile): apply terminal toolbar modifiers to arrow keys by @only21mil in pingdotgg/t3code#22161 * fix(server): clean old logs and artifacts under a symlinked T3 home by @only21mil in pingdotgg/t3code#24097 * fix(server): preserve URL arguments in Android device actions by @maria-rcks in pingdotgg/t3code#25205 * fix(server): keep terminal history after cancelled sequences by @maria-rcks in pingdotgg/t3code#25193 * fix(auth): accept a typed pairing code regardless of letter case by @only21mil in pingdotgg/t3code#22089 * fix(web): find in thread opens from the thread title menu, so phones can reach it by @mkantautas in pingdotgg/t3code#22352 * fix(desktop): resolve executable commands when checking CLI shadowing by @only21mil in pingdotgg/t3code#22046 * fix(server): SQLite temp files no longer block the event loop by @only21mil in pingdotgg/t3code#24194 * fix(server): a branch named like a tag no longer reads as heads/<name> by @MarcoDotIO in pingdotgg/t3code#24258 * fix(server): cap generated worktree folder names by @maria-rcks in pingdotgg/t3code#25212 * perf(server): checkpoint capture scans the index listing by record instead of by byte by @josephv123 in pingdotgg/t3code#21329 * fix(server): PR discovery sweeps skip hidden subagent threads by @juliusmarminge in pingdotgg/t3code#26983 * fix(shared): stop parsing CLI flags after -- by @maria-rcks in pingdotgg/t3code#25204 * fix(server): remove abandoned v1 database copies on startup by @maria-rcks in pingdotgg/t3code#25301 * fix(web): Enter no longer skips an unanswered question by @mkantautas in pingdotgg/t3code#23626 * fix(web): keep wide characters in terminal links by @only21mil in pingdotgg/t3code#24013 * fix(server): session stops no longer trigger storage sweeps unless a deleted worktree waits by @juliusmarminge in pingdotgg/t3code#26038 * fix(provider-core): subagent threads no longer inherit the parent's pin by @only21mil in pingdotgg/t3code#21271 * fix(device): report failed Android permission changes by @only21mil in pingdotgg/t3code#22358 * fix(server): thread lists load beyond SQLite variable limit by @juliusmarminge in pingdotgg/t3code#25696 * fix(server): allow large git status metadata by @maria-rcks in pingdotgg/t3code#25207 * perf(mobile): flatten large file trees without copying descendants by @luke2x in pingdotgg/t3code#21276 * fix(web): show theme conflicts even when another import fails by @only21mil in pingdotgg/t3code#23223 * fix(usage): reject cyclic model mappings before saving by @only21mil in pingdotgg/t3code#23963 * fix(settings): offer Use existing CLI in managed Codex settings by @only21mil in pingdotgg/t3code#23160 * fix(git): honor project provider settings by @parmartejass in pingdotgg/t3code#23672 * fix(desktop): force-close stalled Linux MIME cache helpers by @maria-rcks in pingdotgg/t3code#25210 * fix(cli): auth pairing create rejects a --base-url without http(s):// by @MarcoDotIO in pingdotgg/t3code#23343 * fix(server): signed asset and upload URLs stay out of HTTP traces by @only21mil in pingdotgg/t3code#24556 * fix(server): clone errors no longer show a token from the URL's query by @only21mil in pingdotgg/t3code#24698 * fix(claude): pass every --add-dir launch directory to Claude by @only21mil in pingdotgg/t3code#23281 * fix(composer): retry expired catalogs after failed discovery by @only21mil in pingdotgg/t3code#23174 * fix(auth): preserve pairing codes after scope rejection by @maria-rcks in pingdotgg/t3code#25222 * fix(mobile): discard unchanged queued edits after starting by @maria-rcks in pingdotgg/t3code#25232 * fix(server): t3 project commands wait for a busy server's reply by @only21mil in pingdotgg/t3code#24090 * fix(web): wait for fresh diff pages in review guides by @only21mil in pingdotgg/t3code#23225 * fix(server): Antigravity stops retrying session startup while signed out by @only21mil in pingdotgg/t3code#24939 * fix(web): create tasks on a permitted connected environment by @only21mil in pingdotgg/t3code#23244 * fix(mobile): recognize this thread's main checkout by @only21mil in pingdotgg/t3code#23764 * fix(web): keep usage hubs that share a host by @only21mil in pingdotgg/t3code#23767 * fix(github): read text and mixed-case pull request templates by @maria-rcks in pingdotgg/t3code#25025 * fix(web): keep HTML prototype selection rings visible by @stevan-borus in pingdotgg/t3code#23745 * fix(mobile): list pull request repositories once per environment by @maria-rcks in pingdotgg/t3code#25219 * fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux by @pujitha24 in pingdotgg/t3code#23416 * fix(server): native Codex subagents no longer show the parent's reasoning effort by @koushikxd in pingdotgg/t3code#24467 * fix(server): mark unread works after an automatic compaction by @flamboh in pingdotgg/t3code#25286 * fix(server): show MCP App forms from failed tool results by @maria-rcks in pingdotgg/t3code#25225 * fix(server): restore Linux session display for editor launches by @maria-rcks in pingdotgg/t3code#25228 * fix(usage): keep host identity across container recreation by @maria-rcks in pingdotgg/t3code#25220 * fix(opencode): authenticate with the resolved server password by @maria-rcks in pingdotgg/t3code#25230 * feat(web): allow resizing the file explorer by @maria-rcks in pingdotgg/t3code#25737 * fix(server): update shared Codex installs from their owning home by @maria-rcks in pingdotgg/t3code#25235 * fix(cli): keep published runtimes in place during installation by @only21mil in pingdotgg/t3code#24092 * fix(web): right panel launcher letters work on non-Latin keyboard layouts by @MarMarLabs in pingdotgg/t3code#21508 * fix(server): report a deleted or replaced ownership lock by @ScottN-PV in pingdotgg/t3code#21886 * fix(server): mark unread no longer brings back a dismissed wake by @fixfon in pingdotgg/t3code#24080 * fix(mobile): stop refreshes in hidden PR Guide panes by @saphid in pingdotgg/t3code#25486 * fix(desktop): installing the t3 command no longer reports its own launcher as another t3 by @Gourav224 in pingdotgg/t3code#22375 * test(mobile): load the branch occupancy test without native sources by @maria-rcks in pingdotgg/t3code#27063 * fix(settings): project edits keep overrides the client does not know by @only21mil in pingdotgg/t3code#24472 ## New Contributors * @parmartejass made their first contribution in pingdotgg/t3code#23672 **Full Changelog**: pingdotgg/t3code@v0.1.5-nightly.20261029.3877...v0.1.6-nightly.20261029.3892 </details> Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.6-nightly.20261029.3892
…gdotgg#25560) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> (cherry picked from commit 2049052)
* feat(antigravity): Claude and GPT models, thinking levels, and diff edits (pingdotgg#26876) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(web): choose what the thread details card shows (pingdotgg#26904) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(updates): switch your whole fleet between Stable and Nightly in one step (pingdotgg#26288) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(antigravity): file reads no longer show unrelated errors (pingdotgg#26910) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(release): release notes and the update popover open with a short note (pingdotgg#26893) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(cli): t3 starts on a fresh Ubuntu server without libatomic (pingdotgg#26912) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): update everything no longer waits on npm for service hosts (pingdotgg#26917) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * test(web): pin the npm wait floor for update everything (pingdotgg#26921) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(antigravity): served reads stop spinning and duplicate model names are labeled (pingdotgg#26928) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): queue Copilot follow-ups without killing background agents (pingdotgg#26715) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): Antigravity effort no longer shows a speedometer in the composer (pingdotgg#26929) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(release): Linux CLI archives build on runners without package docs (pingdotgg#26932) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): reconnecting notice no longer shifts the new thread composer (pingdotgg#26958) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(marketing): homepage looks like the app (pingdotgg#26960) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * chore(release): prepare v0.1.5 * fix(cli): restore Windows desktop launcher console input (pingdotgg#24870) Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> * feat(settings): add and list 1Password secret providers behind T3CODE_FEATURE_SECRETS (pingdotgg#25709) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(mobile): use monospace in the Android terminal preview (pingdotgg#23401) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): edit from here uses a pencil icon (pingdotgg#21878) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): clear Cache Storage when deleting browser profile data (pingdotgg#22002) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): respect reduced motion in thread loading controls (pingdotgg#22100) Co-authored-by: SAPHID <saphid@users.noreply.github.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(provider-acp): redact API keys with underscores in ACP stderr logs (pingdotgg#24015) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(provider-core): redact compound credential keys in provider errors (pingdotgg#23313) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): show rounded diff counts as 1m instead of 1000k (pingdotgg#23723) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): a timed-out login-shell probe no longer skips the server's PATH repair (pingdotgg#21771) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): keep the previous preview browser version on a shared home (pingdotgg#23771) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(settings): servers check secret provider writes and keep unknown configs to themselves (pingdotgg#27044) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): keep a closed split terminal's tab in view (pingdotgg#22106) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): the ~ breadcrumb opens the home folder (pingdotgg#22412) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(gitlab): accept merge request URLs from self-hosted hosts (pingdotgg#23848) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): commits no longer land on a branch switched in mid-action (pingdotgg#24473) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): image attachments report their size when the T3 home is behind a symlink (pingdotgg#24245) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(ssh): skip directories in config includes (pingdotgg#25187) Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> * fix(server): Authorized clients names Edge, Firefox and Opera on phones correctly (pingdotgg#23340) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(mobile): fork rows show a readable label instead of a thread ID (pingdotgg#22064) Co-authored-by: Jeremiah Jordan <zanson@zanson.org> Co-authored-by: GPT-6.1-Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(markdown): formulas ending in a comma render (pingdotgg#22883) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME (pingdotgg#25560) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): keep development protocol requests on the configured server (pingdotgg#22010) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(mobile): apply terminal toolbar modifiers to arrow keys (pingdotgg#22161) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): clean old logs and artifacts under a symlinked T3 home (pingdotgg#24097) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): preserve URL arguments in Android device actions (pingdotgg#25205) Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> * fix(server): keep terminal history after cancelled sequences (pingdotgg#25193) Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com> * fix(auth): accept a typed pairing code regardless of letter case (pingdotgg#22089) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): find in thread opens from the thread title menu, so phones can reach it (pingdotgg#22352) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): resolve executable commands when checking CLI shadowing (pingdotgg#22046) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): SQLite temp files no longer block the event loop (pingdotgg#24194) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): a branch named like a tag no longer reads as heads/<name> (pingdotgg#24258) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): cap generated worktree folder names (pingdotgg#25212) Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com> * perf(server): checkpoint capture scans the index listing by record instead of by byte (pingdotgg#21329) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): PR discovery sweeps skip hidden subagent threads (pingdotgg#26983) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(shared): stop parsing CLI flags after -- (pingdotgg#25204) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> * fix(server): remove abandoned v1 database copies on startup (pingdotgg#25301) Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com> * fix(web): Enter no longer skips an unanswered question (pingdotgg#23626) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): keep wide characters in terminal links (pingdotgg#24013) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): session stops no longer trigger storage sweeps unless a deleted worktree waits (pingdotgg#26038) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(provider-core): subagent threads no longer inherit the parent's pin (pingdotgg#21271) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(device): report failed Android permission changes (pingdotgg#22358) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): thread lists load beyond SQLite variable limit (pingdotgg#25696) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): allow large git status metadata (pingdotgg#25207) Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> * perf(mobile): flatten large file trees without copying descendants (pingdotgg#21276) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): show theme conflicts even when another import fails (pingdotgg#23223) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(usage): reject cyclic model mappings before saving (pingdotgg#23963) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(settings): offer Use existing CLI in managed Codex settings (pingdotgg#23160) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(git): honor project provider settings (pingdotgg#23672) Co-authored-by: Tejas Parmar <parmartejas@vanojay.in> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): force-close stalled Linux MIME cache helpers (pingdotgg#25210) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> * fix(cli): auth pairing create rejects a --base-url without http(s):// (pingdotgg#23343) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): signed asset and upload URLs stay out of HTTP traces (pingdotgg#24556) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): clone errors no longer show a token from the URL's query (pingdotgg#24698) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(claude): pass every --add-dir launch directory to Claude (pingdotgg#23281) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(composer): retry expired catalogs after failed discovery (pingdotgg#23174) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(auth): preserve pairing codes after scope rejection (pingdotgg#25222) Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> * fix(mobile): discard unchanged queued edits after starting (pingdotgg#25232) Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com> * fix(server): t3 project commands wait for a busy server's reply (pingdotgg#24090) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): wait for fresh diff pages in review guides (pingdotgg#23225) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): Antigravity stops retrying session startup while signed out (pingdotgg#24939) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): create tasks on a permitted connected environment (pingdotgg#23244) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(mobile): recognize this thread's main checkout (pingdotgg#23764) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): keep usage hubs that share a host (pingdotgg#23767) Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(github): read text and mixed-case pull request templates (pingdotgg#25025) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> * fix(web): keep HTML prototype selection rings visible (pingdotgg#23745) Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(mobile): list pull request repositories once per environment (pingdotgg#25219) Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com> * fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux (pingdotgg#23416) Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com> Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): native Codex subagents no longer show the parent's reasoning effort (pingdotgg#24467) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): mark unread works after an automatic compaction (pingdotgg#25286) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): show MCP App forms from failed tool results (pingdotgg#25225) Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> * fix(server): restore Linux session display for editor launches (pingdotgg#25228) Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com> * fix(usage): keep host identity across container recreation (pingdotgg#25220) Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com> * fix(opencode): authenticate with the resolved server password (pingdotgg#25230) Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * feat(web): allow resizing the file explorer (pingdotgg#25737) Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com> * fix(server): update shared Codex installs from their owning home (pingdotgg#25235) Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> * fix(cli): keep published runtimes in place during installation (pingdotgg#24092) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(web): right panel launcher letters work on non-Latin keyboard layouts (pingdotgg#21508) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): report a deleted or replaced ownership lock (pingdotgg#21886) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(server): mark unread no longer brings back a dismissed wake (pingdotgg#24080) Co-authored-by: maria-rcks <maria@kuuro.net> * fix(mobile): stop refreshes in hidden PR Guide panes (pingdotgg#25486) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(desktop): installing the t3 command no longer reports its own launcher as another t3 (pingdotgg#22375) Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * test(mobile): load the branch occupancy test without native sources (pingdotgg#27063) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(settings): project edits keep overrides the client does not know (pingdotgg#24472) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(client): retry the permissions check after a reconnect (pingdotgg#27008) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(mobile): tab bar spans the screen on iOS before 26 (pingdotgg#27089) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): thread recovery reads are 10x faster (pingdotgg#27099) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): source control discovery no longer stalls up to 10s on Bitbucket (pingdotgg#27102) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf: huge checkpoints ship up to 75x smaller to clients (pingdotgg#27110) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): sidebar shell loads 3x faster and startup thread counts 80x faster (pingdotgg#27106) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): preparing a run is 15x faster and uses 200x less memory (pingdotgg#27105) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(server): traces name what grew the heap, for ~0.3µs per span (pingdotgg#27104) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(gitcafe): PR sync makes 2x fewer GitCafe requests for unchanged PRs (pingdotgg#27100) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(shared): SQLite reads stop queueing behind each other, up to 5x faster under load (pingdotgg#27097) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): git status runs in parallel and repo detection spawns 3x fewer git processes (pingdotgg#27103) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(client): dead connection routes are probed 30x less often (pingdotgg#27101) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(server): idle servers run 100x fewer background queries and 4.8M fewer spans a day (pingdotgg#27098) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(devices): support Android EAS Simulator sessions (pingdotgg#26797) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web,mobile): image-only messages show the image, not the placeholder prompt (pingdotgg#26769) * ci(mobile): production deploys use a Release Manager Expo token (pingdotgg#27285) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * ci(mobile): maintainers can deploy EAS previews for reviewed fork commits (pingdotgg#27292) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): agents yield CPU, tasks, and reclaim to the server under pressure (pingdotgg#27176) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(server): `t3 service protect` keeps the server alive when agents fill memory (pingdotgg#27239) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): held queues release agent and scheduled messages once the thread completes a run (pingdotgg#27221) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): restart continuations retry failed starts and respect a parent's stop (pingdotgg#27222) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): Stop during a restart no longer leaves the thread stuck (pingdotgg#27141) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(scripts): bound check:changed concurrency and step time (pingdotgg#27227) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(shared): durations under 10s drop a trailing .0 (pingdotgg#27316) * feat(web): switch the composer between rich text and Markdown source from a button or mod+/ (pingdotgg#26777) * fix(server): t3_thread_organize rejects unknown arguments instead of archiving the caller (pingdotgg#26718) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): composer Markdown source button shows the pilcrow again (pingdotgg#27375) * revert(web): remove the composer rich text toggle button and mod+/ shortcut (pingdotgg#27390) * fix(server): HTML preview browsers quit when done instead of waiting to be killed (pingdotgg#27224) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(terminal): retain and pace slow fallback process queries (pingdotgg#24640) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): show readable provider runtime failure banners (pingdotgg#24614) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com> * fix(gitlab): share merge request reads across detail and checks (pingdotgg#24392) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(usage): count Claude advisor calls under the advisor model (pingdotgg#24139) * fix(web): name the sidebar logo link T3 Code home (pingdotgg#24209) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(server): fail Claude turns waiting for unsupported mod input (pingdotgg#24320) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): Stop always completes, and an agent that ignores it can be force stopped (pingdotgg#27252) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix: guest links can load earlier turns (pingdotgg#27354) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(ci): repair main after merge burst Rename leftover fakeProvider to fakePullRequestProvider, replace the removed encodeScanCache in the advisor usage test, and drop an issue number from a ClaudeAdapterV2 comment that lint rejects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): let slow worktree checkouts finish (pingdotgg#23802) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(settings): point provider environment variables at a secret provider (pingdotgg#27115) Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * feat(desktop): back/forward buttons and trackpad swipe navigation (pingdotgg#27430) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * feat(web): review local commits in the Diff pane (pingdotgg#19941) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(relay): show the account's real tunnel cap in T3 Connect settings (pingdotgg#27442) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): streaming replies no longer re-render every visible timeline row (pingdotgg#27420) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(web): streaming replies re-render only their last Markdown block (pingdotgg#27417) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(web): the git actions panel no longer re-renders on every streamed update (pingdotgg#27418) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * perf(web): streamed assistant text re-renders only its own row (pingdotgg#27419) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix(server): `t3 service protect` can ask for your sudo password (pingdotgg#27465) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> --------- Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Theo Browne <me@theo.li> Co-authored-by: t3-code-bot[bot] <269035359+t3-code-bot[bot]@users.noreply.github.com> Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Victor Vogel <satsdev@only21mil.xyz> Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com> Co-authored-by: Alex Southwell <saphid@gmail.com> Co-authored-by: SAPHID <saphid@users.noreply.github.com> Co-authored-by: tiliakoos <73005126+tiliakoos@users.noreply.github.com> Co-authored-by: Onkar Pradip Jadhav <118719336+Onkarj012@users.noreply.github.com> Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com> Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com> Co-authored-by: Jeremiah Jordan <jeremiah@apache.org> Co-authored-by: Jeremiah Jordan <zanson@zanson.org> Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de> Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com> Co-authored-by: Mantas Kantautas <mantas.kantautas@gmail.com> Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com> Co-authored-by: Joseph Vidal <135430578+josephv123@users.noreply.github.com> Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> Co-authored-by: luke <97411838+luke2x@users.noreply.github.com> Co-authored-by: parmartejas <110296251+parmartejass@users.noreply.github.com> Co-authored-by: Tejas Parmar <parmartejas@vanojay.in> Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com> Co-authored-by: Stevan Borus <steva.borus@gmail.com> Co-authored-by: Pujitha Paladugu <pujitha.rathna@gmail.com> Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com> Co-authored-by: Koushik_xd <122906171+koushikxd@users.noreply.github.com> Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com> Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com> Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com> Co-authored-by: Marcel Jiron · MarMarLabs <marmar9615@icloud.com> Co-authored-by: Scott Norteman <snorteman@gmail.com> Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Gourav Kumar Dhiman <gkrdhiman@gmail.com> Co-authored-by: Nathan Schroeder <49214985+SchroederNathan@users.noreply.github.com> Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>

Problem
vp run dev --home-dir=~/t3-devputs dev state in a folder literally named~inside the checkout (<repo>/~/t3-dev/userdata/...), not in$HOME/t3-dev. Shells do not expand~after=in an argument. AT3CODE_HOME=~/t3-devline in.envhas the same problem, because the dev runner loads.envitself andparseEnvleaves~as is.The
--home-dirhelp text says it is "equivalent to T3CODE_HOME", and the server already expands~for T3CODE_HOME (expandHomePathinapps/server/src/os-jank.ts). The dev runner resolves the value withpath.resolvefirst, so the server only ever sees<cwd>/~/t3-dev.Change
Before it resolves the value, the dev runner's
resolveBaseDirnow expands~,~/…and~\…againstHostProcess.HomeDirectory, the same rules the server uses. Every other value resolves as before.Scope and approval
This is a 7-line fix for an obvious bug, so it has no prior issue. The flag already promises to behave like T3CODE_HOME, and the server and the npm launcher both expand
~for that variable. The change touches only the dev runner's home resolution, and the worktree-vs-ambient precedence stays the same.Verification
Added
expands a home-relative T3 home the way the server doestoscripts/dev-runner.test.ts. It callscreateDevRunnerEnvwitht3Homeset to~/t3-devand to~, withHomeDirectoryset to/home/dev.Without the source fix (
git show upstream/main:scripts/dev-runner.ts > scripts/dev-runner.ts):With the fix:
node_modules/.bin/vp lint --report-unused-disable-directives scriptsprinted no findings.node_modules/.bin/vp fmt --check scriptsreported that every file is formatted.cd scripts && ../node_modules/.bin/tsc --noEmitexited 0.Not checked: I did not start a real dev server (to avoid touching live state). The test covers the env the runner passes to
vp.Claude Opus 5.5 (Claude Code desktop app)
🤖 Generated with Claude Code