Updates
Updating by install route, silent patch installs, the qialike-update.auto setting, and the qialike upgrade family.
An install that can update itself does so automatically: about a second after launch a background child process checks once for a newer release (it never blocks the UI, and failures are silent). Only a patch release is installed silently; a minor or major release is announced in the status line only.
Which installs those are is the table below — in short: an npm install can (on Windows too), the
curl installer’s can (Linux / macOS only), and a hand-unpacked zip or a source build cannot.
Updating, by how you installed
| How you installed | Automatic | By hand |
|---|---|---|
| Linux / macOS (the shell installer) | ✅ patch installed silently; minor/major announced | qialike upgrade |
| Windows · npm | ✅ patches installed silently (same rule as Linux/macOS) | qialike upgrade, or npm i -g @qialike/cli@latest yourself (quit qialike first) |
| Windows · manual zip | ❌ never | qialike upgrade --check to see the version → download the new .zip → quit qialike → replace qialike.exe |
| Built from source | ❌ never touched | git pull, then rebuild |
Why most Windows installs have no automatic update: the shell installer cannot run there (it is
bash) and a running .exe cannot be replaced (POSIX swaps a live ELF with mv; Windows has no
equivalent) — so the installer’s copies AND hand-unpacked ones are announce-only. An npm install is
the one exception: npm is its own updater and needs no bash, so that channel updates itself on
Windows under the usual rule — when the background check finds a patch it runs
npm install -g @qialike/cli@<version> (an exact version, not @latest, so npm cannot resolve its
way to something newer than the release you were told about). The running session keeps the old build;
the new one takes effect on the next launch. Minor and major releases are still announced only,
and setting qialike-update.auto to "notify" makes even patches announce-only.
That is why qialike upgrade has two behaviours on Windows: an npm copy really installs (through
npm), while a hand-unpacked copy only reports the version and prints the two download links (GitCode
primary, gitcode mirror) — its layout has no file to swap in place, so downloading the new .zip,
quitting qialike and replacing qialike.exe is how it moves forward.
What automatic updates require
That something owns the binary: the curl installer’s copy in ~/.dsh/bin (Linux/macOS) or the
copy under npm’s global prefix (including Windows). The two layouts nobody owns are never
replaced: a checkout build, and a binary unpacked from the zip by hand — they only receive a notice
(the version plus the download links), and --check only reports.
Turning it off, or switching to notice-only
The qialike-update.auto setting — a section of ~/.dsh/settings.yaml, registered by the updater —
takes:
| Value | Meaning |
|---|---|
true (default) | Patch releases are installed silently; minor / major releases are announced only. |
false | No check at all. |
"notify" | Check and announce, never install. |
Two environment variables override it: QIALIKE_DISABLE_AUTOUPDATE=1 disables automatic updating
globally, and QIALIKE_ALWAYS_NOTIFY_UPDATE=1 forces notice-only. See
Config for the exact YAML and the rest of the environment variables.
Updating by hand
qialike upgrade # move to the newest releaseqialike upgrade <version> # install a specific version (v-prefix accepted)qialike upgrade --check # report only, install nothing/upgrade does the same from inside the TUI. Whether these can actually install depends on who
owns the binary, not on the platform:
- An npm copy is replaced by npm (on Windows too);
qialike upgrade --checkadditionally printsnpm i -g @qialike/cli@latest. - The
~/.dsh/bincopy is replaced by the installer (POSIX only — on Windows the installer is bash and a running.execannot be swapped). - A copy nobody owns (a checkout build, a hand-placed binary) is refused with a suggestion to reinstall through the installer. The one exception is a hand-unpacked copy ON WINDOWS, where the platform gate comes first and hands over the download links instead.
Where the update requests go
Version checks and downloads go to GitCode (canonical), the gitcode mirror, or qialike.cn — the same hosts the installer uses; see Install → Download sources and fallback.