Fix ChatPage WaitingPanel overlay floating over usable chat (#730) - #733
Conversation
…#730) Several ChatPage transitions showed the WebView without collapsing the WaitingPanel/RetryChatButton/PlaceholderPanel/ErrorPanel that share its Grid.Row, leaving the "Waiting for chat to start..." overlay visible on top of an already-usable chat. Extract a pure ChatPagePanelStates helper with an IChatPagePanelHost interface and four named transition helpers (ApplyShowingWebView, ApplyShowingError, ApplyShowingReadinessFailure, ApplyShowingRetryInProgress). Each helper explicitly sets every panel, so adding a new panel cannot silently drift out of sync. Route all six panel-transition sites through the helpers: - NavigateWebViewToCurrentChatUrl - _navCompletedHandler success and failure branches - NavigateWhenChatReadyAsync - ShowChatReadinessFailure - OnRetryChat The pure helper is cross-compiled into OpenClaw.Tray.Tests and covered by 12 unit tests via a fake IChatPagePanelHost. The WinUI adapter asserts UI-thread affinity in debug builds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Codex review: needs real behavior proof before merge. Reviewed June 9, 2026, 4:44 PM ET / 20:44 UTC. Summary Reproducibility: yes. by source inspection, at medium confidence: current main has WebView-visible transitions that do not consistently collapse peer panels in the same grid row. I did not run a live Windows UI repro in this read-only review. Review metrics: 2 noteworthy metrics.
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:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this focused panel-state helper after redacted real Windows proof confirms the waiting/retry overlay no longer covers usable chat. Do we have a high-confidence way to reproduce the issue? Yes by source inspection, at medium confidence: current main has WebView-visible transitions that do not consistently collapse peer panels in the same grid row. I did not run a live Windows UI repro in this read-only review. Is this the best way to solve the issue? Yes with a proof caveat: centralizing the panel-state transitions is a narrow maintainable fix, and the added unit tests cover the stale-overlay states without changing gateway routing. Real Windows proof is still needed before merge. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 71d249711d63. Label changesLabel 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
|
Several ChatPage transitions showed the WebView without collapsing the WaitingPanel/RetryChatButton/PlaceholderPanel/ErrorPanel that share its Grid.Row, leaving the "Waiting for chat to start..." overlay visible on top of an already-usable chat.
Extract a pure ChatPagePanelStates helper with an IChatPagePanelHost interface and four named transition helpers (ApplyShowingWebView, ApplyShowingError, ApplyShowingReadinessFailure, ApplyShowingRetryInProgress). Each helper explicitly sets every panel, so adding a new panel cannot silently drift out of sync.
Route all six panel-transition sites through the helpers:
The pure helper is cross-compiled into OpenClaw.Tray.Tests and covered by 12 unit tests via a fake IChatPagePanelHost. The WinUI adapter asserts UI-thread affinity in debug builds.
Fixes #730.
Validation (AGENTS.md)
Ran on commit 0334925 (Windows, local worktree):
./build.ps1— ✅ greendotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj— ✅ 2130 passed, 29 skippeddotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj— ✅ 990 passed (includes 12 new ChatPagePanelStatesTests)