v0.0.31
Chaos v0.0.31 — the front door was broken and the test suite was green
v0.0.30 passed 999 tests, clippy, fmt, four document checks and seven release
jobs. Nobody had run chaos connect or opened /qr on a real node. It was
found in the first minutes of real testing, and reported as "the QR creator and
the reader are not in this version and devices cannot connect to each other".
The bug
$ chaos connect --port 8080 --status
chaos: cannot resolve --port:8080: No such host is known. (os error 11001)
connect pushed every argument it did not recognise into the positional list, so
an unknown flag became the hostname. The route is positional —
chaos connect 192.168.1.20:8080 "your prompt" — so there was never a --port
to type, and the error named DNS instead of the flag. From outside, that is
indistinguishable from a feature that was never built.
Everything reported missing was present and working the whole time: /qr serves
363 KB, /scan 229 KB, chaos-qr prints a code in a bare terminal, and a client
gets a real answer from a node.
The check that would have caught it
scripts/smoke-the-surface.sh — 29 checks against the built binaries, and it
runs in CI:
- every binary answers
--version - every subcommand works or refuses clearly, including
connectrefusing an
unknown option by name andscandeclaring itself not built chaos-qrprints a code- all eight node routes, with
/favicon.icoasserted at 204 because that is
deliberate /qrand/scanproven to fetch nothing external, which is what proves
the fonts are embedded rather than linked/v1/chat/completionsand/v1/embeddingsanswering with content- one machine asking another and getting an answer
A green unit-test suite could not have caught this. The defect was in argument
handling at the outermost layer, where nothing had ever looked.
Fixed
chaos connectrefuses unknown options by name rather than resolving them
as hostnames. This is the same defect E7 found in 43 ofchaos-run's flags,
which had survived in the front door because nothing tested it.chaos-qr --version— ten of the eleven shipped binaries answered it and
this one refused it as an unknown flag./v1/embeddingswas documented as answering 501 in three places across two
files, for weeks after it had been implemented on the dense path from a real
hidden state. Corrected. The V4-Flash path is still refused by name,
because its forward pass exposes no hidden state.
Everything v0.0.30 brought, unchanged
Quality at parity with llama.cpp across three models — Qwen3-4B -1.44%,
Qwen3-30B-A3B +0.37%, DeepSeek-V4-Flash +4.1%, each inside the other's error bar
— and 1.38x ahead on Qwen3-30B-A3B long-context generation. See the v0.0.30 notes
and CHANGELOG.md; SUPPORT.md says what is and is not supported, including that
macOS, the .deb, the AppImage and the arm64 tarball have never been executed by
anybody, and the Android app has never run on a phone.
Install
Windows: the Setup .exe. Linux: the tarball, the .deb or the AppImage. Android:
the .apk. macOS: the tarball, untested. Chaos distributes no model weights.