Updating
A banner appears, you press it, the app replaces itself and restarts. That channel is macOS only — on Windows and Linux nothing is offered, and nothing says so.
DeckSpace updates itself in place on macOS. Nothing installs without a click. This page covers what the app checks, what you see, how to read your version, and the one failure mode you should know about: when the updater stops working, it stops quietly.
How a new version reaches you
The app fetches a small signed manifest from https://deckspace.dev/deckspace/updates/latest.json. The manifest names the newest version and, per platform, a download URL and a signature. If its version is newer than yours, an update is available.
- DeckSpace fetches the manifest on the schedule below.
- If a newer version exists for your platform, the Update now banner appears at the top of the window.
- You press Update now. The app downloads the archive with a progress bar.
- The signature is checked against a public key compiled into the app. A download that does not verify is not installed.
- The app replaces itself and relaunches.
There is no silent or background install. The download does not start until you press the button, and the only thing that happens without you is the check itself.
When it checks
| Trigger | When |
|---|---|
| After launch | 15 seconds after the app starts |
| On a timer | every 4 hours while the app runs |
| On window focus | each time the window regains focus |
| Rate floor | automatic checks run at most once every 30 minutes |
The focus trigger exists because a deck can sit open for weeks. A launch-only check would never fire on a machine that is never restarted.
The rate floor is per process, so it resets when you quit and reopen. Relaunching DeckSpace is the closest thing to a manual check — see below for why that matters.
What the banner does
The banner reads DeckSpace x.y.z is available. and carries two controls.
| Control | What happens |
|---|---|
| Update now | Downloads, verifies, installs, relaunches. The banner turns into a progress bar. |
| Later | Hides the banner. The next check re-offers the same update — it is dismissed, not declined. |
During the install the banner shows Downloading update… N%, then Restarting…. If the server does not report a file size, the percentage is replaced by Installing… and an indeterminate bar — that is a missing content length, not a stall.
If the install fails, you get a toast reading Update failed: plus the underlying error, and the banner returns to its Update now state so you can retry.
The manifest carries a notes field, but the banner renders a fixed line instead of it. To read what changed before you install, open the changelog.
One macOS download, both chips
Since 3.6.0 the macOS release is a universal build. The manifest lists two platform keys, and both point at the same archive with the same signature.
| Your Mac | Platform key it asks for | What the manifest serves |
|---|---|---|
| Apple Silicon | darwin-aarch64 | the universal archive |
| Intel | darwin-x86_64 | the same universal archive |
Releases up to and including 3.5.5 were x86_64-only, so Apple Silicon ran the whole app through Rosetta. From 3.6.0 the app itself runs natively.
The DeckTest engine shipped inside the app is a PyInstaller build and no arm64 build of it exists. On Apple Silicon the app is native but that one sidecar asks for Rosetta. It is disclosed in the release notes and will stay disclosed until a real arm64 engine exists.
The minimum supported macOS is 12.0.
The update channel is macOS only
This is not a rollout in progress that you can wait out on your current machine. Today the live manifest contains macOS entries and nothing else.
| Platform | In-app updates | How you get a new version |
|---|---|---|
| macOS | yes banner + one click | automatic offer, manual install |
| Windows | not published | download and reinstall |
| Linux | not published | download and reinstall |
The Windows and Linux builds are produced with updater artifacts switched off, so there is nothing signed for the manifest to point at. The publishing tool already has a Windows arm; Linux is not implemented at all. Neither is in the live manifest.
The check is not gated by platform. A Windows or Linux install contacts the same URL every four hours, finds no entry for its platform, and shows you nothing — no banner, no error, no notice that this channel does not cover you. It looks identical to being up to date. It is not.
Checking your version
The installed version is the chip beside the DeckSpace wordmark in the top-left of the window, for example v3.6.0. It is read from the installed application bundle, so it is what you are actually running, not what you meant to install.
The newest release the updater will ever offer you is the version field of the manifest. You can read it without the app:
curl -s https://deckspace.dev/deckspace/updates/latest.json \ | python3 -c 'import json,sys; m=json.load(sys.stdin); print(m["version"], sorted(m["platforms"]))'
That prints the version and the platform keys it carries. If your platform key is not in that list, your app will not be offered anything, however long you wait.
If the app stops offering updates
Read this section carefully, because the failure is designed to be invisible. A check that cannot reach the endpoint is silent, and a manifest with no entry for your platform is also silent. In both cases DeckSpace behaves exactly as it does when you are on the newest version.
| Step | What to do | What it rules out |
|---|---|---|
| 1 | Quit and reopen DeckSpace, then wait 20 seconds. | A fresh process checks 15 seconds in with no rate floor to clear. |
| 2 | Run the curl above and compare with your version chip. | Tells you whether there is anything newer at all. |
| 3 | Confirm your platform key is in that list. | A missing key means that release published nothing for your architecture. |
| 4 | Open https://deckspace.dev/deckspace/updates/latest.json in a browser on the same machine. | A network, DNS or proxy problem that the app swallows without a word. |
| 5 | Install a fresh build over the top. | Everything else. |
To get a fresh build, use the re-send page with the email you subscribed with. It mails your personal download link. That link is deliberately not version-numbered, so the same link keeps working release after release — it always serves the current build.
Your workspaces, settings and licence live in the macOS application data directory, not inside DeckSpace.app. Replacing the app does not touch opxspace.db or your activation.
What is not in the app
Three things a competent user goes looking for and will not find. They are absent, not hidden.
| What you might expect | Reality |
|---|---|
| A “Check for updates” menu item or button | Not present. The code has a manual check path that reports its result — including You’re on the latest version. and an error toast when it fails — but nothing in the interface calls it. Relaunching the app is the workaround. |
| A settings toggle for background checks | Not present. The setting exists and is read once at startup, but there is no control that writes it, so checks cannot be turned off from the interface. |
| Release notes in the update prompt | Not present. Read the changelog before installing. |
If an update goes wrong or the app will not start after one, Troubleshooting is the next page.