Instrument buses, extensibility and the settled design questions.
* Transports: VXI-11 over ONC-RPC with the portmapper lookup, USBTMC over
libusb with hotplug discovery, and an optional VISA path resolved at run
time. TCP and serial as before.
* Instruments: per-model profiles for the Siglent SSA3021X/3032X/3075X and
SVA1015X/1032X/1075X and the Rigol DSA705/710 and DSA815/832/875, each
with its own range, point count, bandwidths and dialect, narrowed from
the family defaults as soon as the instrument identifies itself.
* Runs: operator-supplied commands sent when a run starts and when it ends,
which is how a LISN, relay box or mast that speaks SCPI is switched.
PeakEmi drives no relays itself. The closing commands run whether the run
finished, aborted or failed.
* Reporting: JSON export of the result table and report templates with a
logo, address and free text, editable in the application and shareable as
a file.
* Extensibility: Python driver plugins through an embedded interpreter,
imported only after the operator approves that exact file.
* Packaging: a proper macOS disk image, with icon, bundle metadata,
signing and an /Applications symlink.
* Qt 6.8 is the minimum, matching what CI builds against. The plot stays
QPainter-based.
Pre-compliance data only. Results are indicative engineering data and are
not an accredited compliance measurement.