this release has some important bug fixes, great UX improvements, and a very important update to the turbidostat automation.
26.2.23
Enhancements
- Added
pios jobs listandpios jobs list runningto inspect worker job history and running jobs from the leader CLI. - Added
--config-override <section> <param> <value>topios runto temporarily override config values when launching worker jobs. - Added
GET /unit_api/jobsfor per-unit job history (ordered by newest first), complementing the existingGET /unit_api/jobs/runningendpoint. - Updated
pio cache viewto accept an optional key filter:pio cache view <cache> <key>now returns only that key when provided. - Added
pio update --sha <commit>(andpio update app --sha <commit>) to install from a specific git commit. - Added a new calibration coverage matrix page in the UI (linked from Calibrations) to show cluster-wide per-unit/per-device coverage and quick actions: open active calibration details, view available calibrations for a device, or create missing calibrations via
/protocols/<unit>/<device>. - Added card-level quick controls to both
/pioreactorsand/pioreactor/<unit>: clicking an activity state now runs contextual actions (start, stop, pause, resume), and shows an in-place spinner until MQTT reports the expected state transition. - Added inline quick-edit popovers for card settings values.
- Improved the UI’s “Assign Pioreactors” dialog: units already assigned to another experiment can now be selected for reassignment, and “Select all” now applies consistently to all listed units.
- Automation advanced config now discovers and displays both
[<x>_automation.config]and per-automation sections like[<x>_automation.<automation_name>], enabling section-specific overrides from the UI.
Breaking changes
- Changed Turbidostat biomass signal behavior:
- Default behavior is now
biomass_signal=auto, with selection order:- active
od_fusedestimator - active OD calibration for the configured angle (
od) - normalized OD
- active
- You can still explicitly override
biomass_signalin config (including via profiles). - Moved config from
[turbidostat.config]to[dosing_automation.turbidostat]. - Update scripts migrate existing values from the legacy section/key when present.
- Default behavior is now
- Renamed
pio cache cleartopio cache purge. - Renamed
/api/is_local_access_point_activeto/api/local_access_point(now returns{active: <bool>}). - Consolidated experiment profile routes:
- Kept
/api/experiment_profilesand/api/experiments/<experiment>/experiment_profiles/*. - Removed
/api/contrib/experiment_profilesand/api/experiment_profiles/running/experiments/<experiment>. PATCHnow targets/api/experiment_profiles/<filename>.
- Kept
- Consolidated config API routes under
/api/config/*:/api/units/<pioreactor_unit>/configurationis now/api/config/units/<pioreactor_unit>./api/configs+/api/configs/<filename>+/api/configs/<filename>/historyare now/api/config/files+/api/config/files/<filename>+/api/config/files/<filename>/history.
- Removed
/api/contrib/*endpoints in favor of resource-scoped routes:/api/automations/descriptors/<automation_type>,/api/jobs/descriptors,/api/charts/descriptors, and/api/datasets/exportable*. - Renamed
pio jobs removetopio jobs purge. - Replaced
pio jobs runningwithpio jobs list running(list runningis now a running-only filter ofpio jobs listoutput).
Bug fixes
- Fixed usage of the
duration_between_led_off_and_od_readingconfig. - OD reading now uses a trimmed-mean + prior smoother on ADS1114-based units (v1.5s), while keeping sinusoidal regression on non-ADS1114 units where AC hum is present. This also skips unnecessary AC frequency detection on ADS1114 channels.
- Simplified ADS1114 reads in
pioreactor.utils.adcsto use continuous conversion mode, replacing per-sample config-write + ready-poll cycles with paced conversion-register reads. This reduces I2C traffic and lowers cross-process bus contention risk on ADS1114-based units. - Fixed
/api/config/units/$broadcastto correctly merge each unit’s ownconfig_<unit>.iniinstead of using a shared (and wrong)config_$broadcast.inipath. - Bumped rpi_hardware_pwm to avoid a race condition setting up PWMs.
- Fixed calibration detail pages so
Set active/Set inactivewaits for backend task completion before refetching, preventing stale “Set active” and missing “Active” status until manual refresh. - Made IR reference-noise gating in OD reading scale with the configured reading interval (baseline
std <= 0.01at5.0s), including when the interval is changed at runtime. - Fixed Inventory model updates and active/inactive toggles to show success only after confirmed backend
2xxresponses, with explicit error feedback on failure. - Fixed an issue where changing RPM while stirring was paused would restart stirring.
self_testnow cleans up better when interrupted.- CLI change gives plugin-registered commands precedence, enabling intentional overrides to existing
pio runcommands. - Fixed UI bugs on the Configuration page
- Fixed
HAT_PRESENTnot being respected in the UI flow. - PWMs clean up better, and display a warning if something looks wrong.