SilverMetal Windows: first-boot experience & branding #6
Reference in New Issue
Block a user
Delete Branch "feat/first-boot-branding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the declarative branding build + hardened onboarding kiosk + branded first-boot presentation for SilverMetal Windows. Fills the empty
Invoke-Brand(M4 branding) stub. Spec:windows/docs/superpowers/specs/2026-06-09-first-boot-branding-design.md; plan:windows/docs/superpowers/plans/2026-06-09-first-boot-branding.md.What's in here (3 components)
A — Declarative branding (
windows/branding/, shared dual-mode)Apply-Branding.ps1 -Mode Offline|-Onlinebakes 4 layers into the offline WIM hives (or a live system for self-apply): OEM About (OEMInformation), lock screen (PersonalizationCSP+NoChangingLockScreen, locked), desktop wallpaper/dark/cyan-accent into the default-user hive (changeable), and the BitLocker pre-boot recovery message (Policies\Microsoft\FVE).build.ps1Invoke-ServiceWim(runs while the WIM is mounted). Pester unit tests + a CI step.B — Hardened kiosk (build-only, the one-time
sm-bootstrapsession)Configure-Kiosk.ps1(run fromSetupComplete.cmdas SYSTEM): Shell Launcher v2 sets thesm-bootstrapshell to an elevating launcher for the Welcome app (no Explorer → no taskbar/Start); Keyboard Filter + escape policies block Win/Win+L/Ctrl+Esc/Task Manager/lock.build.ps1. Theautounattend.xmlFirstLogonCommandslaunch is removed (Shell Launcher now launches the app).RevertKioskAsynctears the kiosk down on wizard success (beforesm-bootstrapdeletion), so the real user gets a normal branded desktop.C — First-boot presentation (MAUI Welcome app)
WindowExtensions.ApplyKioskChrome).SilverOS.Welcome.UI/Routes.razor) now renders as a centered frosted glass card on the existing void wall — a scopedapp.css.wizardchange. The app already shipped the on-brand "Mercury" palette (#00d4ff/#00e5a0/void), so this is additive framing, not a rebrand.Naming / content decisions
User-facing surfaces say "SilverMetal Windows" (the Enhanced line is hardened Windows, not our own OS). Support URL
https://silverlabs.uk; generic OEM Model; minimal URL-only BitLocker recovery message. Renaming the internalSilverOS.*app/namespace/paths is a deliberate out-of-scope follow-up.Honest limitations / follow-ups
FVErecovery value names,PersonalizationCSPreliability, and DWM accent byte-order/rendering are the kind of thing the offline registry can write but only a real image confirms — verify in the VM e2e before a SKU batch.windows/branding/assets/) until final brand identity lands.Verification
reg loadtest runs in CI as SYSTEM).autounattend.xmlvalid; build.ps1 ordering verified (branding runs mounted, no mount leak).🤖 Generated with Claude Code