fix(welcome): harden kiosk chrome + WebView2 diagnostics (4th e2e — blank wizard) #10

Merged
SilverLABS merged 2 commits from fix/welcome-blank-instrument into main 2026-06-09 17:18:09 +00:00
Owner

4th VM e2e — the kiosk now fully works mechanically: Shell Launcher engages, the launcher runs (no error), and the Welcome app launches fullscreen as the kiosk shell. But the Blazor wizard renders blank, and the kiosk chrome didn't apply (title bar still shows). The app process is alive (no crash in the event log) and the WebView2 user-data folder is empty (WebView2 never initialized). WebView2 Runtime itself is present on the image (EdgeWebView/Application/149.x).

Most likely: ApplyKioskChrome threw during HandlerChanged and stalled startup before the WebView came up. Since the app doesn't crash, there's nothing to read — so this PR hardens + instruments:

  1. ApplyKioskChrome defensive: null-guard HWND/AppWindow, use the FullScreen presenter only (borderless by nature), return a bool; wrapped in try/catch at the call site so a chrome failure can never stall app/WebView startup.
  2. Always-on log C:\ProgramData\SilverMetal\welcome.log: app ctor, CreateWindow, chrome result, unhandled exceptions, and the WebView2 lifecycle (BlazorWebViewInitialized, NavigationCompleted, ProcessFailed). If the wizard is still blank next run, the log pinpoints whether WebView2 env creation failed.

Build clean, 0 warnings. Next: rebuild → restage → 5th VM run; read the log off the disk to confirm root cause (and quite possibly the harden alone fixes the blank).

🤖 Generated with Claude Code

4th VM e2e — the kiosk now fully works mechanically: Shell Launcher engages, the launcher runs (no error), and the Welcome app launches fullscreen as the kiosk shell. **But the Blazor wizard renders blank**, and the kiosk chrome didn't apply (title bar still shows). The app process is alive (no crash in the event log) and the WebView2 user-data folder is empty (WebView2 never initialized). WebView2 Runtime itself **is** present on the image (`EdgeWebView/Application/149.x`). Most likely: `ApplyKioskChrome` threw during `HandlerChanged` and stalled startup before the WebView came up. Since the app doesn't crash, there's nothing to read — so this PR hardens + instruments: 1. **`ApplyKioskChrome` defensive**: null-guard HWND/AppWindow, use the FullScreen presenter only (borderless by nature), return a bool; **wrapped in try/catch at the call site** so a chrome failure can never stall app/WebView startup. 2. **Always-on log** `C:\ProgramData\SilverMetal\welcome.log`: app ctor, CreateWindow, chrome result, unhandled exceptions, and the WebView2 lifecycle (`BlazorWebViewInitialized`, `NavigationCompleted`, `ProcessFailed`). If the wizard is still blank next run, the log pinpoints whether WebView2 env creation failed. Build clean, 0 warnings. Next: rebuild → restage → 5th VM run; read the log off the disk to confirm root cause (and quite possibly the harden alone fixes the blank). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
SilverLABS added 1 commit 2026-06-09 17:09:29 +00:00
fix(welcome): harden kiosk chrome + add startup/WebView2 diagnostics
All checks were successful
Build SilverMetal Enhanced - Windows ISO / build (pull_request) Successful in 5m29s
159cea0019
4th VM e2e: kiosk shell engages + the app launches fullscreen, but the Blazor
wizard renders BLANK and the kiosk chrome didn't apply (title bar present) — the
app didn't crash, so there's no log to read. Two changes:

1) ApplyKioskChrome made defensive (null-guard HWND/AppWindow, FullScreen presenter
   only, returns bool) and wrapped in try/catch at the call site, so a chrome
   failure can never stall app/WebView startup (the likely cause of the blank).
2) Always-on file log at C:\ProgramData\SilverMetal\welcome.log: app ctor, window
   create, chrome result, unhandled exceptions, and the BlazorWebView/WebView2
   lifecycle (Initialized, NavigationCompleted, ProcessFailed). If the wizard is
   still blank next run, this pinpoints whether WebView2 env creation failed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SilverLABS added 1 commit 2026-06-09 17:12:46 +00:00
fix(kiosk): re-assert UAC auto-approve online (OOBE resets the offline bake)
All checks were successful
Build SilverMetal Enhanced - Windows ISO / build (pull_request) Successful in 5m6s
d54a5cb8db
4th e2e showed a UAC consent prompt for the unsigned Welcome app — the offline-baked
ConsentPromptBehaviorAdmin=0 is reset by Windows during OOBE. Re-assert it (and
PromptOnSecureDesktop=0) ONLINE in Configure-Kiosk.ps1, which runs right before the
sm-bootstrap autologon, so 'Start-Process -Verb RunAs' elevates silently. RevertKioskAsync
restores SECURE UAC (ConsentPromptBehaviorAdmin=2, PromptOnSecureDesktop=1) for the real user.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SilverLABS merged commit 3c072a4edb into main 2026-06-09 17:18:09 +00:00
SilverLABS deleted branch fix/welcome-blank-instrument 2026-06-09 17:18:09 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SilverLABS/SilverMetal#10