# Updates

> How Hyperclay Local checks for updates, installs new versions in place on macOS, Windows, and Linux, and protects unsaved work before restarting.

Source: https://hyperclaylocal.com/docs/updates/

Hyperclay Local checks `https://local.hyperclay.com/updates/stable` for new releases 10 seconds after launch and every 6 hours after that. Update checks run automatically; there is no manual check button in the menus.

## Restart to install a downloaded update

When your installation can replace itself in place, Hyperclay Local downloads the new release in the background. Once the download is ready, the Home view of the [popover](https://hyperclaylocal.com/docs/popover/) displays a clickable banner:

- **Restart to update to v`<version>`**

Clicking the banner changes its label to **Finishing sync…** and waits for your work to settle before restarting:

1. **Unsaved page edits**: Hyperclay Local checks all open [workspace frames and browser tabs](https://hyperclaylocal.com/docs/guide/workspace/) for unsaved edits. If any edits are still pending, a warning dialog appears saying **Some edits aren't saved yet.** with **Retry** and **Cancel** buttons. Clicking **Cancel** aborts the update and displays **The update was cancelled while saving edits.**
2. **Unsent sync changes**: Hyperclay Local waits up to 30 seconds for sync to finish sending queued changes. If sync is still busy after 30 seconds, the update stops and displays **Sync has unsent changes. Update after it finishes.**

Once all edits are saved and sync is idle, Hyperclay Local shuts down cleanly and installs the new version. If a failure happens after shutdown has started, Hyperclay Local relaunches your current version automatically.

The updater also refuses any update feed older than a version the app has already seen, so a stale cache cannot downgrade your installation.

## How in-place updates work on each platform

- **macOS**: updates in place when the `.app` bundle and its parent folder are writable and the app is not running from a mounted disk image (`/Volumes/`) or Gatekeeper App Translocation (`/AppTranslocation/`). On macOS, a downloaded update is also installed automatically the next time you quit the app.
- **Windows**: the default one-click per-user NSIS installation updates in place and restarts into the new version. A machine-wide installation cannot replace itself in place and offers a download link instead.
- **Linux AppImage**: updates in place when launched from a writable absolute path with update signing keys present. Hyperclay Local verifies the downloaded AppImage against its SHA-512 checksum and cryptographic signature, stages it beside the running file, and swaps it in after the old process exits. It then supervises the new AppImage for 30 seconds: if the new version does not finish starting within 30 seconds, Hyperclay Local stops it, restores the previous `<name>.prev` image, and records the failed version so it is not offered again.

## When an install cannot update in place

An installation cannot replace itself when:

- It is running unpackaged in development mode (`npm run dev` or `npm start`).
- Its application bundle or folder is read-only.
- On macOS, it is running directly from a mounted `.dmg` (`/Volumes/`) or under App Translocation.
- On Windows, a machine-wide (`HKLM`) installation is present or the running executable does not match the per-user install path.
- On Linux, it is not running as a writable AppImage.

In these cases, Hyperclay Local checks the release metadata without downloading the installer in the background, and the popover Home view shows:

- **Update v`<version>` available**

Clicking that banner opens `https://hyperclaylocal.com/` in your default browser so you can download and install the new version manually (see [Platforms and building from source](https://hyperclaylocal.com/docs/platforms/)).
