Skip to content

Release 1.3.2

Choose a tag to compare

@github-actions github-actions released this 15 Aug 10:53

A maintenance release built around two whole-project reviews. Every fix ships with a test that fails without it — the suite grew from 2313 to 2998 checks, and ESLint now runs across the repo. Upgrading is drop-in: no migrations, no configuration changes.

✨ New

  • Deleting a test asks first. The button sits in the panel that opens under the row you were reading, there is no undo, and it used to delete on the click.
  • The whole interface answers a keyboard. Nine cards on the statistics page and every node card were click-only, so the expanded charts and the node switcher could not be reached without a mouse.
  • A grade is stated on the glyph, consistently across the overview, node cards, detail pane and statistics panels — with a new preference to colour the figure as well.
  • Dates and numbers follow the app's language, not the browser's.

🔒 Security

  • Preview mode is genuinely read-only. Clearing the history, factory resetting, deleting a test, changing any setting and pausing the schedule were all reachable without a password on a demo instance. Worst was the node proxy: it reaches a different machine and substitutes that machine's stored password. One shared guard now covers every mutating route, and a test walks the route table so a new one cannot miss it. Running a test still works.
  • The failed-password limit counts simultaneous attempts, not just sequential ones, across the password header, the sign-in route and the Prometheus scrape. A server that is merely busy comparing now says so, instead of reporting a correct password as wrong.

🐛 Fixes

Statistics — the failure count in the status bar and on the statistics page were computed by two different rules; an unrecorded test duration dragged a chart bucket's average down; the "showing N of M" note could claim a reduced view of a chart that was drawn in full; the bufferbloat trend could be drawn out of order; the expanded overview printed latency to two decimals where every other panel printed one; the two target bars ignored the grade palette.

Speedtests — a provider CLI printing an empty JSON array crashed the server outright rather than recording a failed test; a CLI download that extracted nothing reported success; a failure that could not be recorded left the instance marked "running" and silenced the integration keep-alive.

Integrations — Pushover rejects messages over 1024 characters, so the failures with the most to say never arrived; a stray backtick in a provider's error broke Discord's formatting, and a link in provider output became a real one; outbound responses are now read to completion instead of left open.

Nodes & configuration — deleting the node you were viewing left the app pointed at it; the proxy asked children for compressed replies it could not decode; a non-string password answered 500 instead of 400; a configuration change told the integrations and revoked every session before the write it described; the storage dialog could report a database size of zero; the OpenGraph image left out the current day east of UTC.


Downloads

Platform x86-64 ARM64
Windows EXE · MSI
Linux Binary Binary
macOS Binary Binary

Source Distribution

Docker Images

  • i7gamer/myspeed:latest
  • i7gamer/myspeed:1.3.2