Release notes

Changelog

Notable changes to PingPair. The format follows Keep a Changelog; releases use Semantic Versioning. The full source-level history lives in CHANGELOG.md.

0.6.3 2026-08-25

Changed

  • The product description now matches what the app does. It still promised a fixed 20-case test between two laptops, which stopped being the whole story once the grid became editable, the Multi-Client tab arrived, and Loopback made a second machine optional. PingPair now “automates latency and throughput testing on your network — configurable sweeps, multi-client load tests, or a single-PC run — and turns every test into a ready-to-file Word, PDF or Excel report.”
  • The Quick Start tour and the capability cards follow suit. The tour opens on a configurable grid of test cases — 20 by default — rather than a fixed 20-case test, and says “machine” where it used to say “laptop”; the two ends have been able to be VMs or embedded computers for a long time.
  • The user guide frames the 4 × 5 grid as the default it is, not the only grid, and points at the Config tab for changing it.

Fixed

  • Two timing figures left over from 0.6.0. That release cut a full sweep from ~16 minutes to ~11, but the documentation still quoted the old numbers — “16 minutes for the full 20 cases” online, and “~50 s” per case in the user guide. Both now read the real ones (~11 minutes, ~31 s per case).

0.6.2 2026-08-19

Fixed

  • A Multi-Client run is no longer reported as a corrupt file. These runs are deliberately kept out of the Analysis tab, which compares 20-case sweeps — but that exclusion was signalled with the same error as an unreadable file, so a perfectly good report was counted as a parse failure. “Not a sweep” is now its own signal; a sidecar that really is unreadable still warns.

Added

  • Saving a report set is recorded in the log — one line naming the folder and the formats written, so a run’s output leaves a trace. That matters most for an automatic save nobody pressed a button for.

0.6.1 2026-08-19

Fixed

  • A clean run no longer closes its live log claiming a lost ping. The Multi-Client log counted any line containing “unreachable” as a lost probe — including fping’s own 0 unreachable summary row — so every run invented one loss, and a 1,886 / 1,886 run ended its log with (1 lost) beside a report reading 0.00 % loss. Only real probe lines are counted now. Every saved number was always correct.
  • The same section is named the same way in every Multi-Client report format. One run’s Word document headed a table “Per Simulated Client” while its text report headed the same table “Per simulated client”.

0.6.0 2026-08-19

Fixed

  • Each case’s latency and loss are measured over the same window as its throughput. fping was asked for more probes than it could send in the time available, so it outlived every case by about 17 seconds — roughly 37 % of each case’s latency and loss sample was taken on an idle link, after the traffic had stopped. Ping figures now describe the loaded link they were meant to describe.
  • Watching a sweep no longer competes with measuring it. The live view could take time away from the run it was displaying.
  • A control-channel read timeout now bounds the whole call, chart images that fail to write say so instead of failing silently, a truncated capture is flagged rather than returned as complete, and nan / inf can no longer reach a numeric workbook cell.
  • The Analysis tab stopped re-walking the reports folder every few seconds, and Fix-all can be interrupted by closing the window instead of driving on against a closing view.

Changed

  • A 20-case sweep now takes about 11 minutes instead of about 16 — same measurements, same duration per case, without the dead time.
  • fping.interval_ms values below about 16 all produce the same rate on the wire. The setting is unchanged and still honoured exactly from 16 ms upward; it simply buys no extra resolution below that, and the Help tab now says so.

Security

  • The updater’s two metadata reads (the release listing and the .sha256 sidecar) are bounded at 4 MiB rather than reading whatever arrives — a guard against a captive portal or a misconfigured mirror, not against a compromised GitHub, which the SHA-256 gate covers.

0.5.1 2026-08-18

Fixed

  • The Multi-Client live log no longer stutters. Lines arrived in bursts rather than as they were produced.
  • The “Generated by PingPair” line now closes the report instead of landing mid-document, Word documents are A4 like the PDFs of the same run already were, the workbook’s Packet Loss column stays numeric, and a multi-client sidecar now describes the run it is saved beside.

0.5.0 2026-08-18

