Skip to content

Add OpenClaw Onboard settings card - #770

Closed
bkudiess wants to merge 2 commits into
openclaw:mainfrom
bkudiess:bkudiess/gateway-wizard-button
Closed

Add OpenClaw Onboard settings card#770
bkudiess wants to merge 2 commits into
openclaw:mainfrom
bkudiess:bkudiess/gateway-wizard-button

Conversation

@bkudiess

@bkudiess bkudiess commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a dedicated OpenClaw Onboard card to the Local Gateway section of Companion Settings. Its Open onboarding button opens the hosted setup window and jumps straight to the gateway onboarding step, skipping WSL installation.

This is useful when a Local Gateway is already installed and you just want to (re)run the gateway-driven onboarding/configuration without going through the full first-run install flow.

Changes

  • New ShowGatewayWizard app command (IAppCommands + App.xaml.cs) — hosts SetupWindow, waits for initial content, then calls NavigateToWizard() so Welcome / Capabilities / install / Progress pages are skipped.
  • Settings UI (SettingsPage.xaml / .xaml.cs) — the existing Local Gateway setup card keeps its single Open setup button; a new OpenClaw Onboard card is added below it with header, description, and an Open onboarding button.
  • Localization — new SettingsPage_OnboardWizard_Header, SettingsPage_OnboardWizard_Description, and SettingsPage_OpenOnboardWizard.Content strings across all 5 locales (en-us, fr-fr, nl-nl, zh-cn, zh-tw).
  • TestsAppRefactorContractTests extended to assert the direct onboarding entrypoint (ShowGatewayWizardAsync + setupWindow.NavigateToWizard()) stays in the tray process.

Validation

  • ./build.ps1 — all projects build
  • dotnet test ./tests/OpenClaw.Shared.Tests/... — pass
  • dotnet test ./tests/OpenClaw.Tray.Tests/... — pass
  • Launched locally and verified the OpenClaw Onboard card renders in the Local Gateway section.
image

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>
@clawsweeper

clawsweeper Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed June 16, 2026, 2:35 PM ET / 18:35 UTC.

Summary
Adds a Local Gateway settings card for OpenClaw Onboard, a ShowGatewayWizard app command, five locale string sets, and a tray contract-test assertion for direct wizard navigation.

Reproducibility: yes. for the PR findings: CI reproduces the localization failure, and source inspection shows the direct-wizard command can navigate an existing setup window while ProgressPage cancels on unload. I did not run the Windows UI locally in this read-only review.

Review metrics: 2 noteworthy metrics.

  • Changed Surface: 10 files changed, +94/-0. The PR spans app commands, WinUI settings, localization resources, and tray tests, so setup-flow and UX behavior both need review.
  • CI Failure: 1 tray test failed. The failing localization validation is directly tied to a new resource key from this diff.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦪 silver shellfish
Patch quality: 🧂 unranked krab
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:

  • Guard direct wizard navigation so it cannot cancel an active setup pipeline.
  • [P1] Translate the new header or add a scoped invariant/deferred rationale so localization validation passes.
  • Attach redacted real behavior proof showing the settings card and the button opening the gateway wizard.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The attached screenshot shows the settings card but not the Open onboarding button opening the gateway wizard; add redacted screenshots, a recording, terminal output, or logs for that flow before merge. 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
A short desktop proof would materially verify the visible settings card and the wizard-navigation flow. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify Settings > Local Gateway shows the OpenClaw Onboard card and its button opens the gateway wizard without starting WSL install.

Risk before merge

  • [P1] The direct onboarding command can interrupt an already-open setup window; if that window is on ProgressPage, navigation unloads the page and cancels the active setup pipeline.
  • [P1] The new header resource currently fails tray localization validation because every non-English locale keeps the en-us value without an invariant/deferred rationale.
  • [P1] The attached proof shows the card, but not the button opening the gateway wizard, so the main user-visible flow remains unproven.
  • [P1] Adding a second Local Gateway entrypoint is a product/UX choice that should be accepted after the safety and localization blockers are fixed.

Maintainer options:

  1. Guard Existing Setup Windows (recommended)
    Change the direct wizard command so it only navigates a newly created or known-idle setup window, and otherwise brings the active setup window forward without changing pages.
  2. Defer The Second Entry Point
    If maintainers are not ready to add a separate OpenClaw Onboard affordance, pause this PR and keep reconfiguration behind the existing Open setup path.

Next step before merge

  • [P1] Human review remains appropriate because proof is incomplete and the direct-entrypoint/product UX should be approved after the concrete code blockers are fixed.

Security
Cleared: The diff adds WinUI command/UI wiring, localized strings, and tests without changing secrets, auth storage, dependencies, CI, or package execution paths.

Review findings

  • [P1] Don't navigate an active setup run to the wizard — src/OpenClaw.Tray.WinUI/App.xaml.cs:3150-3151
  • [P2] Resolve the invariant header localization failure — src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw:4380-4381
Review details

Best possible solution:

Land a guarded direct-wizard entrypoint that cannot hijack active setup, resolves localization policy, and includes redacted visual or runtime proof of the card and button flow.

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

