Repository navigation
fix(web): a maximized right panel stays maximized when you return to its thread - #17327
Conversation
…to its thread ChatView kept the maximize flag in local state holding one thread key, so maximizing another thread's panel, leaving the thread routes, or reloading dropped it. The flag now lives in the per-thread right panel store. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughRight-panel maximization is now stored in the right-panel store per thread. ChatView reads and updates the active thread’s maximization state. Closing the panel clears that state. ChangesPer-thread right-panel maximization
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Low Suggested reviewers: Merge Risk: ⚪ Minimal · up to Maximization is retained per thread, and the reviewed paths show no concrete remaining regression. The change is ready to merge subject to normal checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change persists a layout preference without adding permissions or changing which resources a panel can access. Existing saved state remains compatible. Remaining uncertainty concerns cleanup and interrupted layout updates, rather than a demonstrated security exposure. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
## 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
## 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
Problem
When you maximize the right panel to use a thread as a full-window preview, the chat column comes back after you visit Settings or open another thread. Fixes #17326.
ChatViewkept the maximize flag in component state holding one thread key, so aChatViewremount, or maximizing a different thread's panel, dropped it.Change
The flag moves into
rightPanelStoreas an optionalmaximizedfield on each thread's panel state, beside the open, tab, and active-tab state the store already saves per thread.ChatViewreads it from the store.setMaximizedgoes through the store's automatic-update path, so maximizing does not count as a manual panel choice and does not block proactive diff or PR panels. The old component state did not either.maximizedfield and loads unchanged, so the storage version stays at 14. The migration keeps the field for any future version bump.Scope and approval
Small, focused fix for an obvious bug: the panel drops a layout the user chose while the user does nothing to the panel. Bug report: #17326.
Discussion #16893 asks for the flag to survive an explicit close. This PR leaves close behavior alone.
#16434 and #14881 also edit
toggleRightPanelMaximized. Whichever lands second needs a small rebase.Verification
vp test run apps/web/src/rightPanelStore.test.ts: 82 passed. Two new tests check that each thread keeps its own flag without bumping the manual-choice revision, and that migration keeps a savedmaximized: true. Both failed before the change (setMaximized is not a function; migrated flagundefined).apps/webtypecheck passes. Lint reports no warnings on the changed lines.Before (
main):t3code-maximize-before.mp4
After (this branch):
t3code-maximize-after.mp4
Not checked: mobile, which has no maximize control; the hosted web app, which runs the same web code.
Claude Opus 5.5 in Claude Code, run from T3 Code.
🤖 Generated with Claude Code