---
epic: 8
story: 8.8
title: "Auto-Update"
status: draft
---

## Epic 8 — Windows App (Rust + iced)
**Goal:** Fast, lightweight native Windows app -- single .exe, no runtime dependencies.

### Story 8.8: Auto-Update

As a **Windows user**,
I want CalcPad to check for updates automatically and apply them easily,
So that I always have the latest features and bug fixes without manual effort.

**Acceptance Criteria:**

**Given** the app is running and connected to the internet
**When** the app performs its periodic update check (e.g., on launch and every 24 hours)
**Then** it queries the update server for the latest version

**Given** a new version is available
**When** the update check completes
**Then** the `.msi` installer is downloaded in the background without interrupting the user

**Given** the update has been downloaded
**When** the download completes
**Then** the user is prompted with a non-blocking notification: "Update available. Restart to apply?"

**Given** the user clicks "Restart to apply"
**When** the update process starts
**Then** CalcPad saves current state, launches the installer, and closes
**And** the installer completes and relaunches CalcPad

**Given** an update has been downloaded
**When** the binary is verified
**Then** its Authenticode signature is checked against the CalcPad signing certificate before installation proceeds

**Given** the signature verification fails
**When** the update process checks the binary
**Then** the update is rejected, the downloaded file is deleted, and the user is warned about a potential integrity issue

**Given** the user declines the update
**When** the notification is dismissed
**Then** the user is not prompted again until the next version is available (or a configurable reminder period passes)
