Skip to content

Redesign Hub title bar notifications and status#870

Merged
shanselman merged 1 commit into
openclaw:mainfrom
bkudiess:bkudiess-notifications-statusbar-redesign
Jun 27, 2026
Merged

Redesign Hub title bar notifications and status#870
shanselman merged 1 commit into
openclaw:mainfrom
bkudiess:bkudiess-notifications-statusbar-redesign

Conversation

@bkudiess

@bkudiess bkudiess commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Move Hub notifications from the footer rail into a title-bar bell flyout with badge, clear-all, dismiss, and open-page actions.
  • Replace the title-bar gateway/operator/node dot cluster with a connection status pill and Gateway/Operator/Node detail flyout.
  • Share notification card view-model logic between the Notifications page and bell flyout, and add a pure connection status presenter with tests so the pill/flyout stay aligned with the Connection page.
  • Clean up removed navigation/title-bar resource keys and add localized keys across all supported locales.

Validation

  • ./build.ps1
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore -- xUnit parallelizeTestCollections=false
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore -- xUnit parallelizeTestCollections=false
Screenshot 2026-06-26 162916 Screenshot 2026-06-26 162947 Screenshot 2026-06-26 163015

@clawsweeper

clawsweeper Bot commented Jun 26, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed June 26, 2026, 9:18 PM ET / 01:18 UTC.

Summary
The PR moves Hub notifications into a title-bar bell flyout, replaces the gateway/operator/node title-bar dot cluster with a status pill/detail flyout, shares notification card view-model logic, adds a connection status presenter, updates resources, and adds tray tests.

Reproducibility: yes. by source inspection: transition a manager snapshot from Connected or Ready to Degraded, or from Connecting to PairingRequired, without changing the mapped AppState.Status value. The Hub title-bar pill has no refresh trigger for that full snapshot change.

Review metrics: 3 noteworthy metrics.

  • Changed files: 15 files, +1135/-215. The PR spans Hub chrome, resources, view models, and tray tests, so a UI plus connection-state review is needed.
  • Collapsed status path: 8 overall states mapped to 4 coarse statuses. The new pill displays detailed OverallConnectionState values but is refreshed through the coarser legacy AppState.Status path.
  • Proof gap: 3 screenshots, 0 active-notification examples. The visual proof shows the empty notification flyout but not the changed live notification actions.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦐 gold shrimp
Patch quality: 🦐 gold shrimp
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Refresh the title-bar pill from full connection snapshot changes and add regression coverage.
  • [P1] Add real behavior proof with active notifications showing badge/list/dismiss/clear behavior, redacting private endpoints, IPs, tokens, and other sensitive details.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: Screenshots show the redesigned title bar and empty notification flyout, but not live active notifications, badge count, clear-all, or dismiss behavior after the change. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
The changed behavior is visible Hub chrome and flyout UI that a real WinUI smoke can prove better than unit tests alone. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify the Hub title bar notification bell, active notification badge/list/dismiss/clear actions, and connection status flyout in a real WinUI run.

Risk before merge

  • [P1] The title-bar pill can display stale detailed connection state after same-bucket OverallConnectionState transitions, such as Connected or Ready to Degraded.
  • [P1] The submitted screenshots do not prove active notification badge/list/dismiss/clear-all behavior; contributor should add real behavior proof with private endpoints or tokens redacted.
  • [P1] This is a Hub chrome/product UX change, so maintainers still need to accept moving the notification entry point out of the footer rail.

Maintainer options:

  1. Fix full-snapshot refresh before merge (recommended)
    Update the Hub title-bar pill whenever GatewayConnectionManager.StateChanged fires or otherwise flow the full snapshot into observed UI state, then add regression coverage for same-coarse-status transitions.
  2. Pause for product review
    Maintainers can pause the PR until the Hub chrome redesign and active-notification flyout behavior are explicitly accepted.

Next step before merge

  • [P1] The code defect is narrow, but the PR also needs contributor-provided real behavior proof and maintainer product review, so this should not be routed to automated repair yet.

