Skip to content

Dedupe connection error bars into a single thin top banner#865

Open
bkudiess wants to merge 1 commit into
openclaw:mainfrom
bkudiess:bkudiess-dedupe-connection-info-bars
Open

Dedupe connection error bars into a single thin top banner#865
bkudiess wants to merge 1 commit into
openclaw:mainfrom
bkudiess:bkudiess-dedupe-connection-info-bars

Conversation

@bkudiess

@bkudiess bkudiess commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

A connection/auth failure rendered two error bars: the global top-window InfoBar and an in-page "Connection Error" InfoBar on the Connection page. The auth pipeline also published two global notifications for a single failure, which forced the banner's action to degrade to "Show more" instead of routing to Connection.

This consolidates everything into one thin top banner and removes the in-page bar, with no loss of states/messages.

What changed

  • Removed the in-page AuthErrorBar (XAML + all code paths) and its now-dead resw strings (ConnectionPage_AuthGuidance*, ConnectionPage_ConnectFailed) across all 5 locales.
  • One global banner carries every state the in-page bar did (gateway connection failed, pairing required, Windows node failed/rate-limited, etc.).
  • Always routes to Connection — connection notifications are prioritized as the visible banner, preferring an actionable one over an action-less transient, so the user always gets an Open Connection action (not "Show more").
  • Consolidated duplicate global notifications — stopped publishing the separate connection:authentication-failed banner; the snapshot-driven connection:issue notification is the single source.
  • Re-homed transient errors — WSL host-action failures use the inline WSL-card status (or a top notification when that card is hidden); connect/switch failures publish via ShowTransientConnectionError on the same banner id (cannot double-bank).
  • Windows-aligned, thinner design — single line: bold headline + " — detail", with the action as a right-aligned hyperlink.

Validation

  • ./build.ps1 — all projects build
  • Tray tests: 1218 passed (incl. new banner-priority / dedupe regression tests)
  • Shared tests: 2514 passed
  • Two adversarial rubber-duck reviews (GPT-5.5); all findings fixed.

Screenshots

Before: two bars (top "Gateway connection failed" + in-page "Connection Error").
image (1)

After: one thin banner — ⊗ Gateway connection failed — Transport error … Open Connection ✕ — with the Connection page showing only its own recovery card.
06-banner-show-more
04-redesigned-thin-banner

@clawsweeper

clawsweeper Bot commented Jun 26, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 26, 2026, 5:23 PM ET / 21:23 UTC.

Summary
The PR removes the Connection page AuthErrorBar, consolidates connection/auth failures onto the global connection:issue banner, updates banner rendering/priority, removes obsolete localized strings, and adds notification selection tests.

Reproducibility: yes. at source/proof level: current main still defines the in-page AuthErrorBar and separately publishes connection:authentication-failed, and the inspected before screenshot shows both bars for one auth failure. I did not run the WinUI app in this read-only review.

Review metrics: 3 noteworthy metrics.

  • Changed files: 12 files, +218/-255. The diff is bounded to tray notification UI, Connection page cleanup, localized string removals, and focused tests.
  • Notification tests: 3 added. The new tests cover the banner priority and dedupe behavior most likely to regress this fix.
  • Locales touched: 5 locale resource files. Removing the dead AuthErrorBar and auth-guidance strings across all supported locales reduces resource drift risk.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • [P2] Let the in-progress Build and Test jobs finish green, or inspect any failures before merge.

Risk before merge

  • [P1] Local build/tests were not run because this was a read-only review; GitHub still showed several Build and Test jobs in progress at review time.

Maintainer options:

  1. Decide the mitigation before merge
    Land the focused top-banner consolidation once required checks finish green and maintainers accept the intended connection-notification priority behavior.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • No automated repair lane is needed; the remaining action is maintainer review and normal check completion.

Security
Cleared: The diff does not change dependency sources, build/release automation, credential storage, authorization, network calls, or security boundaries; it changes how existing connection errors are surfaced in the tray UI.

Review details

Best possible solution:

Land the focused top-banner consolidation once required checks finish green and maintainers accept the intended connection-notification priority behavior.

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

Yes, at source/proof level: current main still defines the in-page AuthErrorBar and separately publishes connection:authentication-failed, and the inspected before screenshot shows both bars for one auth failure. I did not run the WinUI app in this read-only review.

Is this the best way to solve the issue?

Yes: consolidating onto the existing snapshot-driven connection:issue banner and making actionable connection notifications win is the narrowest maintainable path I found. The added tests cover the priority cases that caused Open Connection to degrade to Show more.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a normal-priority tray UX bug fix for duplicate connection error messaging and degraded recovery routing with limited blast radius.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body includes inspected screenshots showing the before duplicate bars and the after single thin banner with Open Connection, which directly demonstrates the changed WinUI behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes inspected screenshots showing the before duplicate bars and the after single thin banner with Open Connection, which directly demonstrates the changed WinUI behavior.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body includes inspected screenshots showing the before duplicate bars and the after single thin banner with Open Connection, which directly demonstrates the changed WinUI behavior.
Evidence reviewed

