JACKPROBE

Changelog

What changed, and what it cost

Including the things that went wrong. A changelog that only lists features is a marketing page with dates on it, and the entries worth reading are usually the ones admitting something was broken.

0.8.0
5 September 2026

Listening: 802.1X, other DHCP servers, and a witness for every silence

  • The tester can say a port asked it to authenticate. It can never say a port did not, and there is no reading that means so. A switch sends its identity requests when a device appears and then stops, so on a port whose requests finished before you arrived, no amount of waiting produces one. A tester that offered "802.1X not in use" would be inventing it out of a silence that proves nothing.
  • It reports what else answers DHCP on this segment, with the MAC address of each, which is what you need to find the port a second server is plugged into. It reports what replied, never how many exist.
  • Every absence now carries a witness: how long the tester listened and how many frames went past while it did. "Nothing heard, 0 frames" is a broken receiver. "Nothing heard, 344 frames" is a real observation about a live segment. Those two used to look identical.
  • Fixed: the tester displayed switches that do not exist. The CDP decoder matched on a MAC address alone, and that address also carries VTP, DTP, PAgP and UDLD. On a port with no LLDP, a DTP frame produced a confident switch name and port number for a switch that was never there.
  • Fixed: the switch section of the log vanished when nothing was heard, so a quiet segment and a deaf tester both left no trace.
  • Fixed: a cable moved between two jacks faster than the link check could see reported the previous jack's findings on the new one.
  • Eight further defects, found by attacking the new code rather than waiting for it to fail in the field, including a frame that could manufacture a false "this port asked us to authenticate" out of a length field it chose itself.
0.7.0
4 September 2026

Storage moves inside, and a crash goes with it

  • Reports now live in internal flash. Capacity is 394, measured by filling the partition rather than estimated. The tester no longer depends on a memory card being present, or being genuine.
  • The microSD store was removed rather than repaired. It was write-only, a rename left it holding the old name and label, a delete never touched it, and two testers sharing a card overwrote each other in silence. Underneath all of it: any policy that deletes an original needs to know a second copy exists, and the device could not know.
  • Fixed: listing several hundred reports rebooted the tester. The directory walk opened each file, which is a full name lookup per entry, on the task a five second watchdog is watching. With 414 reports stored it took 7.7 to 12.9 seconds and panicked the device. Reading names without opening takes 322 ms. Both figures measured on hardware, and the page now renders in 1.2 s.
  • Fixed: the tester was ten times slower when nobody was watching. Serial writes block until a host drains them, so an unattended device crawled: a report that saved in 970 ms with a console attached took 12.7 s without one. This also invalidated several earlier timings, which were measurements of the watched device.
  • Fixed: it refused to save with more than half the space free. The full threshold was sized in megabytes, correct for a 118 GB card and useless against a 3.4 MB partition.
  • Download a report, download them all as a ZIP, delete them all. With no card, this is how evidence leaves the instrument. The delete asks first and names the number it is about to destroy.
  • Reports list newest first. It used to be filesystem order, which is nothing a person would recognise.
  • A favicon, carried inside every saved report so it survives being mailed.
  • Corrected three messages that told a technician the card held their evidence when it did not.
0.6.0
4 September 2026

Notifications, a hotspot key, and a way back in

  • Webhook notifications. Each saved report posts a flat JSON summary to an address you configure, on its own task so an unreachable endpoint cannot freeze the instrument. Delivery verified end to end against a real receiver.
  • A password for the hotspot, and a five second button hold that clears it. Anyone holding the button is standing at the device, which is the same trust boundary the key protects.
  • The single-uplink assumption the verdict rests on is now enforced by a check rather than described in a comment.
0.5.0
4 September 2026

The console stops being the bottleneck

  • The web console moved to an event-driven server. The stock one serves a single client and holds its only slot for five seconds whenever a browser opens a speculative connection, which browsers do constantly. Measured before and after, against concurrent load: 17 of 36 requests failed, then 0 of 36; slowest tenth went from 8.2 s to 253 ms.
  • Rename and delete for saved reports, storage state, and a way back to the console from an opened report.
  • Time zone as a real zone rather than an hour offset, so daylight saving is right in March and in November, and it survives a restart.
0.4.0
4 September 2026

Reports a client can be handed

  • A double press saves a self-contained HTML report, with a label and typed notes, a verdict, every reading, and both local and UTC time.
  • The console redesigned around the verdict, with the checks below it.
  • The unit now has one identity everywhere. It was reporting three different MAC addresses for itself across three surfaces.
  • The first automated checks, each one watched failing on a planted fault before being trusted.
0.3.0
3 September 2026

Time, and a record

  • Real wall-clock time by SNTP, so a report says when rather than how long since boot.
  • Every kept run appended to a line-delimited log, which survives being unplugged mid-write.
0.2.0
3 September 2026

Honest states, and the WAN

  • Public address and gateway latency added to the test.
  • No-link and no-DHCP became real answers rather than a blank page. A tester that shows nothing when a drop is dead is a tester that looks broken exactly when it is working.
  • Fixed a data race on the discovered neighbour, and made stale switch data expire instead of following the tester to the next jack.
0.1.0
2 September 2026

First working instrument

  • Link, DHCP, gateway, DNS and internet, resolving to one verdict.
  • Passive LLDP and CDP discovery, reading the switch, port and VLAN without transmitting anything to ask.
  • The WiFi hotspot and the live console.
  • Verified side by side against a NetAlly LinkSprinter.