Added

  • The Multi-Client tab has a live log. The tab used to go silent for the length of a run; it now shows iperf3’s per-second row for every simulated client and a [SUM] line for the whole load, with one [fping] line per second beside them so a latency spike can be read against the throughput of the same second.
  • Saving a multi-client report shows a busy indicator while the five formats are written.

Fixed

  • Multi-Client PDFs stopped breaking their own tables — they are portrait, centred, and fill the page. Workbook headers keep their units and freeze their header rows, the text report’s numeric columns line up, every document names the build that wrote it, and the five formats now agree on their presentation as well as their numbers.
  • A failed run no longer signs off by saying it finished, and an aborted run keeps iperf3’s own words instead of a reassembled approximation.

0.4.5 2026-08-18

Fixed

  • A dead server is reported once, not twice, and the connectivity check no longer provokes the very error it was meant to remove.
  • “Last sweep” can no longer name the oldest run on disk. Saved sweeps were ordered by file timestamp alone.

Changed

  • The shipped screenshots are current and reproducible — rendered from the live app rather than captured by hand, so a UI change can be re-shot in one command.

0.4.4 2026-08-18

Fixed

  • A Multi-Client run now ends the moment the far end does, and a physical disconnect is detected in about a second rather than at the end of the case.

0.4.3 2026-08-18

Changed

  • A successful connectivity check no longer leaves an error line in the server’s own console.

0.4.2 2026-08-18

Fixed

  • The Multi-Client page no longer jumps when you click Run or Save, and saving from the post-run dialog no longer raises a second dialog on top of it.

0.4.1 2026-08-18

Fixed

  • A finished Multi-Client run now asks where to save it when auto-save is off — the setting is app-wide, and this tab was ignoring it.
  • The per-client results table no longer clips its rows, and the server-command blocks are readable and unambiguous about what each Copy button copies.

0.4.0 2026-08-18

Changed

  • Reports open with a cover page, and the PingPair version is named under the wordmark in every report format.
  • Threshold fields on the Config tab hint instead of pre-filling, so an untouched field arms nothing.
  • The Server no longer reports a finished sweep as a disconnect.

Fixed

  • Sub-1 % ping loss no longer reports as zero. fping rounds its own loss percentage to a whole number, so 7 lost probes of 3,000 arrived as 0 %; the figure is now derived from the counts.
  • Saved test-plan profiles survive an update. They were being written inside the application folder, which an update replaces.

0.3.0 2026-08-08

Added

  • Multi-Client tab — drive many simulated clients at once from this laptop against a single server, to see how its LAN side behaves under realistic multi-workstation load. One parameterised case, a per-client results table, and a live capacity budget that tells you whether this machine can actually generate the load you asked for. The server needs no PingPair: pick your Linux distribution and copy the generated commands.
  • Reference values — set thresholds for throughput, jitter, packet loss and latency, and every result row is judged PASS / MARGINAL / FAIL / NOT EVALUATED. Reports gain a verdict banner, reference columns beside the results, the reference table itself, and an exceptions table listing only the rows that breached. Throughput limits can be a percentage of each case’s offered bandwidth — the only thing that means anything across a 10 → 90 Mbps sweep. Ships with a standards-backed default profile (ITU-T G.114 / Y.1541).
  • Threshold lines on the Analysis charts when every selected run was judged against the same reference.
  • CSV export of results, for spreadsheets and scripts.
  • Saved profiles now carry the network settings, both run modes and the thresholds — a site’s whole test setup in one file, with a one-click picker on the Config tab.
  • Help gained Multi-Client and Reference values sections, plus refreshed screenshots throughout.

Changed

  • The Run tab is now Single-Client, beside the new Multi-Client tab.
  • The Config tab serves both run modes through a selector that follows the active run tab, in a single scrolling column.

Fixed

  • Config tab: overlapping toolbar controls, a clipped caption, and a group title colliding with the panel below it at smaller window sizes.

0.2.4 2026-06-26

Changed

  • Maintenance release — no functional changes from 0.2.3. Marks the updater fixes (0.2.2 certificate trust, 0.2.3 install/swap) as verified stable on a clean install, and validates the in-app update path 0.2.3 → 0.2.4.

