Repository navigation
v1.3.0
102 commits since 1.2.15. The changelog carries all of them; this is what changed
if you use the tool.
What a reader sees
A figure the tool could not fully measure now says so instead of looking like a
measurement. A controller's uplink resting on one end's reading carries a <=
ceiling marker, an unread PCIe link is no longer drawn like a healthy one, and
the detail panel tells a value that cannot exist on this bus from a reading
nobody took. The interactive view grades against your configured thresholds
rather than the shipped ones, on every page and in the exit code.
The documentation is available in German, and a guard keeps the two halves from
parting in silence.
For scripts and monitoring
A run that fails in --format json now answers in JSON rather than falling
silent, so a jq pipeline can tell a failure from a command that produced no
data. A section command that exits non-zero says how many findings it did not
show and where to read them. A reader that walks away leaves 141 rather than
1, which is the code for an actionable finding, and that now holds on Windows
too. lsdsk --no-record record is refused instead of quietly recording nothing.
Reading a machine that does not cooperate
A capture is untrusted input and is treated as one. Every integer is bounded by
the width of its own source, a file naming one key twice is refused rather than
half read, a device unplugged mid-scan no longer aborts the scan, and several
shapes that used to make the fabric walk quadratic are cut in one pass. Replaying
a large capture no longer costs minutes.
Platforms
The Win32 structure bindings have the layout Windows gives them on every runner,
not the layout of the machine that happened to build them. A refused path is
named rather than printed as PosixPath('...'). A Windows capture is named by
the machine that took it.
Inside
Every domain value is a validated model, closed vocabularies travel as their own
members, and __all__ states the surface other modules really reach for.
Removed
Three dead threshold constants, one of which (CRC_ERRORS_SIGNIFICANT) was
exported with no reader anywhere. If you imported it, read the field off
DEFAULT_THRESHOLDS instead. Seven py.typed markers in subpackages that did
nothing; the one at the top-level package is what PEP 561 needs and it stays.