Skip to content

Windows Manager: Updates page and staged package upgrade workflow #4351

Description

@exzile

Feature request

Add an Updates page to the Windows OVMS Manager that lets users discover when a newer OVMS package is available and apply it through a safe, validated, recoverable upgrade — without manually locating release assets, unzipping, or editing environment variables.

This complements the standalone Windows installer/Manager (see #4347) and is implemented in PR #4350.

Motivation

On Windows, OVMS is distributed as a portable ovms.zip payload. Today, updating means: find the right release asset, download it, stop the server, unzip over the install, fix up environment/config, and restart — error-prone and easy to get into a half-upgraded, non-booting state. Because OVMS ships as a version-matched stack (ovms.exe + OpenVINO runtime + GenAI + tokenizers + Python), mixing individual DLLs across releases is a common failure mode. A guided, all-or-nothing upgrade flow removes that risk.

Components tracked

The Updates page reports installed vs. latest for the package as a matched set:

  • Base package (the OVMS Windows payload / install marker version)
  • OpenVINO Model Server (ovms.exe --version)
  • OpenVINO GenAI backend (bundled GenAI runtime version)

Versions are read from the local install (install.json marker + ovms.exe --version) and compared against release metadata for the matching package variant (python_on / python_off).

Expected behavior

Update check

  • One "Check for updates" action checks all components together (they move as one matched package, not independently).
  • Show, per component: installed version, latest compatible version, and a state — Up to date / Update available / Cannot check (offline/metadata error).
  • Only surface an Install/Upgrade action when a strictly newer, variant-compatible package exists.
  • Provide release-notes links for Model Server and GenAI.
  • Update checks are explicit/manual by default; periodic checks are opt-in (never auto-install).

Staged, validated upgrade (implemented in packaging/windows/scripts/upgrade-package.ps1)

  1. Stop the Manager-owned ovms.exe (or the service, in service mode).
  2. Download the matching package to %LOCALAPPDATA%\OVMS\packages.
  3. Verify the download (checksum/size) and that required files are present.
  4. Extract to a staging dir; run staged ovms.exe --version as a smoke test.
  5. Back up the current install to %LOCALAPPDATA%\OVMS\packages\backup\<version>.
  6. Replace the install files in-place; preserve user data under %LOCALAPPDATA%\OVMS (settings, models, logs).
  7. Re-run configuration/marker update; restart the server if it was running.
  8. Run a health check; roll back from backup if version or health validation fails.

UI (Updates tab)

  • A row per component (Base package / Model Server / GenAI) with installed version, latest version, status badge, and a release-notes link.
  • A single "Check for updates" button and a contextual "Install update" button that appears only when an update is available.
  • Progress and result surfaced inline (checking / downloading / verifying / upgrading / rolled back), with errors shown clearly.
  • Never mixes DLLs from different releases — the package is the unit of upgrade.

Safety / non-goals

  • No silent auto-install; user confirms before download and before applying.
  • Version + variant must match the installed stack, or the action is blocked.
  • User data (%LOCALAPPDATA%\OVMS) is preserved across upgrades.
  • Failed upgrades restore the previous working package from backup.
  • Out of scope for the first version: delta/patch updates, background auto-update, and updating the Manager app itself (tracked separately).

Acceptance criteria

  • Updates page shows accurate installed and latest versions for all three components.
  • A single check covers all components and reports the correct state.
  • Install action appears only when a newer, variant-compatible package is available.
  • Release-notes links open for Model Server and GenAI.
  • Upgrade runs the staged download → verify → back up → replace → validate → reconfigure flow.
  • Settings, models, and logs are preserved across an upgrade.
  • A failed/invalid upgrade rolls back to the previous working install.
  • Offline / metadata-unavailable is handled gracefully (no crash, clear message).

Value

Gives Windows Manager users a clear, guided, and reversible way to keep OVMS current, matching the local-desktop experience of tools like Ollama, while preserving OVMS's version-matched-stack guarantees.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions