Updates¶
Helia can tell you when a newer version exists, and for some installs can install it for you. Nothing is installed without your say-so unless you choose automatic mode, and you can turn the whole thing off.
The three modes¶
| Mode | What Helia does | Default |
|---|---|---|
| Notify | Checks once a day (a few seconds after start-up). If there is a newer version it says so: a button in the top bar and a notice. It downloads nothing until you click. | yes |
| Automatic | Checks once a day, downloads the update in the background, and installs it when you restart Helia (Windows installer: when you close it). Only for installs Helia can replace itself, see below. For the others it behaves like notify. | |
| Off | Never contacts the network on its own. You can still press Check for updates or run helia update check yourself. |
Choose the mode on the About page, under Updates, or from a terminal:
helia update config # show the mode and channel
helia update config --mode off # never check on my own
helia update config --mode automatic
helia update config --mode notify # the default
helia update config --channel prerelease # include pre-release versions
The choice is kept in update.conf in the Helia settings folder
(%APPDATA%\helia on Windows, ~/.config/helia on Linux), shared by the app and
the command line. It holds three lines you can edit by hand:
The stable channel carries released versions. Pre-release carries those too, plus pre-release builds. If a settings file was written by a newer Helia than the one you are running, Helia reads what it understands, says so, and does not rewrite the file, so going back to an older Helia never loses newer settings.
Checking now¶
On the About page press Check for updates. If there is one, the page names the version, links to what changed, and offers Download and install (or Download, for installs Helia does not replace itself).
From a terminal:
helia update check # exit code 0: up to date, 10: update available
helia update check --json # the same answer as JSON
helia update apply # shows what will happen and asks first
helia update apply --yes # no question
helia update status # mode, channel, install type, last check
helia update rollback # go back to the version the update replaced
Each of these is a subcommand of helia update; the documentation coverage check, which
lists subcommands by their last word, knows them as helia check, helia apply,
helia status, helia rollback and helia config. The command line never checks by itself; it contacts the update server only when you
run check or apply. Exit codes: 0 success (for check: up to date), 1 failed
(the message says what, why and what to do), 3 apply or rollback was not
confirmed, 10 check found an update, 12 the update details need a newer Helia
to read, so update by hand.
What happens for each kind of install¶
| How Helia is installed | What an update does |
|---|---|
| Windows installer (per user) | Helia downloads the new installer, checks it, and when Helia closes a small hidden helper runs it silently in the same folder. Your settings are not touched. Helia opens again afterwards. If the installer fails, the helper puts the old programs back. |
| Windows installer (all users) | Changing Program Files needs administrator rights, so Helia downloads the installer and tells you where it is. Run it as an administrator. |
| AppImage | The new file is written next to the old one, flushed to disk, marked runnable, and then renamed over the old one in one step. The old one stays beside it as <name>.previous. The new version starts the next time you open Helia. |
deb or rpm (installed with apt, dnf, zypper) |
Helia never touches files that belong to your package manager. It downloads the package and shows the command to run, for example sudo apt install /home/me/.local/share/helia/updates/....deb or sudo dnf upgrade .../....rpm. |
| Flatpak | Use flatpak update casa.discworld.helia. |
| macOS app, tar.gz or zip | Helia tells you a newer version exists and downloads it on request. You replace the app or unpack the archive yourself. |
Going back¶
If a new version does not start properly twice in a row, the third start puts the
previous version back (AppImage: the .previous file; Windows installer: the
programs kept before the update), starts it, and records what happened in the log and
as a notice (shown by the restored version when it has this feature). That version is not offered again by the daily check, so there is no loop.
You can also go back yourself with helia update rollback. This only works for an
update that Helia installed itself, and only while the old version is still kept.
"Starts properly" means the window has been up for a few seconds. A version that
crashes before it can record that cannot roll itself back; for that, copy the
.previous file over the AppImage by hand, or reinstall the older installer.
Privacy: what is sent¶
Helia has no telemetry. The update check makes these requests and no others:
GETof the signed manifest, a small JSON file, from the update server named on the About page (the build's configured address; by default12hobbies.studio, with the files themselves from GitHub release downloads);GETof its signature (manifest.json.minisig) from the same place;- only when you ask (or in automatic mode):
GETof the update file itself.
Every request carries only the standard HTTP framing and this identification, with
your Helia's version number in place of 0.7.1:
No user name, machine name, address you chose, capture name, licence, or any identifier is sent, and no cookies. (An installer bought from the store has its own settings under Updates, and says there what they send.) Redirects are followed only between the servers named in the build (the manifest server for the manifest, the download servers for files), and every address must be https. The server sees your IP address, as any web server does; Helia does not send it anything else. To stop all of it, choose Never check on my own.
How an update is checked¶
Before anything is used, Helia checks that the manifest is signed by the Helia release key built into the program (an Ed25519 signature in the minisign format, up to two keys so the key can be changed), that it is for Helia and the right channel, that it has not expired, that it is not an older copy of one already seen, and that every address is on the allowed servers. The downloaded file must then match the size and SHA-256 in the signed manifest, and is checked again just before it is used. A tampered manifest, a wrong signature, an old manifest replayed, a truncated or altered download and an address on another server are all refused, and nothing on your computer changes. The design and the manifest format are in Automatic updates: design.
If something goes wrong¶
- "could not reach the update server". You are offline or the server is down. Helia carries on as it was; try again later. A failed daily check says nothing; a failed click on Check for updates shows the message.
- "not signed by a key this app trusts". The update details were altered or are from another source. Nothing was installed. Download Helia again from the Helia website.
- "could not install the update ... Nothing was changed". The folder is not writable or the disk is full. The text names the folder. Fix that and try again; the old version is still in place.
- A version that you do not want. Choose Off and download the version you want from the Helia website.