What I checked:

  • Repository policy applied: AGENTS.md was read fully; its connection/tray UX guidance required checking the architecture docs and whether missing credentials or pairing failures visibly route users to Connection settings. (AGENTS.md:46, f51a8618ed7b)
  • Architecture context checked: Connection architecture says WinUI consumes connection state through the connection manager and tray actions should route configuration problems to Connection settings, which matches the PR's single Open Connection banner direction. (docs/CONNECTION_ARCHITECTURE.md:19, f51a8618ed7b)
  • Current main still has in-page error bar: The base branch still defines the Connection page AuthErrorBar above the pending approvals banner, so the central cleanup is not already implemented on main. (src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml:63, f51a8618ed7b)
  • Current main still publishes duplicate auth notification: The base branch still publishes a separate connection:authentication-failed notification from OnGatewayAuthenticationFailed, which can coexist with the snapshot-driven connection issue banner. (src/OpenClaw.Tray.WinUI/App.xaml.cs:2713, f51a8618ed7b)
  • PR consolidates transient and snapshot connection banners: At the PR head, transient connection errors use ShowTransientConnectionError with the connection:issue identity and Open Connection action, while the auth-failed handler no longer publishes the second banner. (src/OpenClaw.Tray.WinUI/App.xaml.cs:2332, bd37f32663e2)
  • PR adds focused banner-priority tests: The PR adds regression tests for prioritizing connection issues over earlier notifications, preserving hidden-notification reveal behavior, and preferring actionable connection notifications over actionless connection notifications. (tests/OpenClaw.Tray.Tests/Services/AppNotificationServiceTests.cs:68, bd37f32663e2)

Likely related people:

  • Régis Brid: The separate connection:authentication-failed app-notification path traces to the merged app-notification routing work, and that same work touched notification publishing and resource strings adjacent to this PR. (role: recent notification contributor; confidence: high; commits: 1a07759a7e6e; files: src/OpenClaw.Tray.WinUI/App.xaml.cs, src/OpenClaw.Tray.WinUI/Services/AppNotificationPublisher.cs, src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw)
  • bkudiess: The current base commit from the merged remote gateway recovery PR touched ConnectionPage, ConnectionPagePlan, connection recovery resources, and related tests, so this PR builds on that recently merged surface beyond only authoring this branch. (role: recent connection-page recovery contributor; confidence: high; commits: f51a8618ed7b; files: src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml, src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs, src/OpenClaw.Tray.WinUI/Pages/ConnectionPagePlan.cs)
  • Ranjesh: A recent merged tray UX stack integrated broad ConnectionPage and HubWindow changes in the same UI area affected by the banner cleanup. (role: adjacent tray UX integrator; confidence: medium; commits: 429be9ba9368; files: src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs, src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml, src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml.cs)
  • Vincent Koc: A recent pairing/reconnect state fix touched ConnectionPage, App.xaml.cs, GatewayConnectionManager, and ConnectionPagePlan near the recovery states this banner surfaces. (role: recent connection-state contributor; confidence: medium; commits: 260fb90c6dc7; files: src/OpenClaw.Tray.WinUI/App.xaml.cs, src/OpenClaw.Tray.WinUI/Pages/ConnectionPage.xaml.cs, src/OpenClaw.Tray.WinUI/Pages/ConnectionPagePlan.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. P2 Normal priority bug or improvement with limited blast radius. labels Jun 26, 2026
@bkudiess bkudiess marked this pull request as ready for review June 26, 2026 19:12
@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed 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. labels Jun 26, 2026
A connection/auth failure rendered two error bars: the global top-window
InfoBar plus an in-page "Connection Error" InfoBar on the Connection page.
The auth pipeline also published two global notifications for one failure,
which forced the banner action to degrade to "Show more".

Remove the in-page AuthErrorBar and consolidate to one top banner that:
- carries the gateway/node error states the in-page bar covered
- always routes the user to the Connection page via an "Open Connection"
  action (connection notifications are prioritized as the visible banner,
  preferring an actionable one over an action-less transient)
- renders as a single thin line: bold headline + " - detail", with the
  action as a right-aligned hyperlink (Windows-aligned InfoBar)

Other changes:
- Stop publishing the duplicate connection:authentication-failed banner;
  the snapshot-driven connection:issue notification is the single source.
- Re-home transient errors: WSL host-action failures use the inline card
  status (or a top notification when the card is hidden); connect/switch
  failures publish via ShowTransientConnectionError on the same banner id.
- Remove now-dead resw strings (ConnectionPage_AuthGuidance*,
  ConnectionPage_ConnectFailed) across all five locales.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bkudiess bkudiess force-pushed the bkudiess-dedupe-connection-info-bars branch from 19ad06d to bd37f32 Compare June 26, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant