Changelog¤
1.1.0 (2026-07-06)¤
Features¤
- cli: add --version listing installed instro packages (#228) (baea5fd)
- cli: report backend and interface coverage in discover (#226) (abe1b1b)
- publishers: add jsonl format and deprecate the array-JSON writer (#227) (ce5a1b9)
- rearrange README, add badges, and add unstable extra (#207) (98c4103)
Bug Fixes¤
1.0.1 (2026-07-02)¤
Bug Fixes¤
1.0.0 (2026-07-02)¤
Miscellaneous¤
0.14.0 (2026-06-30)¤
⚠ BREAKING CHANGES¤
- scope: graduate InstroScope from instro-unstable to core (#167)
Features¤
- ethernetip: graduate EtherNet/IP out of unstable into a dedicated package (#178) (4f716e4)
- psu: add support for matrix WPS300s [closes #124] (#125) (5e84286)
- scope: graduate InstroScope from instro-unstable to core (#167) (787a8ba)
Bug Fixes¤
0.13.0 (2026-06-25)¤
⚠ BREAKING CHANGES¤
- 149 bug documentation for get channel does not match behavior (#151)
Features¤
- cli: add instro discover command (#99) (699648c)
- instrument: auto-prepend instrument name in get_channel (#152) (e807209), closes #147
Bug Fixes¤
- 149 bug documentation for get channel does not match behavior (#151) (f4f3966)
- closes #149. First, updates documentation about timeout behavior. (f4f3966)
- transports: disable Nagle on raw TCP sockets for pyvisa-py (#157) (e1ce26a)
0.12.1 (2026-06-24)¤
Bug Fixes¤
- dmm: apply Agilent34401A manual range without requiring set_digits (#148) (563aabb)
- dmm: record measurement function only after driver accepts it (#146) (d720cf1)
- ethernetip: disable cpppo UDP in simulator tests (#137) (4048fbf)
- ethernetip: remove strings from Python EIP surface (#128) (c133d81)
- visa: catch pyvisa errors so @ivi to @py fallback fires correctly (#136) (9329df6)
0.12.0 (2026-06-22)¤
Features¤
- ethernetip: reconnect after transient failures (#100) (e9a35da)
- visa: default to @ivi backend, fall back to @py (#130) (61a2166)
0.11.0 (2026-06-17)¤
⚠ BREAKING CHANGES¤
- psu: update bk 914X with OVP, OCP, and remote sense (#93)
- psu: remove default channel selection from psu drivers (#106)
Features¤
- psu: add OVP, OCP, remote sense to bk 9115 (#94) (783f753)
- psu: add Rigol DP800 ovp, ocp, and remote sense (#114) (d1f1587)
- psu: update bk 914X with OVP, OCP, and remote sense (#93) (df0e28f)
- psu: update tdk genesys with ovp, ocp, remote sense (#104) (1bd22a0)
Bug Fixes¤
- build: resolve Git Bash for just recipes on Windows (#110) (8c8ae6b)
- daq: guard NI fetch_analog against fetch before start() (#116) (2e2f4bc)
- daq: make close() tolerant of double-close and failed open (#108) (5474c98)
- daq: mcc fetch path integrity fix (#113) (aa68289)
- daq: raise clear error when DAQ methods are called before open() (#97) (9f9ed5d)
- lib: bundle every pyvisa-py backend for clean-install VISA support (#103) (60604dc)
- psu: remove default channel selection from psu drivers (#106) (45c6423)
0.10.0 (2026-06-12)¤
⚠ BREAKING CHANGES¤
- psu: support simulated protection and sense (#47)
- psu: add tui for sim and refactor command set for ovp ocp and remote sense (#30)
Features¤
- ethernetip: batch reads (#68) (0afb900)
- psu: add tui for sim and refactor command set for ovp ocp and remote sense (#30) (16f89b2)
- psu: support simulated protection and sense (#47) (0ad4cf0)
Bug Fixes¤
0.9.0 (2026-06-10)¤
⚠ BREAKING CHANGES¤
- daq: decouple acquisition start from the daemon thread (#62)
- daq: make driver channel/timing state private and read-only (#56)
Features¤
- daq: make driver channel/timing state private and read-only (#56) (c34cf0d)
- psu: add Keysight E36100 support (#48) (417035e)
- psu: update Siglent SPD3303X driver and tests (#55) (a07f0f3)
- scope: add hardware-validated Siglent SDS1104X-E driver (#74) (b572a87)
Bug Fixes¤
- daq: stop kwarg crash and samples_per_channel=0 below 10 Hz (#83) (6539284)
- dmm: accept the Keithley 2400 signed +0 no-error reply (#85) (2af65da)
- lib,daq: make Instrument start/stop/start restartable (#81) (eb60201)
- lib: stop closing the shared pyvisa ResourceManager in VisaDriver (#79) (1865d61)
Miscellaneous¤
0.8.0 (2026-06-02)¤
⚠ BREAKING CHANGES¤
- daq: split digital line and port configuration into separate methods (#36)
- daq: require fully-qualified NI physical channel names (#41)
- daq: remove InstroDAQFacade; driver owns channel/timing state (#19)
Features¤
- daq: implement digital port read/write for NI and Keysight drivers (#50) (3150ae0)
- daq: require fully-qualified NI physical channel names (#41) (a9dbdfd)
- psu: add ovp, ocp, and remote sense method signatures (#31) (ecd4071)
Bug Fixes¤
- psu: expect "+0" from TDK Lambda SYST:ERR? response (#54) (5f9e4a9)
- tests: add tests/init.py so pyaardvark's bundled tests package stops shadowing (#44) (d755f95)
Miscellaneous¤
- daq: remove InstroDAQFacade; driver owns channel/timing state (#19) (cd43847)
- daq: split digital line and port configuration into separate methods (#36) (52c8c44)
0.7.0 (2026-05-27)¤
Features¤
0.6.0 (2026-05-01)¤
Features¤
- add CD workflow to publish instro-unstable to GemFury (#167) (b210ccd)
- add core logging capabilities (#148) (98c7c05)
- add experimental workspace package for in-development features (#154) (e1a4b82)
- add mccdaq driver (#82) (c6acfee)
- add instro-unstable package alongside experimental (#165) (e57c218)
- ethernetip: add experimental rust bindings (#164) (6ec03b0)
- modbus: add config types foundation for InstroModbus (#155) (0aab181)
- modbus: add config validation for swaps, scale, and overlaps (#157) (2c5d86b)
- modbus: add InstroModbus core read/write (#156) (97a18f7)
- modbus: add read groups, bitmap extraction, background polling (#159) (8ddc7a0)
- modbus: add write safety — value maps, limits, type checking (#158) (1cf0301)
- scope: add Keysight 1200X oscilloscope driver (#175) (34bfb2e)
- scope: add InstroScope instrument class (#172) (5e21937)
- scope: add oscilloscope types and driver base classes (#171) (ce666f2)
- scope: add scope public API and driver discovery (#173) (502b259)
- scope: add Tektronix 2 Series MSO driver (#174) (855a61e)
- use absolute timestamps for fetch waveform data (#187) (ddced95)
Bug Fixes¤
- add actions read permission (#153) (dc696eb)
- dmm: don't start reading from DMM if not fully configured (#145) (e56db93)
0.5.2 (2026-03-20)¤
Bug Fixes¤
0.5.1 (2026-02-23)¤
Features¤
- adding relay for the keysight_34980a (#114) (0f25773)
- reduce NominalConnectPublisher import path (#120) (d6ca816)
Bug Fixes¤
-
daq: raise exceptions with verbose messages instead of failing silently, including for unconfigured channels in write_digital_line() (#118) (ce6cf81)
- daq: support multiple channels with same physical channel (#87) (aa069b6)
- keysight: correct logic polarity comparison in digital channel config (#116) (976800b)
0.5.0 (2026-02-04)¤
Features¤
0.4.0 (2025-12-19)¤
Features¤
- Handle bad network conditions by writing to fallback file (#66) (b7c3e4c)
- add .avro file logging capabilities (#70) (7b0c9a9)
- add package name and version tag to measurements/commands(#74) (d2e018a)
- add support for terminal config in InstroDAQ (#62) (f92a712)
- add configuration selection for visa backends (#63) (ab3051e)
- data access from main thread to background daemons (#68) (0a04d6f)
- software timed analog output for daq (#72) (1a5f443)
Bug Fixes¤
- labjack STREAM_ACTIVE and segfault (#77) (c9b7551)
- prevent nominal core publisher from raising rust runtime error on exit (#76) (510decb)
- remove analog input channels to avoid multiple channels with same physical channel (#65) (5d5ed50)
- nominaldaq loop rate lies when background enable is false (#75) (ca48db6)
Documentation¤
0.3.0 (2025-11-20)¤
Features¤
0.2.0 (2025-11-05)¤
Features¤
- i2c (#33) (d61c69f)
- interface for drivers to HAL (#48) (02ecafe)
- public abilities to define background daemon functions (#50) (36a155d)
- unifying the instrument, driver, data_handler and factory patterns across HALs (#45) (a8c720f)
Bug Fixes¤
0.1.0 (2025-10-15)¤
Features¤
- add just build command (#37) (1a7454e)
- allow IDN match for "BK PRECISION" (#34) (0632d53)
- overhaul devx (89b95a5)
- packaging restructure for extensibility (#35) (0027400)
- poetry -> uv (4ac7738)
- psu registry/discovery without factory (#23) (e91c383)