fix(ui): scope sidebar session active state to chat#100918
fix(ui): scope sidebar session active state to chat#100918vyctorbrzezowski wants to merge 1 commit into
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 7, 2026, 5:13 AM ET / 09:13 UTC. Summary PR surface: Source -13, Tests +74. Total +61 across 5 files. Reproducibility: yes. at source level. Current main applies sidebar active styling from Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review findings
Review detailsBest possible solution: Keep the Chat-route sidebar highlight gate, preserve masking for resolver fallback channel/account identifiers in Overview, and require redacted real Control UI proof before merge. Do we have a high-confidence way to reproduce the issue? Yes, at source level. Current main applies sidebar active styling from Is this the best way to solve the issue? No, not as-is. The sidebar active-row gate is the narrow local fix, but the Overview display change should distinguish user-authored numeric labels from fallback channel/account identifiers instead of removing the mask globally. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a2a68d154b1b. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source -13, Tests +74. Total +61 across 5 files. View PR surface stats
Security concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (4 earlier review cycles)
|
|
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
eb14866 to
26ac731
Compare
|
Closing this draft because the sidebar active-state fix was folded into #101017. |
What Problem This Solves
The proposed Control UI sidebar behavior should not make a recent session row look selected while the operator is on Overview, Settings, or another non-chat route. A stored active session can still be useful for returning to Chat, but selected row styling outside Chat makes the non-chat page look like it is scoped to that session.
Why This Change Was Made
This change separates the stored/current session from the visual active state in the sidebar.
AppSidebarstill preserves the current session key for Chat navigation and session actions, but it only appliessidebar-recent-session--activewhen the active route is Chat.The Overview recent-session card also now renders display names directly after
resolveSessionDisplayName. That keeps the existing provider-key display-name sanitization, while removing the extra digit blur from ordinary titles such as build numbers or dates.Related existing PR: #97257 disables the session selection control on non-chat pages. This PR is narrower and only scopes the sidebar row active styling.
User Impact
On non-chat routes, recent sessions remain visible and clickable, but none of them appear selected. Returning to Chat still restores/highlights the stored session, including direct
/chatand/chat?session=...navigation.Overview recent sessions show non-sensitive numeric suffixes normally instead of blurring them.
Evidence
git diff --checknode scripts/run-vitest.mjs ui/src/pages/overview/view.render.test.tsnode scripts/run-vitest.mjs ui/src/e2e/session-management.e2e.test.tsNotes:
/overview,/configas the current Settings route,/chat?session=agent%3Amain%3Amain, and direct/chatin the mocked Control UI E2E.public_pr_preflight.shwas run, but its default-branch diff check compared against a stale localmainbranch checked out in another worktree. The branch itself was verified againstorigin/mainimmediately before publishing:git rev-list --left-right --count HEAD...origin/mainreturned1 0.codexreview binary could not run because its bundled vendor executable is missing (ENOENT).Screenshots
Desktop overview in this PR:
Mobile sidebar overview in this PR: