Repository navigation
fix: keep Gateway setup validation errors visible - #1796
Conversation
Extract the independently reviewed reliability seam without the held native timeout consumer. No change to executor releases, package pins or sandbox enforcement.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. What this changesMoves Gateway connection results outside the scrolling form so validation errors remain visible above navigation. Example: In a 720 × 640 DIP setup window, press Check connection with no setup code or shared token, then retry.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: current main still has the scrolling-error layout, and this PR provides a focused, visibly proven fix with no actionable findings; the previous draft hold is resolved. Priority: P2 Before mergeNone. FindingsNone. Tests
Agent review detailsHow this fits togetherThe native connection page receives connection drafts and host results, renders localized feedback, and advances only through the existing committed-connection callback. flowchart TD
A[Welcome or Advanced setup] --> B[Native connection page]
B --> C[Existing connection host]
C --> D[Validation or connection result]
D --> E[Persistent result bar]
E --> F[Visible navigation actions]
Technical reviewBest possible solution: Land the focused result-bar relocation with its rendering coverage and supplied normal-entry proof. Do we have a high-confidence way to reproduce the issue? Current-main XAML places the result after the editor inside the scrolling region, establishing the clipping path; no current-main runtime reproduction was run. Is this the best way to solve the issue? Relocating the existing result control fixes its layout owner directly while preserving messages, live announcements, navigation, and connection gates. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 48cb8a18fdb5. Provenance checked
TestingProof path: shipped entry point. SecurityNone. EvidenceWhat I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (3 earlier review cycles)Reviewed October 27, 2026, 4:54 PM ET / 20:54 UTC (Revision 4). |
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
Confirming the symptom this PR fixes, on Hub v2026.9.8-1 (Windows 11 Pro 26300.9457, over RDP). Steps: Setup → Connect to a gateway → enter an existing Gateway → Check connection with credentials it rejects. Observed: maximized (2560×1440), the error is visible above the navigation. In the restored window (693×803), the SSH section and the error banner fall below the fold. The only cue is a thin scroll indicator, so the failed check looks silent. I haven't tested this PR's head yet. |
|
Tested this PR's head ( |





What Problem This Solves
Fixes: onboarding connection failures can leave users without the visible feedback needed to understand why setup did not complete.
User Impact
User impact: Users get an actionable visible setup failure instead of a silent unsuccessful transition. Existing provider, pairing and authorization gates remain in place.
Current-head hosted review passed: Overall diamond lobster (5/6), Proof diamond lobster (5/6), Patch diamond lobster (5/6). The inspected normal-flow screenshots and retry diagnostics are linked below.
Why This Change Was Made
Surface the owning setup failure through existing state and localized presentation rather than manufacturing successful completion or bypassing the normal setup workflow.
Requested-capture qualification now verifies a non-default private desktop, exact owning process, visible/non-minimized window, display-contained geometry and the existing nonuniform-pixel threshold. It moves only that owned private window from its fixture offscreen position and records failed-attempt metadata before rejecting a blank frame. It never switches the shared input desktop or substitutes a rendered image.
Landing coordination: the independent onboarding drafts share
MountedControlCapture.csat one canonical test-helper path. Neither requires the other to build. Whichever lands second must rebase and preserve this split's geometry diagnostics rather than diverging or duplicating the helper.Evidence
Current independent head:
fed3ec72294497568756fcbf50ca9888f156e45e, based on main2b7cfce17bb496ec5d8f0c563fb71ebb46e015fa, with published Microsoft.Mxc.Sdk 1.0.0 unchanged. Current-head CI has 11 successful checks, zero failed checks at refresh.The missing real-pixel proof is now collected. A fresh normal source-built application, not the installed Hub, used a throwaway profile on an explicitly authorized desktop slot. No fixture mode, setup preview, mounted test host, credential, install/provisioning or port 18789 was used. Normal Welcome -> Existing Gateway -> Next -> Check produced the real missing-credentials validation error; a separate second Check invoked the same retry action. No successful authenticated connection is claimed.
Both frames show the error above usable navigation in the actual 720 x 640 DIP window (1080 x 960 physical pixels at 150% scaling). The error bottom is 66 physical pixels above the navigation buttons. The endpoint and setup-code regions are blacked out offline; no other pixels were changed.
Public first-frame UIA diagnostics, retry UIA diagnostics, image/geometry provenance manifest and capture qualification are inspectable. Both public image URLs returned HTTP200 and byte-identical sanitized files. The source AppVersion embeds the full fed3 head.
Change Type
Scope
winnodeRequired proof pools
windows-winui-interactive: actual onboarding failure and recovery presentation.windows-wsl-gateway-e2e: setup admission, operator/node readiness and pairing failure surfaces.Validation
Existing exact-source mandatory closeout is unchanged:
.\build.ps1dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restoredotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restoreNativeEditor_FailureRemainsVisibleWithoutScrolling, both routesThe current app was rebuilt with
-r win-x64 -p:Platform=x64 -p:DevBuild=false.Visible proof completed 2026-10-21T21:39:34Z; exact app PID 53640 exited by
21:39:37.4729583Z and was independently verified absent. The desktop was released
immediately, before redaction/publication. The controller used process-local
quiet error-mode/WER scopes. Launch used CreateNoWindow, inherited error-mode
flags and no shell error dialog, exact PID/path/start checks and an explicit
90-second expiry gate. Capture was PrintWindow against the owned
window HWND only, with strict nonblank qualification, never a desktop capture.
No authenticated Gateway was bound or persisted. Next remains enabled by design
because it performs its own check before saving; these images do not claim that
Next completed or that invalid credentials were accepted. Historic combined63a
onboarding remains separate supporting history.
Real Behavior Proof
fed3ec72294497568756fcbf50ca9888f156e45e; the app's embedded version includes this complete SHA.Actual copied UIA state after both invocations:
{ "Message": "Enter a setup code or shared token for this gateway.", "ResultBar": {"offscreen": false, "bottomInWindow": 799}, "BackButton": {"enabled": true, "offscreen": false, "topInWindow": 865}, "CheckButton": {"enabled": true, "offscreen": false, "topInWindow": 865}, "NextButton": {"enabled": true, "offscreen": false, "topInWindow": 865}, "visibleGapPixels": 66 }Yes: public sanitized image URLs fetched and hash-checked; only window pixels captured, with endpoint/code input regions redacted. Raw originals/profile data remain private.Security Impact
NoNoNoNoNoYes, explain the risk and mitigation: No new permissions, credential-handling contract, network endpoint or execution capability. Failures remain failures; presentation does not authorize or silently complete setup.Compatibility and Migration
Yes. Existing authenticated connection, consent and ownership contracts remain authoritative.Nopersistent source-contract change.NoReview Conversations
Current-head hosted review passed the readiness gate. No merge is authorized.