Parent
#148
What to build
ADR-0010 bundle picker. 3 states: pick / confirm / progress.
Pick state — welcome hero + detected-hardware line (Detected: 128 GB RAM · Strix Halo gfx1151 · XDNA2 NPU) + 4 tier cards (Lite 16GB+ ~1GB / Default 32GB+ ~8GB / Pro 64GB+ ~38GB / Max 100GB+ ~75GB ★recommended) + LMX-Omni kits row (only when host ≥100GB) + Skip ghost btn.
Tier card states: recommended (★) / available / not enough RAM (greyed ≥50% opacity) / installed (chip when re-entered) / gated-no-HF (warning).
Tweak switches grid (BundleGrid) vs matrix (BundleTable).
Confirm state — per-slot install list (slot → model → size → tag) + NPU trio opt-in toggle (separate card) + Notes + [Cancel] [Install hal0-<tier>].
Progress state — per-row download bars (name + repo + pct + done/total + rate + ETA). Per-row inline error form: ✗ failed · error: <reason> · [Retry] [Skip this model]. Copy: "downloads continue in background." Buttons [Open dashboard] [Pause all].
SkipBundleDialog confirms before route-out (seeded slots get Configure btns; picker re-runnable from Settings). Picker reachable at /firstrun post-install with replacement-warning banner.
Banners: re-entered-post-install, RAM-below-Lite, no-hardware-detected, HF_TOKEN-required, disk-full-mid-download, lemond-crashed-during-install.
Acceptance criteria
Blocked by
Parent
#148
What to build
ADR-0010 bundle picker. 3 states: pick / confirm / progress.
Pick state — welcome hero + detected-hardware line (
Detected: 128 GB RAM · Strix Halo gfx1151 · XDNA2 NPU) + 4 tier cards (Lite 16GB+ ~1GB / Default 32GB+ ~8GB / Pro 64GB+ ~38GB / Max 100GB+ ~75GB ★recommended) + LMX-Omni kits row (only when host ≥100GB) + Skip ghost btn.Tier card states:
recommended(★) /available/not enough RAM(greyed ≥50% opacity) /installed(chip when re-entered) /gated-no-HF(warning).Tweak switches grid (
BundleGrid) vs matrix (BundleTable).Confirm state — per-slot install list (slot → model → size → tag) + NPU trio opt-in toggle (separate card) + Notes +
[Cancel] [Install hal0-<tier>].Progress state — per-row download bars (name + repo + pct + done/total + rate + ETA). Per-row inline error form:
✗ failed · error: <reason> · [Retry] [Skip this model]. Copy: "downloads continue in background." Buttons[Open dashboard] [Pause all].SkipBundleDialogconfirms before route-out (seeded slots getConfigurebtns; picker re-runnable from Settings). Picker reachable at/firstrunpost-install with replacement-warning banner.Banners: re-entered-post-install, RAM-below-Lite, no-hardware-detected, HF_TOKEN-required, disk-full-mid-download, lemond-crashed-during-install.
Acceptance criteria
Blocked by