0.2.3 2026-06-25

Fixed

  • In-app updates now install correctly. After downloading an update and confirming the restart, the app could close and reopen on the same version — the update silently didn't apply. The background updater no longer locks itself out of its own install step, so the new version is installed and launched as expected.

0.2.2 2026-06-25

Fixed

  • Update check now works on fresh Windows machines. "Check for updates" could fail with "Couldn't reach GitHub" / a TLS certificate error (CERTIFICATE_VERIFY_FAILED) on a newly set-up Windows PC or VM whose certificate store hadn't yet downloaded GitHub's root CA. PingPair now ships its own trusted CA bundle, so the update check verifies correctly regardless of the machine's certificate-store state — no more one-time browser/curl workaround.

0.2.1 2026-06-25

Fixed

  • Removed an erroneous "you are running the self-updated build — the updater worked!" banner that appeared on the About tab.
  • The Excel comparison export now leaves a 100%-loss case's latency cells blank — consistent with the Word/PDF/TXT reports — instead of writing a nan value that some Excel versions flagged as a corrupt workbook.
  • Hardened report generation against rare failures: a branded-header glitch can no longer abort a whole report, and a 100%-loss case no longer skews the per-case analysis charts.

0.2.0 2026-06-25

Changed

  • Report headers are now fully branded across every format. Each Word, PDF, TXT, and Excel report — single-sweep and Analysis comparison alike — now leads with the PingPair logo, a two-tone "PingPair" wordmark, and a clickable www.pingpair.app link above the title, with a matching site link in the footer.

Fixed

  • The Analysis tab's "Loaded runs" list no longer clips or overlaps the run entries on higher-DPI displays. The list now fills its panel, and transient load/parse messages appear in the main-window status bar instead of a cramped in-pane label.

0.1.0 2026-06-09

First public release.

Added

  • Automated 20-case Server/Client LAN sweep (fping + iperf3) with Word / Excel / PDF / TXT reports and a JSON sidecar per run.
  • Setup prerequisite checker with one-click fixes, role auto-detect, Config test-plan editor, Analysis comparison/diff tab, Help guide, and theming.
  • In-app updater: "Check for updates", an every-launch reminder with an opt-out, and "Download & install" that fetches the new build from the GitHub release, verifies its SHA-256, swaps the install, and relaunches — with a live speed/ETA readout and a cancel button.
  • About tab reorganized into four cards (About / Updates / Credits & License / Diagnostics).
  • The PingPair logo now appears in the header of every Word and PDF report.
  • Packaging: top-level LICENSE, expanded third-party license notices, and this changelog.

Changed

  • Download streamed in 1 MiB chunks (was 256 KiB) for faster transfer.
  • The Analysis tab's Export comparison report now writes a single self-contained folder with consistently sized wide charts.
  • A sweep is now blocked while Wi-Fi is connected to the test subnet, and the Ethernet adapter is reverted to DHCP when the app closes.

Security

  • Update download refuses an https→http downgrade, on top of the mandatory SHA-256 check. The bundle is unsigned for v1 — HTTPS + SHA-256 is the integrity story.
  • All elevated system-tool calls (netsh / ping / icacls) are invoked by absolute System32 path, removing a binary-planting privilege-escalation surface.
  • The NIC override is validated as an IPv4 literal before it reaches netsh; the report filename pattern is sanitized so it can't write outside the Reports folder.

Fixed

  • Self-update now reliably applies and relaunches.
  • Closing the window mid-download no longer freezes the app.
  • A 100%-loss case no longer renders nan in latency columns or skews the summary — those latencies now show as "—".
  • The Analysis tab's Export comparison report now works in every format.
  • iperf3 connection errors are recorded as a failed case instead of a misleading 0 Mbps result.
  • The server no longer stalls ~10 seconds when a client disconnects mid-case.
  • "Reset to defaults" on Save Options restores Word + Excel only (the documented default).
  • The Analysis Diff tab's hint banner is now readable on the Light theme.

See every release on the GitHub Releases page.