Repository navigation
fix(web): keep the parent thread highlighted while viewing its subagent - #15163
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a focused sidebar bug fix that maps an open subagent to its existing ancestor row while preserving exact-route behavior for drafts and pull-request actions. The production changes are localized, edge cases are covered by tests, and there are no schema, security, deployment, default, or static-analysis changes. You can add or adjust custom eligibility rules. Learn more. |
Dismissing prior approval to re-evaluate 51943d4
51943d4 to
64dff25
Compare
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
64dff25 to
6bdb791
Compare
|
Review requested
Logged so this PR shows when a maintainer was asked to review it. |
…ighlighted while viewing its subagent Preserve the scoped contribution against upstream 70d60e0. Focused checks and read-only integration review recorded in the PR. GPT-6.1 Sol (high), Codex harness through T3 Code.
Dismissing prior approval to re-evaluate 591e8af
|
Taking over this one. I'll trim the tests to the minimum, rebuild the implementation to current conventions, run adversarial reviews, and push the result here. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Subagent threads have no sidebar row, so opening one left nothing highlighted. The sidebar now resolves the open thread to its nearest non-subagent ancestor and uses that row for the highlight, collapsed shelf visibility, next/previous navigation, and the search-result highlight. Draft hiding and PR click activation still key off the exact route thread. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Dismissing prior approval to re-evaluate 5fe80b4
## 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
## 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
Resolve Sidebar.tsx: pingdotgg#15163 renamed routeThreadKey to routeRowThreadKey in useSidebarThreads, so the pinned shelf's route exception now uses the new name, as the other shelves do.
Opening a subagent cleared every sidebar highlight because subagents have no row. The sidebar now represents an open subagent with its nearest loaded ancestor that has a row, within the same environment. Forks stop the ancestor walk. This row also remains visible in collapsed shelves and anchors search highlighting and next/previous navigation.
Draft indicators, parent PR actions, settle and snooze still use the exact route thread. Missing parents and cycles leave the row unmatched.
Taken over from @saphid's #15163, preserving the contributor's commits and adding maintainer commits. Kept one lineage regression test (one before → one after in Sidebar.logic.test.ts); removed two redundant assertions and simplified the traversal.
Verification at 5fe80b4:
Before — main leaves the parent unhighlighted:
After — parent stays highlighted while the subagent is open:
Resumed and published with GPT-6.1-Sol in the Codex harness through T3 Code. Independent reviews: Claude Opus 5.5 and Codex GPT-6-Sol.