Files
neonoverlord 1de8a0f653 docs: CHANGELOG + README for the release — say what was wrong, not just what works
Three versions in a day, and the middle one exists because the first was
confidently wrong. Written down that way on purpose: a changelog that only lists
features is a changelog that has learned nothing.

README gains the 'where it lives' section (Settings, not the app menu) and the
methodology note — why a fixed window instead of a fixed size, and why four
streams instead of one. Anyone comparing this to another speedtest deserves to
know which of the two is lying to them.

Brock, on 1.2.0: 'that app is really good! its the same as libre now more or
less... id use this one.' That is the bar. Documenting it so it stays there.
2026-08-06 08:17:59 -07:00

53 lines
2.2 KiB
Markdown

# Changelog
*Kept in the order things actually happened, which is not always flattering.*
## 1.2.0 — 2026-08-06
**Moved out of the app menu and into Settings → Personal.**
A speedtest is a utility, not a destination. Nobody opens one the way they open
Files or Mail.
The settings template is a separate file with **no** `#app-content` wrapper, and
that is deliberate: the settings shell brings its own layout, so reusing the
app-menu template nests two layout containers and breaks the width. One context
needs the wrapper, the other must not have it. Both files say which is which, so
nobody has to find out twice.
`/apps/speedtest/` still resolves. It just no longer occupies a slot in a menu
you look at every day.
## 1.1.0 — 2026-08-06
**The numbers were wrong. Confidently. That is the worst kind.**
Two bugs, both found by *using* the thing rather than testing it:
- **Upload died outright.** `crypto.getRandomValues()` is spec-capped at 65536
bytes per call and it was asked for a megabyte. Now one 64 KiB block is
generated and tiled — still incompressible, one call instead of sixteen.
- **Download read half the true speed and finished in half the expected time.**
One cause, two symptoms: a fixed 50 MiB transfer, averaged end to end, on a
link fast enough to finish before TCP left slow-start. The ramp was in the
average.
Fixed the way the real ones do it: **fixed six-second window** with a
**1.5-second warmup discarded**, across **four parallel streams**. A single
connection measures the connection; several measure the link.
## 1.0.0 — 2026-08-06
**A container died so this could exist, and that is the feature.**
Retired `ghcr.io/librespeed/speedtest` — the last upstream image running on this
node — along with its systemd unit, its port, its docker network, its vhost and
its DNS record. Roughly 1.75 GB of layers reclaimed. Six moving parts replaced
by four PHP files and one JavaScript file, served by something already running.
The most reliable service is the one you deleted. It has never had an outage, it
has never had a CVE, and it does not appear in the supply chain because it does
not exist.
*The node remains online. Against my better judgment.*