Kairo 0.4.29
Release date: 2026-09-08
The first public build since 0.4.21. Everything below has accumulated across
0.4.22–0.4.29, so anyone updating receives all of it at once.
Online support replaces Repair
Repair only ever did one thing — fetch the online repair files and apply them —
behind a button that said nothing about whether the game needed it. Online
support checks the installed files first, says what it found, and applies the
files when there is something to apply.
The button carries its own answer, checked in the background on every launch:
| Appearance | Meaning |
|---|---|
| yellow | part of the fix is present and the part that does the work is not — the shape antivirus leaves, days after an install that worked |
| red | nothing installed, and a fix exists for this game |
| quiet green | complete |
| unmarked | no fix installed and none exists: single-player, and not a problem to solve |
Pressing Apply now starts the download immediately. It used to add a job to the
queue, switch to Downloads, and wait to be asked a second time.
What it looks for was measured, not guessed: across sixteen games installed
on the owner's machine, every Online-Fix install carried OnlineFix64.dll and
winmm.dll together beside the executable, and no SteamRIP-only install carried
either. They sit next to the game's executable rather than at the top of the
install, so the check walks the tree.
A fresh install can bring its own online fix
Where the source with the newest build does not ship online play and another
source does, the base game goes down and the online repair files go on top as
the last step of the same install — not as a second errand nobody was told to
run. 615 games are in that shape; until now every one of them installed
without online play and said nothing about it.
A fix and a build have to come from the same place
Confirmed by installing it: SnowRunner from SteamRIP — the Steam build — with
its Online-Fix repair applied did not gain online play. That repair is
SnowRunner_Fix_Repair_GDK.rar, built for the Microsoft Store build. Different
executables against different store runtimes, so a fix that wraps one has
nothing to attach to in the other.
51 games are in this shape. For all 51, Online-Fix publishes the build its
own fix was made for, so Kairo installs that one instead — the pair that
actually plays online. It often costs nothing: Darktide is 1.12.6294.0 on both
sides, Killing Floor 2 1150, GUILTY GEAR ‑STRIVE 1.3.5.0.
A choice sits directly above the download source on those games — play online,
or take the newest build — with online as the default. It appears only where
the two cannot be combined. Where the fix fits the build, the newer build takes
the fix and plays online, and nothing changes.
Version numbers that were being compared wrongly
SteamRIP states SnowRunner as v1.874028 and Online-Fix as 1.0.151.0. Both
parse as versions, so Kairo compared them component by component — which asks
whether 874028 is greater than 0. It is, so SteamRIP was reported as the newer
build, the answer was marked comparable, and it decided which source to install.
A build number is not a minor version. Kairo now refuses to rank two version
strings whose deciding component is build-sized on one side and a real version
component on the other.
When versions cannot be ranked at all, Kairo used to fall back to observedAt —
which is when it read the page, not when the build shipped. SnowRunner's two
sources were read 127 minutes apart in one bulk run, and that gap was the whole
basis for calling one newer. There is no tiebreak now: Kairo uses the
catalogue's primary source and says plainly that recency was not what decided
it.
Silence is not a disagreement
Compare sources showed SteamRIP claiming "single-player" against Online-Fix's
"online", under the word DIFFERS. SteamRIP never said that — the reader writes it
whenever a page heading did not mention online, and 4,283 entries hold it. That
cell now reads "Does not say", like any other fact a source did not state.
Steam's own store categories are now read as well, for the 3,914 games that have
them. Valve's distinction is kept: "Online Co-op", "Online PvP", "MMO" and
"Cross-Platform Multiplayer" mean online, while bare "Co-op" or "Multi-player"
may be split-screen or LAN and is treated as a maybe.
Removing a game now removes it
A save merges with what is already stored rather than replacing it — two Kairo
windows share one storage key. That rule could not tell "this window has never
seen this entry" from "this window just deleted it", so a removed game came
straight back, into storage and into memory. The files were gone, the toast said
the game was removed, and the card never went away.
The installer
- Repair used to replace the app files and refresh shortcuts, which is what
Update already did. It now also clears the caches, browser partitions and lock
files that stop Kairo starting — around 2.4 GB — and keeps your library,
catalogue and settings. Deleting those is a checkbox under it. - Force uninstall removes Kairo entirely and installs nothing: application,
settings, catalogue, library list, logs, shortcuts, registry entries and update
cache. Downloaded games are a separate question, asked separately, off unless
you tick it. Kairo records the folders it uses — including on other drives —
so a full removal can find them; it never searches your drives for folders that
merely look like Kairo's. - The setup page fits its window. MUI gives a custom page 300 × 140 dialog units,
and the telemetry consent checkbox and privacy link sat past that — invisible
on every install anyone ever ran.
Reading Online-Fix pages
The reader only recognised a repair archive named exactly
*_Fix_Repair_Steam_Generic.rar. Every other naming was discarded as
unclassified, so 1,275 of 1,930 catalogue rows with an Online-Fix source had
no repair archive at all — every fix built for anything but Steam was invisible.
It now recognises any archive naming itself a fix repair, records which build it
was made for, and keeps the archive's own filename against the link. The game's
own parts are checked first, so a game actually called something like "Car Fix
Repair Simulator" is still the game and not a fix.
The password check carried the same blind spot: an Online-Fix archive named for
another build would have downloaded, turned out to be encrypted, and failed to
extract with nothing explaining why.
Not signed
This build is unsigned. No Windows code-signing certificate is configured, so
SmartScreen will warn on first run. See docs/WINDOWS_SIGNING.md.