fix: show readable session names across Windows UX - #983
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 17, 2026, 9:33 PM ET / July 18, 2026, 01:33 UTC. Summary Reproducibility: yes. at source level: current main derives titles and grouping from legacy fields and colon-delimited routing keys, so generated and background sessions can surface as opaque identifiers. A current-main live recording is not needed to establish the affected code path, but would strengthen the user-visible baseline. Review metrics: 3 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. 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 detailsBest possible solution: Confirm the upstream presentation contract and the intended default visibility policy, then retain the raw-key routing boundary and bounded fallback while refreshing redacted native WinUI proof from the current head. Do we have a high-confidence way to reproduce the issue? Yes, at source level: current main derives titles and grouping from legacy fields and colon-delimited routing keys, so generated and background sessions can surface as opaque identifiers. A current-main live recording is not needed to establish the affected code path, but would strengthen the user-visible baseline. Is this the best way to solve the issue? Yes for the resolver shape: structured producer metadata plus a bounded older-Gateway fallback and separate raw routing key is maintainable. No for the unapproved visibility default: that policy should be confirmed or split before merge. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 4518dd87ed2b. Label changesLabel changes:
Label justifications:
Evidence reviewedWhat 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 (12 earlier review cycles; latest 8 shown)
|
80dbd80 to
1481659
Compare
Resolve conflicts in OpenClawChatDataProvider and OpenClawChatRoot: - Keep SessionPresentationResolver.AgentId/IsBackground from PR branch - Keep SessionVisibilityFilter.ToChatThreadStatus (ended-session) from main (#1016/#1017) - Keep SessionVisibilityFilter.VisibleChatPickerThreads picker filtering from main - Both filters (background + ended) applied in sequence in ChatRoot Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c311ae3b-8656-403f-91a6-5bfe2f91f5cd
- SessionInfo.Clone() now deep-copies Presentation and Worktree objects so defensive snapshots cannot alias live tracked session state (#1012). - TrayDashboardSummary.SelectActiveSession prefers non-ended sessions as the fallback display item, preserving AbortedLastRun visibility. - Add snapshot isolation tests proving clone independence. - Add runtime behavior tests for ended/background/routing pipeline. - Add dashboard ended-session deprioritization tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c311ae3b-8656-403f-91a6-5bfe2f91f5cd

Closes #981
What Problem This Solves
Fixes an issue where Windows users opening session pickers, the Sessions page, or tray menus would see opaque Gateway routing keys and machine-like IDs, especially for channel, heartbeat, subagent, cron, and TUI sessions.
Why This Change Was Made
Consumes the Gateway's additive session
presentationcontract, preserves the raw key only for routing, and keeps a conservative fallback for older Gateways. Friendly titles now use explicit labels and Gateway presentation metadata; background sessions are hidden by default with an opt-in toggle, while an explicitly active background chat remains selectable.The fallback recognizes only established built-in key families and treats the remaining key tail as opaque text, shortening UUID/hash runs instead of teaching WinUI every Gateway routing grammar.
User Impact
Session surfaces show useful names instead of values such as
agent:main:tui-847241c7-…:heartbeat. Foreground chats are easier to find, duplicate friendly names remain distinguishable, account/agent/node context appears as secondary text, and routing continues to use the exact original session key.Evidence
git diff --checkpassed.80dbd80a: 2,815 Shared, 1,716 Tray, 422 Connection, 126 WinNode CLI, 18 Tray integration, 10 functional UI, 423 SetupEngine, 78 Tray UI, and 19 accessibility tests.win-x64andwin-arm64.Post-merge-and-fix validation (head
43688024)75c6a1a4): 2 files resolved surgically — ChatDataProvider and ChatRoot.AgentId/IsBackgroundfromSessionPresentationResolver.SessionVisibilityFilter.ToChatThreadStatus(ended-session classification from fix(chat): hide completed sessions from picker #1016/fix(sessions): classify terminal sessions as ended #1017).VisibleChatPickerThreadsandIsVisibleInChatPickerguards.43688024):SessionInfo.Clone()now deep-copiesPresentationandWorktree(snapshot isolation, fix(gateway): isolate the SessionsUpdated snapshot from live tracked state #1012 invariant).TrayDashboardSummary.SelectActiveSessiondeprioritizes ended sessions as fallback display.Change Type
Scope
winnodeValidation
git diff --check— passed.xmllint --noouton all five changed locale resources — passed.43688024): build ✅, Shared 2961/31skipped ✅, Tray 1851 ✅, UITests 108 ✅.43688024: duplicate titles render distinctly, routing uses original raw keys.Real Behavior Proof
Fresh current-head proof (head
43688024)SessionTitleBehaviorProofTests at commit
43688024(July 20, 2026):OpenClaw.Tray.WinUI.exein an isolated data directory.DisplayName="OpenClaw Windows Tray"render as distinct titles ("OpenClaw Windows Tray"and"OpenClaw Windows Tray (2)").agent:main:mainandagent:main:fork).Earlier ARM64 proof (head
80dbd80a)Collected on July 15, 2026 with Parallels Windows workflows.
77c42440376e.80dbd80ad780.OpenClaw Windows Tray (main/fork).OpenClaw Windows Tray (2),agent mainas context, andShow backgroundcontrol visible.Before — merge-base
77c42440376eAfter — PR head
80dbd80ad780Security Impact
Yes/No): NoYes/No): NoYes/No): NoYes/No): NoYes/No): NoYes, explain the risk and mitigation: N/ACompatibility and Migration
Yes/No): YesYes/No): NoYes/No): Nopresentationmetadata is optional, and older Gateways use the bounded client fallback.63ff2e8bd6eeadc3dd56d2f2f1237f30e101a529.Review Conversations
Coordinated Gateway contract PR: openclaw/openclaw#106832