Pull requests / #3578

#3578 [GUI] Keep Recovered Update Interruptions In History

open · @medking82 · 0 comentarios · En GitHub

Setup & installAMD / HIPNVIDIA / CUDADocumentationWindows

Descripción

## Problem and result

After the Host restarts during an App update, a saved job becomes `error` with “The host restarted before completion…” even when a later App update completes successfully. Engine Diagnostics and About continue to show the old interruption as a current failure. This was observed on Windows with App 0.2.1 / Engine 0.1.46: an interrupted `update-strata` job was followed by two completed `update-strata` jobs, while both Settings views still displayed the warning.

The views now show a confirmed recovered interruption as expandable **Recovered Update History**. The original job, error text and details remain readable; job persistence, updater operations and logs are untouched. Only that exact restart interruption followed by a strictly later `done` update of the same component qualifies. Running/cancelled retries, different components, ordinary failures, missing/invalid times and newer failures remain alerts. No new network requests are added when Settings opens.

### Validation

Windows x64, Node v24.18.0, based on main `9de04cd44e927a9a3df6bbc0e94fc1be8b844ba4`. Commands run in `apps/host`, omitting the windowless runner.

**Passed:**

- Safe failing reproduction before the fix: actual `NativeOperations` and `SettingsUpdates` server-rendered with synthetic interrupted/later-completed jobs; both retained the obsolete alert (2 expected failures).
- `node --test tests/native-update-recovery.test.mjs tests/update-cache.test.mjs tests/ui4-fixes.test.mjs` — 28 passed, 0 failed after the fix. Tests render the real components, preserve the input jobs and reject incorrect recovery cases. Existing cached-check/no-network-on-open and Diagnostics controls regressions pass.
- `npm run typecheck` and `npm run build` — passed. Vite reports the existing large-chunk advisory; no build failure.
- Actual browser rendering of the built changed UI using disposable anonymous HTTP fixtures: Engine and About show recovered history without an active alert; expanding it exposes the original interruption. The fixture has no Host/model/updater backend; every mutation returns 501. `git diff --check` passed.

**Failed / Resolved:** The first anonymous browser fixture used an array instead of `{fonts: []}` for `/api/fonts`, causing the Appearance screen to fail. Correcting the fixture envelope restored rendering; product code was not changed for it. No unresolved test failure remains.

**Not Run / Limits:** A real installer restart/update, native desktop shell interaction, model download/load/inference or GPU workload. Job recovery is established from existing native job records; this does not certify a completed install or repair an unsuccessful update. CUDA/HIP/SYCL/Metal builds are not applicable: no backend files are touched. Unknown historical error strings and rollback failures retain existing alert behavior.

### Anonymous UI Example

Synthetic job IDs/timestamps and no accounts, private paths, logs, hardware identity or real conversations. This is a browser capture of the changed product UI, not evidence of installer execution.

![Recovered Update History](https://raw.githubusercontent.com/medking82/Strata/bd8a6770b0fe5ede2584753458fb711113597223/docs/media/recovered-update-history.png)

En el sitio

Enlaces a install, modelos, releases.