(error, hint)
| 25 | } |
| 26 | |
| 27 | function showError(error, hint) { |
| 28 | for (const el of steps) { |
| 29 | if (el.classList.contains("active")) { |
| 30 | el.classList.replace("active", "error"); |
| 31 | } |
| 32 | } |
| 33 | setStatus("Setup could not complete."); |
| 34 | const msg = String(error?.message ?? error); |
| 35 | detailsEl.textContent = hint ? `${msg}\n\n→ ${hint}` : msg; |
| 36 | detailsEl.classList.remove("hidden"); |
| 37 | retryBtn.classList.remove("hidden"); |
| 38 | } |
| 39 | |
| 40 | async function runStep(name, fn) { |
| 41 | setStep(name, "active"); |