Repository navigation
fix: Dashboard loses the selected chat on newer Gateways - #2125
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. What this changesThis PR preserves selected chat identities through Gateway-owned query URLs and removes release allowlists from Dashboard navigation. Example: Open Dashboard while viewing agent:work:12345678 on Gateway 2026.11.1.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: main still discards contextual Dashboard destinations on newer Gateways, and this maintainer-authored PR addresses that source-confirmed defect without an actionable introduced code defect. Priority: P2 Before mergeNone. FindingsNone. Tests
Agent review detailsHow this fits togetherWorkspace and search supply the selected destination to HubSearchCatalog, then the existing Dashboard launcher builds a credential-safe URL and dispatches it to the browser. flowchart LR
A[Workspace context] --> C[HubSearchCatalog]
B[Search results] --> C
C --> D[Dashboard launcher]
D --> E[Browser]
E --> F[Gateway route resolver]
Technical reviewBest possible solution: Keep route selection in HubSearchCatalog and let the Gateway resolve the complete session key through its established query contract. Do we have a high-confidence way to reproduce the issue? Main deterministically rejects contextual routing for Gateway 2026.11.1 through its exact 2026.10.9 allowlist; no runtime reproduction was performed during this read-only review. Is this the best way to solve the issue? The patch addresses the cause with the existing catalog and launcher, preserves connection and permission admission, and delegates URL grammar to the authoritative Gateway implementation. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 2a2370699158. Provenance checked
TestingProof path: unit tests only. SecurityNone. EvidenceWhat I checked:
Likely related people:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. Review metrics
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed November 12, 2026, 2:18 AM ET / 07:18 UTC. |
Use the released full-session-key query contract for chat handoff and remove web-routing release allowlists. Preserve search admission and credential safeguards, and route Systems to its matching web page. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…e doc Remove Search_Compatibility from all locales now that its last reader is gone, and state that /systems matches the native Open in web action only when the Gateway reports environments; older Gateways open their default view for routes they lack. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
eb3f229 to
e801464
Compare
The Settings chrome proof invoked SettingsSearch with an immediate UIA lookup and failed intermittently in Dark theme. Use the existing InvokeWhenEnabledAsync readiness helper, matching the pending openclaw#2048 change. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
What Problem This Solves
Fixes: Dashboard opens home instead of the selected chat when the connected Gateway is not on an exact release allowlist.
User Impact
User impact: Dashboard and search links retain the full selected chat identity without requiring a Companion update for each Gateway release. Settings, Skills and model links also stop depending on release allowlists.
Draft: live browser selection remains unverified. Older Gateways without
/systemscannot provide an equivalent Systems page; links no longer substitute the unrelated Devices settings page.Why This Change Was Made
Use the released
/chat?session=<encoded-full-session-key>contract and let the Gateway resolve its session URL grammar and configured main key. Remove the remaining web-routing release checks and obsolete compatibility warning while retaining advertised-method checks, operator permissions, offline restrictions and stale-result fencing.Ownership stays with
HubSearchCatalogfor route selection,WorkspaceWindowfor current context, and the existing Dashboard launcher/browser for credential-safe dispatch. No parallel connection or launch owner is introduced.Evidence
The original release-gated Settings regression failed for five non-allowlisted version inputs before the repair. The Systems correction separately demonstrated two intended pre-fix failures. After the final fix, all 273 focused search, Dashboard and navigation tests pass, including exact session-key encoding, UUID/custom-main cases, mounted base paths and fragment-token preservation.
Read-only inspection of upstream
openclaw/openclawmain at87c10f5d4a58bc1e5b764a4f13ffa04d5f00878fconfirms the query parser, bootstrap normalization, and web route table. This is source compatibility evidence, not execution of upstream tests or an installed Gateway.Independent Copilot rubber-duck reviews used Claude Opus 5.5 and GPT-6 Astra at high reasoning, with long context requested for Astra. Both completed implementation-first and documentation/producer-contract stages over the full 11-file candidate. No P0/P1 issues were found. Opus identified one P2 Systems-versus-Devices mismatch, which was confirmed and fixed with the user's approval; Astra reported no actionable findings. The small post-review correction was checked directly and revalidated, not represented as a second dual-model review. No further simplification edits were needed.
Change Type
Scope
winnodeLocal MCP is affected only through the shared navigation-search catalog. No command registration, protocol or permission surface changes.
Required proof pools
windows-winui-interactive: exercise Dashboard from a selected chat and Settings in the isolated current-build app, then verify the browser's selected destination. Not run.Validation
Final local validation ran on Windows ARM64 with .NET 10. Tests executed before commit against the exact source now committed in this PR. No source changes followed these runs.
.\build.ps1dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter 'FullyQualifiedName~HubSearch|FullyQualifiedName~GatewayDashboard|FullyQualifiedName~WorkspaceNavigation' --verbosity quiet -nr:falsedotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore --verbosity quiet -nr:falsedotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --verbosity quiet -nr:falsedotnet test .\tests\OpenClaw.WinNode.Cli.Tests\OpenClaw.WinNode.Cli.Tests.csproj --no-restore --verbosity quiet -nr:false.\scripts\validate-docs.ps1git diff --checkOPENCLAW_REPO_ROOTpointed at the task worktree. Managed test shells cleared inherited integration/GPU opt-ins and conflicting state/profile overrides; Tray tests used their existing isolated-profile initializer.The CLI suite initially lacked restore assets. A restore-enabled run passed, followed by the passing final
--no-restorerun listed above. The 29 ordinary Shared skips do not count as custom proof.Real Behavior Proof
c7c2960f0e1b4789665ca542736a53e27389cf21, source-equivalent to the tested uncommitted candidate on base2a23706991584d5bcb813f40deda4cd2883667bc. The manually recorded candidate patch SHA-256 was991813334C17A9FC14A187C30537CE9D66308B4709A79E622F8970902FB7BD4B.Yes/No/N/A): N/A. No runtime screenshots or public runtime artifacts.Security Impact
Yes/No): No.Yes/No): No.Yes/No): No new RPCs or HTTP clients. Existing browser-navigation URLs change as described above.Yes/No): No. Shared search navigation targets change, not command registration or execution authority.Yes/No): No.Yes, explain the risk and mitigation: N/A. Existing shared-token-only browser export, query escaping, permission checks and search lifecycle fences remain.Compatibility and Migration
Yes/No): Yes for the established session-query and web-route contracts. This does not guarantee every destination exists in every Gateway build; older Gateways lacking/systemscannot provide that page.Yes/No): No.Yes/No): No.Review Conversations
No existing PR review conversations at creation. Review and CI results remain pending.