Repository navigation
perf(web): switching project keeps Diagnostics and Providers mounted - #17122
Merged
Yash-Singh1 merged 2 commits intoOct 10, 2026
Merged
Conversation
flamboh
marked this pull request as ready for review
October 8, 2026 08:43
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a small, localized settings UI optimization: Diagnostics and Providers retain their state across project switches while still resetting for environment changes, with regression coverage for the relevant transitions. It introduces no schema, deployment, security, billing, default, or static-analysis changes. You can add or adjust custom eligibility rules. Learn more. |
flamboh
force-pushed
the
t3/perf-settings-scope-remount
branch
from
October 8, 2026 16:37
a86c58b to
1a616c0
Compare
macroscopeapp
Bot
dismissed
their stale review
October 8, 2026 16:38
Dismissing prior approval to re-evaluate 1a616c0
flamboh
force-pushed
the
t3/perf-settings-scope-remount
branch
from
October 9, 2026 06:52
1a616c0 to
b14dd4c
Compare
flamboh
force-pushed
the
t3/perf-settings-scope-remount
branch
2 times, most recently
from
October 9, 2026 06:59
6e81c34 to
9e40195
Compare
This was referenced Oct 10, 2026
Key their settings content on the resolved environment instead of the whole scope search, and close the scope menus on selection since those pages no longer remount.
flamboh
force-pushed
the
t3/perf-settings-scope-remount
branch
from
October 10, 2026 00:22
9e40195 to
2e74ff6
Compare
github-actions Bot
added a commit
to omarcresp/t3code-flake
that referenced
this pull request
Oct 10, 2026
## What's Changed * fix(web): align compact button touch targets by @Yash-Singh1 in pingdotgg/t3code#17748 * fix(server): t3_thread_launch refuses a new worktree whose base ref has no commit by @tris203 in pingdotgg/t3code#17791 * fix(web): omit underlines on markdown image links by @Saikrishna1876 in pingdotgg/t3code#17728 * fix(server): restore auto resume for wrapped Claude gateway rate limits by @tzachbon in pingdotgg/t3code#17778 * fix(opencode): name OpenCode 2 sessions after their thread by @nkoynov in pingdotgg/t3code#17414 * fix(web): find update settings from the command palette by @sergical in pingdotgg/t3code#17396 * fix(provider-opencode): tell OpenCode Zen and Go models apart by @mr-karan in pingdotgg/t3code#17424 * fix(server): a pull that fast-forwards no longer fails on large Git output by @ScottN-PV in pingdotgg/t3code#17376 * fix(web): cancel question auto-advance after navigation by @maxwellyoung in pingdotgg/t3code#17364 * fix(server): a bare repository name resolves to the signed-in account again by @ScottN-PV in pingdotgg/t3code#17379 * fix(web): a maximized right panel stays maximized when you return to its thread by @jamesvillarrubia in pingdotgg/t3code#17327 * fix(mobile): allow starting a task with only an image by @Claudesaul in pingdotgg/t3code#17409 * fix(server): PR watch no longer reports passed while a second run of a check is still going by @ScottN-PV in pingdotgg/t3code#17344 * fix(server): say why a thread can't be settled by @DylanTX in pingdotgg/t3code#17258 * fix(server): prevent busy terminals from starving history persistence by @StiensWout in pingdotgg/t3code#17181 * feat(server): use macOS .icns app icons as project icons by @psv2522 in pingdotgg/t3code#17149 * fix(mobile): usage reset icon lines up with its row by @Aforno in pingdotgg/t3code#17175 * fix(web): paths pasted after @ keep their underscores by @derektrimm in pingdotgg/t3code#16619 * fix(server): settle every OpenCode subagent call one report answers by @nkoynov in pingdotgg/t3code#17134 * perf(web): switching project keeps Diagnostics and Providers mounted by @flamboh in pingdotgg/t3code#17122 * perf(web): Open Source Licenses downloads its manifest once per session by @flamboh in pingdotgg/t3code#17119 * fix(server): restore OpenCode adapter test typecheck by @Yash-Singh1 in pingdotgg/t3code#17810 * fix(server): Claude subagents show the reasoning effort they run at by @RakshithBhat03 in pingdotgg/t3code#17496 ## New Contributors * @tzachbon made their first contribution in pingdotgg/t3code#17778 * @sergical made their first contribution in pingdotgg/t3code#17396 * @mr-karan made their first contribution in pingdotgg/t3code#17424 * @Claudesaul made their first contribution in pingdotgg/t3code#17409 * @DylanTX made their first contribution in pingdotgg/t3code#17258 * @psv2522 made their first contribution in pingdotgg/t3code#17149 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2922...v0.0.46-nightly.20261010.2935 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2935
github-actions Bot
added a commit
to davidvanderklay/t3code-flake
that referenced
this pull request
Oct 10, 2026
## What's Changed * fix(web): align compact button touch targets by @Yash-Singh1 in pingdotgg/t3code#17748 * fix(server): t3_thread_launch refuses a new worktree whose base ref has no commit by @tris203 in pingdotgg/t3code#17791 * fix(web): omit underlines on markdown image links by @Saikrishna1876 in pingdotgg/t3code#17728 * fix(server): restore auto resume for wrapped Claude gateway rate limits by @tzachbon in pingdotgg/t3code#17778 * fix(opencode): name OpenCode 2 sessions after their thread by @nkoynov in pingdotgg/t3code#17414 * fix(web): find update settings from the command palette by @sergical in pingdotgg/t3code#17396 * fix(provider-opencode): tell OpenCode Zen and Go models apart by @mr-karan in pingdotgg/t3code#17424 * fix(server): a pull that fast-forwards no longer fails on large Git output by @ScottN-PV in pingdotgg/t3code#17376 * fix(web): cancel question auto-advance after navigation by @maxwellyoung in pingdotgg/t3code#17364 * fix(server): a bare repository name resolves to the signed-in account again by @ScottN-PV in pingdotgg/t3code#17379 * fix(web): a maximized right panel stays maximized when you return to its thread by @jamesvillarrubia in pingdotgg/t3code#17327 * fix(mobile): allow starting a task with only an image by @Claudesaul in pingdotgg/t3code#17409 * fix(server): PR watch no longer reports passed while a second run of a check is still going by @ScottN-PV in pingdotgg/t3code#17344 * fix(server): say why a thread can't be settled by @DylanTX in pingdotgg/t3code#17258 * fix(server): prevent busy terminals from starving history persistence by @StiensWout in pingdotgg/t3code#17181 * feat(server): use macOS .icns app icons as project icons by @psv2522 in pingdotgg/t3code#17149 * fix(mobile): usage reset icon lines up with its row by @Aforno in pingdotgg/t3code#17175 * fix(web): paths pasted after @ keep their underscores by @derektrimm in pingdotgg/t3code#16619 * fix(server): settle every OpenCode subagent call one report answers by @nkoynov in pingdotgg/t3code#17134 * perf(web): switching project keeps Diagnostics and Providers mounted by @flamboh in pingdotgg/t3code#17122 * perf(web): Open Source Licenses downloads its manifest once per session by @flamboh in pingdotgg/t3code#17119 * fix(server): restore OpenCode adapter test typecheck by @Yash-Singh1 in pingdotgg/t3code#17810 * fix(server): Claude subagents show the reasoning effort they run at by @RakshithBhat03 in pingdotgg/t3code#17496 ## New Contributors * @tzachbon made their first contribution in pingdotgg/t3code#17778 * @sergical made their first contribution in pingdotgg/t3code#17396 * @mr-karan made their first contribution in pingdotgg/t3code#17424 * @Claudesaul made their first contribution in pingdotgg/t3code#17409 * @DylanTX made their first contribution in pingdotgg/t3code#17258 * @psv2522 made their first contribution in pingdotgg/t3code#17149 **Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2922...v0.0.46-nightly.20261010.2935 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2935
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
🤖 Claude Opus 5.5 on behalf of Oliver
Problem
The Settings layout keys its content on the whole scope search, so changing the project scope remounts the page. Diagnostics and Providers belong to an environment and don't change with project. Every project switch rebuilt them from scratch.
Fix
On Diagnostics and Providers, the layout now keys its content on the resolved environment (
useSettingsScope().environment?.environmentId) plus the restore signal. Other pages keep the full scope key. Switching project keeps those two pages mounted. They still reset when the environment changes, including an implicit change with nomachinein the URL, and when the environment disconnects.Since those pages no longer remount on a project switch, the scope menus now close when you pick an item (
closeOnClick). Other pages already closed them by remounting.This PR is independent of #17120 and based on
main.Each median comes from 6 interleaved before/after runs in headless Chromium, on an isolated dev server and on the production build. Production runs use 4× CPU throttling. These were measured while this branch was still stacked on #17120, so both sides include #17120's shared Diagnostics tooltip, and the after side used an earlier environment key. Either key leaves the page mounted on a project switch, so the comparison holds, but I have not re-measured this rebuilt branch.
Before and after
Diagnostics, switching project scope three times. Before rebuilds the page on every switch; after keeps it mounted. In this take the three switches took 540 / 483 / 397 → 294 / 166 / 205 ms.
https://gh-file-drop-api-prod-galwoqjslzlnws6s.oliver-boorstein.workers.dev/f/9f4be9bdbd01efd1/pr17122-before-after.mp4
Production build, headless Chromium, CPU throttled 4× during the interaction. Before is
main. After is the earlier stacked version of this branch (a86c58b9ca), which behaves the same on a project switch. These are single takes, so treat the timings as illustrative; the table above has the medians.Scope and approval
I found no existing issue or discussion about Settings performance, so no maintainer has approved this yet. It is a focused performance improvement with no intended behavior change, which CONTRIBUTING lists among the changes most likely to be accepted. It is part of a Settings performance series: #17119, #17120, #17121, #17122 and #17123.
Validation
settingsScopeRetention.test.tsxchecks that Diagnostics and Providers keep their state across a project switch. It also checks that they reset on an environment switch, an implicit environment change and a disconnect, and that Keybindings still resets on a project switch. Againstmain's layout, 5 of its 8 cases fail. Against the earliermachinekey, the implicit-change and disconnect cases fail.Implemented by GPT-6.1 Sol (Codex harness, delegated through T3 Code). Split, verified, opened and given regression tests by Claude Opus 5.5 (Claude Code). Rebuilt on
mainafter review by Claude Opus 5.5 via Claude Code in T3 Code.