Yes for the PR findings: CI reproduces the localization failure, and source inspection shows the direct-wizard command can navigate an existing setup window while ProgressPage cancels on unload. I did not run the Windows UI locally in this read-only review.

Is this the best way to solve the issue?

No: the direct entrypoint is plausible, but this implementation needs an active-setup guard, a localization-policy fix, and proof that the button opens the gateway wizard before it is the safest solution.

Full review comments:

  • [P1] Don't navigate an active setup run to the wizard — src/OpenClaw.Tray.WinUI/App.xaml.cs:3150-3151
    ShowOnboardingAsync() returns after bringing an existing setup window forward, and this new method then calls NavigateToWizard() on that same window. If the user already has setup on ProgressPage, that navigation unloads the page and current ProgressPage.Unloaded cancels the running setup pipeline, so the new settings button can cancel an in-progress WSL install. Guard this path so direct onboarding only navigates a newly created or known-idle setup window, or refuses while setup is already running.
    Confidence: 0.88
  • [P2] Resolve the invariant header localization failure — src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw:4380-4381
    The new SettingsPage_OnboardWizard_Header.Text value is OpenClaw Onboard in every non-English locale. The current localization test requires all-identical values to be translated or explicitly listed as invariant/deferred, and CI is already failing on this key. Either translate the title or add a scoped invariant rationale for this specific product name.
    Confidence: 0.99

Overall correctness: patch is incorrect
Overall confidence: 0.91

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The attached screenshot shows the settings card but not the Open onboarding button opening the gateway wizard; add redacted screenshots, a recording, terminal output, or logs for that flow before merge.

Label justifications:

  • P2: This is a bounded user-facing setup/settings improvement with concrete merge blockers but no current production regression.
  • merge-risk: 🚨 availability: Merging as-is could let a settings click cancel an active Local Gateway setup pipeline.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🧂 unranked krab.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The attached screenshot shows the settings card but not the Open onboarding button opening the gateway wizard; add redacted screenshots, a recording, terminal output, or logs for that flow before merge. 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. The attached screenshot shows the settings card but not the Open onboarding button opening the gateway wizard; add redacted screenshots, a recording, terminal output, or logs for that flow before merge.
Evidence reviewed

What I checked:

Likely related people:

  • ranjeshj: Authored the merged SetupEngine redesign and related setup-window/gateway wizard behavior that this PR builds on. (role: setup feature owner; confidence: high; commits: cefce3952ab1; files: src/OpenClaw.SetupEngine.UI/SetupWindow.xaml.cs, src/OpenClaw.SetupEngine.UI/Pages/ProgressPage.xaml.cs, src/OpenClaw.Tray.WinUI/App.xaml.cs)
  • christineyan4: Authored the merged localization pass that established the five-locale resource pattern and invariant/deferred validation now failing in this PR. (role: localization owner; confidence: medium; commits: 85445c78066b; files: src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw, tests/OpenClaw.Tray.Tests/LocalizationValidationTests.cs)
  • bkudiess: Current-main history includes a recent merged wizard option-value fix in the setup wizard area, so this author has adjacent domain history beyond this PR. (role: recent adjacent contributor; confidence: medium; commits: b90ded9a5eea; files: src/OpenClaw.SetupEngine.UI/Pages/WizardPage.xaml.cs, src/OpenClaw.SetupEngine/WizardAnswerBuilder.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. merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jun 16, 2026
…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>
@bkudiess

Copy link
Copy Markdown
Collaborator Author

Thanks for the review. Addressed the blockers in 94065368:

[P1] Don't navigate an active setup run to the wizard (App.xaml.cs)

  • ShowGatewayWizardAsync now goes through a new EnsureSetupWindowAsync helper that reports whether the setup window was newly created.
  • It only calls NavigateToWizard() for a freshly-created window. If a setup window is already open (which may be mid-install on ProgressPage, whose Unloaded handler cancels the running pipeline), it's just brought to the front — never navigated away. So the button can no longer cancel an in-progress WSL install.
  • Added a contract assertion (AppRefactorContractTests) locking in the EnsureSetupWindowAsync + if (!createdNew) guard.

[P2] Invariant header localization failure (LocalizationValidationTests)

  • Registered SettingsPage_OnboardWizard_Header.Text as an invariant key. "OpenClaw Onboard" is a product/feature name kept identical across locales (the card's description and button are translated), matching the existing pattern for brand names like Tailscale/ElevenLabs.

Validation

  • ./build.ps1
  • OpenClaw.Shared.Tests ✅ Failed: 0, Passed: 2211
  • OpenClaw.Tray.Tests ✅ Failed: 0, Passed: 1025 (includes LocalizationValidationTests and AppRefactorContractTests)

Proof screenshot of the card is attached to the PR.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 16, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@ranjeshj

Copy link
Copy Markdown
Collaborator

Closed as superseded by #780, which includes this change plus conflict-resolution, validation, localization, and review fixes.

@ranjeshj ranjeshj closed this Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants