github i7Gamer/MySpeed v1.5.2
Release 1.5.2

4 hours ago

The localised-notifications release: every prose notifier writes in a language you pick, and the alert says why it arrived. Drop-in — no migrations, no new environment variables, and existing notifiers keep writing English until you set their language. One behaviour changes on its own: Prometheus and InfluxDB stop publishing a latency nobody measured, so absent(myspeed_ping) starts firing where a provider reports none.

✨ New

  • Notifications in the recipient's language — Discord, e-mail, Gotify, ntfy, Pushover and Telegram each take one of the interface's 23; the six shipped templates and the alert passage come from the locale files. Unset means English, and a template you edited by hand stays as you wrote it. The webhook keeps English.
  • The alert says what crossed%alertSummary% closes the six shipped finished-templates with the baseline line and the limits missed, and vanishes on a healthy test; %baselineShortfallDownload% and %baselineShortfallUpload% give the figure alone. Add it by hand to a template you have already edited.
  • A failed test says what failed — the timeout, a CLI that could not be installed and an unusable interface all read "Unknown error"; a restart landing on a running test and a kill from outside read "exited with code null". All five are named now, on the row and in the notification.
  • The statistics say when they cannot answer — a node too old for a comparison is named rather than drawn as an empty period, and "Last test" names its target on a multi-target instance.

🔒 Security

  • The session cookie is scoped to the prefix it was issued under, and signing out clears every scope and destroys every session the browser holds. Not retroactive: a cookie already at Path=/ lives out its seven-day Max-Age. A request without the prefix still gets Path=/, since the server answers on both routes. Changing BASE_PATH from now on signs everyone out of the prefixed route.
  • The install path is verifiedinstall.sh comes from the latest release rather than the development branch, and the binary is checked against the release's SHA256SUMS; both work from this release on. The MSI installers get checksums too.
  • The HTTPS redirect refuses a Host header carrying userinfo.

🐛 Fixes

  • The dashboard speaks for an instance nobody alerts on — with every target opted out, the last test and the failure count went blank; and a failed first load offers a retry instead of reporting years of history as no tests.
  • The metric sinks stop exporting a latency nobody measured — an empty latency block stores 0 ms, which the page already drew as a gap, and Prometheus and InfluxDB sent it, and a -1 placeholder, as real readings. InfluxDB also writes a measurement an imported history stored as text.
  • An impossible cron no longer leaves the instance unscheduled0 0 31 4 1 removed the schedule entirely, broke every later settings save and stopped a clean shutdown; it falls back to the default and says so. MON, sun and 7 are accepted for Sunday.
  • The Nodes page grades against the row's own target, so a test stops wearing one colour there and another on the dashboard.
  • Three sends failed on values the form accepted — an SMTP relay or MQTT broker as [fd00::1], and ntfy or InfluxDB tokens carrying unusual characters.
  • A shutdown waits for the round's writes; RUN_TEST_ON_STARTUP runs immediately rather than after the schedule offset; a CLI download that cannot succeed is left alone for five minutes instead of re-fetched on every test; template timestamps follow the instance's timezone.
  • iperf3 refuses a UDP target with no usable bitrate before the CLI runs, holds the bitrate to 1–10000, and shows what blank duration and stream fields run (10 s, 4 streams).
  • More of the interface follows the reader's language — the calendar's first weekday, "3 dni" in Polish and Czech, "vor 7 Tagen" in German, the page's lang, and the chart's failure tooltip, with a form of its own for a single failure.
  • Renaming and deleting a remote server have a button on the card, reachable by touch and keyboard, and tabbed controls are named.
  • Smaller edges — daylight-saving-day comparisons cut at time lived; an unreachable node answers 502, not 400; GET /api answers JSON, not the dashboard; BASE_PATH link previews point inside the app; a browser that cannot parse prefers-color-scheme stays dark; results with no elapsed figure insert; the stability card says ±<1 Mbps, not ±0; a refused import leaves its dialog open; and Preferences stops saving a statistics range nobody chose.

Downloads

Platform x86-64 ARM64
Windows EXE · MSI · EXE (no AVX2) · MSI (no AVX2)
Linux Binary · No AVX2 Binary
macOS Binary Binary

Source Distribution

  • ZIP Archive (requires Bun runtime)

Docker Images

  • i7gamer/myspeed:latest
  • i7gamer/myspeed:1.5.2

What's Changed

  • Fix/review round three by @i7Gamer in #43
  • chore(deps): Bump nodemailer from 9.0.5 to 9.1.0 in the server-minor-and-patch group by @dependabot[bot] in #44
  • chore(deps): Bump the client-minor-and-patch group in /client with 2 updates by @dependabot[bot] in #45
  • fix(release): let the MSI build use the WiX the runner already has by @i7Gamer in #46

Full Changelog: v1.5.1...v1.5.2

Don't miss a new MySpeed release

NewReleases is sending notifications on new releases.