# Build 90 hotfix — onboarding + install progress UI — 20260606-0818

## Identitet
| Felt | Værdi |
|------|-------|
| Produkt | Ninja Nexus |
| Build | 90 |
| Version | `0.1.0-installer2` |
| Kanal | poc |
| Branch | `integration/platform-sprint-before-phase1` |
| CDN | https://nexus.ninjakernen.info/downloads/latest.json |

## Release note
Fix first-run setup input and organization selection in installer/onboarding. Fix install progress UI (Step 6) with real status per row, global progress, events panel, and timeout handling.

## Root cause (onboarding)
| Symptom | Årsag | Fix |
|---------|-------|-----|
| ComboBox kan ikke åbnes | Custom `ComboBox`-template havde visuel `Border` over `ToggleButton` (blokerede hit-test) | `Border` → `IsHitTestVisible=False`; `ToggleButton` stretch ovenpå |
| Tekstfelter føltes døde | Overlappende step-panels i samme Grid-celle | Dedikeret Grid med rækker for titel + step-indhold |
| Shell first-run samme problem | Identisk ComboBox-template i `NexusDesignTokens.xaml` | Samme hit-test fix + TwoWay bindings |

## Step 5/6 install progress (Installér-trin)
| Krav | Implementering |
|------|----------------|
| Statusmodel | `InstallStepStatus`: Pending, Running, Completed, Failed, Blocked, Skipped, Retrying |
| Event-system | `InstallProgressCoordinator` + `InstallProgressEvent` (max 10 seneste) |
| Global progress | ProgressBar, "Installerer X af Y", nuværende handling, status-pill |
| Per-row visuel | Farvekodede rækker, status-pill, elapsed timer, pulse på aktiv step |
| Timeout | 10 min per step via `WaitAsync`; hung-advarsel i UI |
| Fil-lås | Detekteres i prerequisite progress → `FileLock` event |
| Log | Eksisterende collapsible log + seneste hændelser panel (ingen secrets) |

## Artifact
| Felt | Værdi |
|------|-------|
| packageUrl | https://nexus.ninjakernen.info/downloads/releases/0.1.0-installer2/nexus-shell-poc.zip |
| sha256 | `397c465c71b730a335ade52137b4567deb647ad29a7d1eb1e305d030baca94d6` |
| sizeBytes | 15351967 |
| installerUrl | https://nexus.ninjakernen.info/downloads/NexusSetup.exe |
| installerSha256 | (se latest.json efter publish) |
| HTTP latest.json | 200 |
| sha256Match | true |

## Tests
| Suite | Resultat |
|-------|----------|
| NexusShell.Tests | 33/33 PASS |
| NexusInstaller.Tests | 21/21 PASS (inkl. InstallProgressModelTests, InstallProgressCoordinatorTests) |

## Lokal POC-test (C:\NinjaNexusPOC)
| Check | Resultat |
|-------|----------|
| Deploy build 90 zip | PASS — VERSION.txt = 0.1.0-installer2 |
| VERIFY-NEXUS-POC.ps1 | PASS (8/8 required) |
| Installer evidence capture (identity step) | PASS — `installer-identity.png` |
| Installer evidence capture (install progress) | PASS — `installer-installing.png`, `installer-complete.png` |
| Org/bruger/enhed input (UI fix verificeret via template + evidence) | PASS |
| Remote latest.json → build 90 | PASS |

## Screenshots
- `docs/evidence/nexus-installer-hardening-v1/build-90-screenshots/`

## Receipt
- `docs/evidence/nexus-auto-update-readiness-v1/publish-receipt-build-90.json`

## Builds 87/88/89
Uændret i git-evidence; CDN historiske release-stier bevaret.
