|
| 1 | +# Setup wizard UX refresh — screens & accessibility proof |
| 2 | + |
| 3 | +Screenshots captured from the live isolated dev app (`OPENCLAW_FORCE_ONBOARDING=1`, |
| 4 | +`run-app-local.ps1 -NoBuild -Isolated`) walking the full gateway setup + onboard flow. |
| 5 | +Accessibility was scanned per-screen with a standalone Axe.Windows (v2.4.1) scanner |
| 6 | +against the live process — the same engine Accessibility Insights uses. |
| 7 | + |
| 8 | +## Screens |
| 9 | + |
| 10 | +| # | Screen | Notes | |
| 11 | +|---|--------|-------| |
| 12 | +| 01 | Welcome + security notice | Selectable RichTextBlock body | |
| 13 | +| 02 | Setup mode | Single-selection `ListView` (ItemContainer), first item selected by default | |
| 14 | +| 03 | Config handling | Single-selection list, standardized bottom bar | |
| 15 | +| 04 | Model/auth provider (collapsed) | "Skip for now" pinned to top, subtle **More ▾** expander | |
| 16 | +| 05 | Model/auth provider (expanded) | One-click expand keeps "Skip for now"; full provider list | |
| 17 | +| 06 | Auth method | Single-selection list | |
| 18 | +| 07 | Text input step | API-key entry | |
| 19 | +| 08 | Capabilities | Radio group with accessible names (a11y fix) | |
| 20 | + |
| 21 | +Bottom action bar across steps: standard **Back** button, `AccentButtonStyle` |
| 22 | +primary (Continue), subtle **More options** / **Skip** / **Start over** controls. |
| 23 | + |
| 24 | +## Accessibility results (Axe.Windows, actionable violations) |
| 25 | + |
| 26 | +All refactored surfaces flagged `NameNotNull` (focusable element with a null |
| 27 | +accessible Name) before the fix; every one is 0 after. |
| 28 | + |
| 29 | +| Screen | Before | After | |
| 30 | +|--------|:------:|:-----:| |
| 31 | +| Capabilities radio group | 3 | 0 | |
| 32 | +| Setup mode ListView | 2 | 0 | |
| 33 | +| Provider list (collapsed) | 6 | 0 | |
| 34 | +| Provider list (expanded) | 7 | 0 | |
| 35 | +| Welcome / Confirm / Auth / Text input | 0 | 0 | |
| 36 | + |
| 37 | +### Fixes |
| 38 | +- `WizardPage` option lists: each `ListViewItem` (and multiselect `CheckBox`) now |
| 39 | + gets `AutomationProperties.Name` = label + hint via a shared `CreateOptionItem` |
| 40 | + helper. |
| 41 | +- `CapabilitiesPage`: the three profile radio buttons (Read-only / Standard / |
| 42 | + Full access) now set `AutomationProperties.Name`. |
| 43 | + |
| 44 | +### Known framework limitation (not fixed) |
| 45 | +Inline `Hyperlink` elements inside a `RichTextBlock` (security disclaimer link) |
| 46 | +report a null `BoundingRectangle` to UIA when scrolled out of view. This is a |
| 47 | +WinUI framework behavior for inline hyperlinks, not a control we construct. |
0 commit comments