github i7Gamer/MySpeed v1.7.1

3 hours ago

The maintenance release: an automatic interface choice follows the default route, a failed port bind is no longer announced as a running server, and email notifications resolve DNS under one deadline. Libraries are refreshed; there is no migration and nothing to redo by hand.

🐛 Fixes

  • The automatic interface follows the route — when no interface is set, or the configured one has been missing for the three-round grace period, MySpeed now picks the adapter the operating system routes public traffic through (IPv4, then IPv6) instead of the first one that answered, and binds its exact address — so an IPv6 fallback on a dual-stack adapter no longer binds measurements to that adapter's unrouted IPv4 address. Finding the route sends no packets. VPN adapters remain eligible, and when no route is found the previous choice applies.
  • A failed bind no longer claims the server is listening — when the port was already taken, the log printed "Server listening" beside the bind error. Only a successful bind is announced now.
  • Email DNS has one deadline — the A and AAAA lookups for the SMTP server run at the same time under a single deadline for the whole lookup, following Nodemailer 10.1, so an unresponsive DNS server delays a notification once rather than per address family.

🔧 Runtime

  • Updated libraries — Express 5.3, Nodemailer 10.1, Undici 8.11.2, Satori 0.55, React 19.3, Vite 8.3 and vite-plugin-pwa 2.0, plus minor and patch updates. The Docker image builds the Cloudflare CLI with Rust 1.99.

Runtime compatibility

Source installs require Bun 1.4.2 or newer, or Node.js 22.19.0 or newer for development and tests. The x64 compiler target is Nehalem/SSE4.2 with runtime AVX dispatch; the baseline filenames are compatibility aliases. The Windows CPU floor has not been verified on AVX-disabled hardware.

Qualification scope and limitations

v1.7.1 uses the owner-approved-reduced-v1.7.1 qualification scope. Linux, macOS, source-runtime and Docker checks passed. Windows binaries passed listener-free reset and version checks; installers passed build/provenance checks and WiX ICE validation. Windows native HTTP/service runtime with enforced outbound denial is not verified. AVX-disabled Windows CPU-floor execution is not verified. The complete Windows MSI install/upgrade/rollback/uninstall lifecycle is not verified. These checks are deferred, not passed; see the qualification manifest for the exact evidence and artifact digests.


Downloads

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

The baseline filenames are retained compatibility aliases; they do not identify a separate CPU target. AVX-disabled Windows execution remains unverified.

Source Distribution

Docker Images

  • i7gamer/myspeed:latest
  • i7gamer/myspeed:1.7.1

Installation Scripts

Checksums and Qualification


What's Changed

  • Integrate reviewed Windows qualification harness onto development by @i7Gamer in #67
  • Capture QMP shutdown events during Windows qualification by @i7Gamer in #68
  • Repair the Stage 3 baseline guest executor gate and retain its evidence by @i7Gamer in #69
  • Validate baseline fixture bundle against the candidate source SHA by @i7Gamer in #70
  • chore(deps): bump the client-minor-and-patch group in /client with 8 updates by @dependabot[bot] in #72
  • Run the full suite for Dependabot PRs in release qualification by @i7Gamer in #73
  • chore(deps): bump rust from 1.98.0-alpine to 1.98.1-alpine in the docker-minor-and-patch group by @dependabot[bot] in #71
  • Suppress node:sqlite experimental warning in baseline guest executor by @i7Gamer in #74
  • Detect the Stage 2 UEFI-shell boot failure instead of waiting out the deadline by @i7Gamer in #75
  • Detach the baseline guest wrapper console before the console-free gate by @i7Gamer in #76
  • Qualification diagnostics follow-ups: pin console coupling, PID cross-check, truncated-serial attribution by @i7Gamer in #77
  • Shape native stop and lastResult candidate results as psobject by @i7Gamer in #79
  • Surface the Stage 3 failure reason to the CI log and step summary by @i7Gamer in #78
  • Retain Stage 3 launch diagnostics and type a bounded Enter cadence at boot by @i7Gamer in #80
  • Accept a proven Stage 3 teardown after the guest publishes, instead of waiting on a power-off by @i7Gamer in #81
  • Report the Stage 3 guest completion emission instead of swallowing it by @i7Gamer in #82
  • Reconcile the baseline guest receipt with the Stage 3 host contract by @i7Gamer in #83
  • Ignore the initial APIC ID when corroborating the baseline CPUID by @i7Gamer in #84
  • Refuse a Stage 3 run on publication evidence that contradicts itself by @i7Gamer in #85
  • Publish one vocabulary for a missing observation, in every record that reports one by @i7Gamer in #86
  • Qualify the CPU floor on a branch build, not only a published release by @i7Gamer in #87
  • Give a wall-clock deadline only to the scenarios that assert one by @i7Gamer in #89
  • Prove the guest bundle loads, and pin where its files name each other by @i7Gamer in #88
  • Ask whether the controller loaded, not whether stderr mentions it by @i7Gamer in #90
  • chore(deps): bump the client-minor-and-patch group in /client with 2 updates by @dependabot[bot] in #91
  • chore(ci): bump docker/build-push-action from 7.3.0 to 7.4.0 by @dependabot[bot] in #92
  • chore(ci): bump docker/setup-buildx-action from 4.3.0 to 4.4.1 by @dependabot[bot] in #93
  • chore(deps): bump the client-minor-and-patch group in /client with 2 updates by @dependabot[bot] in #94
  • chore(deps): bump the client-minor-and-patch group in /client with 3 updates by @dependabot[bot] in #96
  • chore(deps): bump rust from 1.98.1-alpine to 1.99.0-alpine in the docker-minor-and-patch group by @dependabot[bot] in #95
  • chore(deps): bump vite-plugin-pwa from 1.3.0 to 2.0.0 in /client by @dependabot[bot] in #97
  • chore(deps): bump the server-minor-and-patch group with 12 updates by @dependabot[bot] in #98
  • Stop Dependabot proposing harfbuzzjs and tar-stream by @i7Gamer in #100
  • Fix routed interface bindings and Windows shutdown proof by @i7Gamer in #101
  • chore(deps): bump the client-minor-and-patch group in /client with 5 updates by @dependabot[bot] in #104
  • chore(deps): bump the server-minor-and-patch group with 5 updates by @dependabot[bot] in #103
  • Stop Dependabot proposing oven/bun image bumps by @i7Gamer in #105
  • chore(deps): bump the server-minor-and-patch group with 2 updates by @dependabot[bot] in #108
  • Bump artifact and setup-node actions and follow the pinned SHAs in tests by @i7Gamer in #110
  • Read action pins from the workflows instead of copying them into tests by @i7Gamer in #112
  • Fix the clean-stop Ctrl+C inheritance and the job-launcher test races by @i7Gamer in #111
  • Prepare v1.7.1 maintenance release by @i7Gamer in #113

Full Changelog: v1.7.0...v1.7.1

Don't miss a new MySpeed release

NewReleases is sending notifications on new releases.