Security
Cleared: The diff changes WinUI presentation, resources, and tray tests without adding dependency, workflow, secret, credential, or code-execution surface.

Review findings

  • [P2] Refresh the pill on full connection-state changes — src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml.cs:747-749
Review details

Best possible solution:

Refresh the title-bar pill from full GatewayConnectionManager snapshot changes, keep the notification/banner action contract intact, and require active-notification runtime proof before merging the Hub chrome redesign.

Do we have a high-confidence way to reproduce the issue?

Yes by source inspection: transition a manager snapshot from Connected or Ready to Degraded, or from Connecting to PairingRequired, without changing the mapped AppState.Status value. The Hub title-bar pill has no refresh trigger for that full snapshot change.

Is this the best way to solve the issue?

No; the UI should observe the full GatewayConnectionManager state it displays instead of deriving a detailed pill from a coarse legacy AppState property. The flyout can still refresh on opening, but the always-visible pill needs live snapshot updates.

Full review comments:

  • [P2] Refresh the pill on full connection-state changes — src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml.cs:747-749
    The new pill label is computed from CurrentSnapshot, but HubWindow only calls this path from AppState.Status changes. App collapses Connected, Ready, and Degraded to the same ConnectionStatus.Connected value, and AppState suppresses notifications when that value is unchanged, so the pill can stay on the old label instead of updating to Degraded or Pairing required. Subscribe/update from GatewayConnectionManager.StateChanged or otherwise flow the full snapshot through observed state.
    Confidence: 0.91

Overall correctness: patch is incorrect
Overall confidence: 0.86

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against acfbf62b4c45.

Label changes

Label changes:

  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🦐 gold shrimp.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🦐 gold shrimp, so this older rating label is no longer current.

Label justifications:

  • P3: This is a low-risk tray Hub UX redesign with a bounded user-visible status freshness issue.
  • merge-risk: 🚨 other: The PR moves status into a new title-bar pill that can display stale detailed connection state after merge.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: Screenshots show the redesigned title bar and empty notification flyout, but not live active notifications, badge count, clear-all, or dismiss behavior after the change. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Screenshots show the redesigned title bar and empty notification flyout, but not live active notifications, badge count, clear-all, or dismiss behavior after the change.
Evidence reviewed

What I checked:

Likely related people:

  • bkudiess: Authored the merged connection-banner cleanup and recent tray dashboard work touching HubWindow/App connection surfaces that this PR extends. (role: recent area contributor; confidence: high; commits: 977648cc9c84, acfbf62b4c45; files: src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml.cs, src/OpenClaw.Tray.WinUI/App.xaml.cs)
  • RBrid: Authored the app-notification feature work that introduced the notification service/page behavior reused by this PR. (role: notification feature contributor; confidence: high; commits: 1a07759a7e6e, 4e7982bafb86; files: src/OpenClaw.Tray.WinUI/Services/AppNotificationService.cs, src/OpenClaw.Tray.WinUI/Pages/NotificationsPage.xaml.cs, src/OpenClaw.Tray.WinUI/App.xaml.cs)
  • shanselman: Merged the recent app-notification and banner PRs that define the current main behavior around this Hub notification surface. (role: recent merger; confidence: medium; commits: 977648cc9c84, 1a07759a7e6e; files: src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml.cs, src/OpenClaw.Tray.WinUI/Services/AppNotificationService.cs)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jun 26, 2026
Move notifications from the footer rail into a title-bar bell flyout and replace the compact connection status dots with a status pill plus detail flyout. Keep the status presentation aligned with the Connection page by deriving node state from shared presenter logic and the node-mode/capability settings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bkudiess bkudiess force-pushed the bkudiess-notifications-statusbar-redesign branch from 24a1367 to 0247641 Compare June 27, 2026 01:06
@clawsweeper clawsweeper Bot added proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 27, 2026
@bkudiess bkudiess marked this pull request as ready for review June 27, 2026 01:13
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 27, 2026
@shanselman shanselman merged commit dd1c791 into openclaw:main Jun 27, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants