What 1.12.0 fixed
As of 2026-07-25. A snapshot; follow the links for whatever changed since.
Nothing to configure — upgrading is enough. No new features here: every item is something that was quietly broken.
- A crash can no longer destroy your configuration
- API tokens outlived their sessions
- The phone link recovers instead of dying quietly
- Windows: four silent failures
A crash can no longer destroy your configuration
Saving config.json was not atomic, so a crash mid-write left a half-written file. The next boot read that as corrupt, and the lenient loader turns corrupt into an empty config — every provider, launcher and header button, gone. Writes are atomic now: a failure leaves the previous file in place.
If this happened to you, set things up again with the configuration guide.
API tokens outlived their sessions
A session’s settings file holds the provider’s API token. Cleanup only ran on a clean exit, so after a crash the token survived the session — survived being rotated, survived the provider being removed. Boot now prunes settings files with no surviving session.
Worth upgrading for if you use a provider. → Using another model
The phone link recovers instead of dying quietly
The Firestore command channel gave up permanently after a sleep or a network change, while the toolbar kept showing the last state it happened to fetch — so the only symptom was the phone failing to connect. It reconnects now. → Using MulmoTerminal from your phone
Windows: four silent failures
- A config file saved on Windows read as no config at all. Notepad and PowerShell write a UTF-8 BOM; JSON parsing failed on character one, and colors, badges, buttons and model settings were dropped with nothing displayed. The BOM is stripped now.
- DOS device names (
CON,NUL, …) reached the file routes.NULread empty;CONhung the request until console input arrived. - Deleting a locked file threw, stopping cleanup partway.
Windows-specific traps are collected in docs/windows-gotchas.md.