Skip to content

Apply bkudiess tray UX PR stack - #780

Merged
ranjeshj merged 12 commits into
mainfrom
ranjeshj/apply-bkudiess-prs
Jun 18, 2026
Merged

Apply bkudiess tray UX PR stack#780
ranjeshj merged 12 commits into
mainfrom
ranjeshj/apply-bkudiess-prs

Conversation

@ranjeshj

Copy link
Copy Markdown
Collaborator

Summary

Integrates the open non-draft bkudiess PR stack onto latest main:

Also includes integration/review fixes from applying the stack together:

  • Gates OpenClaw Onboard to active app-managed WSL gateways
  • Prevents direct wizard navigation when setup lock/init failed
  • Prunes unavailable gateway pages from native back stack after disconnect
  • Hides/reloads direct Onboard after local gateway removal
  • Resolves Diagnostics page contract-test conflict
  • Localizes new gateway doctor diagnostics strings and documents invariant Gateway label

Validation

  • ./build.ps1
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore
  • Copilot autoreview: clean, no accepted/actionable findings

Copilot and others added 12 commits June 17, 2026 18:24
Extended the existing 'Back to Connection' affordance (Sessions/Instances/
Permissions) to every cross-page link in the Hub so users always have a
one-click return path.

- Added Helpers/NavOriginLabels for nav-tag -> display-label mapping so
  destination pages can render 'Back to {origin}' dynamically.
- Threaded originTag through 9 cross-page Navigate calls: About->Debug,
  Channels->Config (x2), Permissions->Voice, and Bindings/Cron/Usage/
  Debug/Instances->Connection.
- Added the inline back HyperlinkButton + Initialize-time wiring to
  ConfigPage, VoiceSettingsPage, DebugPage, and ConnectionPage matching
  the existing Sessions/Instances/Permissions pattern.
- Updated AsyncListLoadingPageWiringTests to accept the originTag-bearing
  Navigate('connection', ...) signature.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ck links

Replace the custom cross-page back affordances with a single native
title-bar back button driven by the NavigationView ContentFrame's back
stack.

- Add a native back button in the Hub title bar wired to ContentFrame.GoBack(),
  enabled/disabled by CanGoBack (mirrors NavigationView's root behavior),
  plus an Alt+Left accelerator. The rail re-syncs its selection on
  Back/Forward.
- Remove all custom origin-tracking infrastructure: NavOriginLabels helper,
  the 2-arg IAppCommands.Navigate/NavigateTo overloads, LastNavigationOrigin
  and pending-origin state on HubWindow, and the LocalizationHelper origin
  additions.
- Remove the per-page "Back to {origin}" links (Config/Connection/Debug/Voice)
  and the "Back to Connection" links (Sessions/Instances/Permissions), along
  with their code-behind handlers and visibility logic.
- Revert all 2-arg navigation call sites back to single-arg Navigate across
  11 pages.
- Clean up obsolete resw keys and add NavBackButton strings across all five
  locales (en, fr, nl, zh-cn, zh-tw).

In-page form/detail close buttons (ConnectionPage "Add a gateway",
DebugPage log detail) are intentionally kept — they are view-state toggles
within a page, not Frame navigations.

Addresses PR #521 review feedback to rely on native back navigation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a dedicated "OpenClaw Onboard" card to the Local Gateway section of
Companion Settings. Its "Open onboarding" button opens the hosted setup
window and navigates straight to the gateway onboarding step, skipping
WSL installation.

- New ShowGatewayWizard app command hosts SetupWindow and calls
  NavigateToWizard() after initial content is ready.
- Local Gateway setup card keeps its single "Open setup" button.
- Localized header, description, and button across all 5 locales.
- Extend AppRefactorContractTests to cover the direct onboarding entrypoint.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tion

- Guard direct onboarding so it cannot interrupt an in-progress setup.
  ShowGatewayWizardAsync now goes through EnsureSetupWindowAsync, which
  reports whether a setup window was newly created. It only calls
  NavigateToWizard() for a freshly created window; an already-open setup
  window (which may be mid-install on ProgressPage, whose Unloaded handler
  cancels the running pipeline) is just brought to the front instead.
- Register SettingsPage_OnboardWizard_Header.Text as an invariant resource
  key. "OpenClaw Onboard" is a product/feature name kept identical across
  locales (the card's description and button are translated), fixing the
  LocalizationValidationTests all-or-none failure.
- Extend AppRefactorContractTests to assert the active-setup guard
  (EnsureSetupWindowAsync + the createdNew check) stays in place.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a "Run gateway doctor" action to the Diagnostics page (DebugPage). The
card opens a terminal in the app-managed WSL gateway, runs `openclaw doctor`,
and leaves an interactive shell open so the operator can read the report.

- Shown only when the active gateway is an app-managed WSL distro
  (GatewayHostAccessPlan.CanControlWslGateway); hidden for SSH/remote/none.
- Reuses the same launcher path as the Connection page's Open terminal
  (GatewayTerminalLauncher / GatewayHostAccessClassifier), opening a themed
  Windows Terminal tab with a direct wsl.exe fallback.
- Keep-open uses `&& openclaw doctor || true && exec bash` (no `;`):
  Windows Terminal splits its command line on `;` even inside quotes, which
  caused 0x80070002. `|| true` absorbs doctor's frequent advisory non-zero
  exit so the shell always stays open.
- Start() now uses UseShellExecute = !UsesWindowsTerminal so direct wsl/ssh
  launches get a visible console window.
- Adds a Doctor glyph to FluentIconCatalog and resw keys across all 5 locales.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant