Releases: Pioreactor/pioreactor
Releases · Pioreactor/pioreactor
26.4.0rc6
bump rc version
26.4.0rc5
bump rc version
26.4.0rc4
bump rc version
26.4.0rc3
Upcoming
Breaking changes
- Unit-specific configuration is now owned by each worker’s local
unit_config.ini. The filename-based config editor APIs (/api/config/files*) have been removed; use/api/config/shared,/api/config/units/<unit>/specific, and/api/config/units/<unit>instead. pios sync-configs --specificnow refreshes leader-side snapshots from each worker’sunit_config.iniinstead of pushing leader-localconfig_<unit>.inifiles to workers.- Renamed the shared bioreactor volume setting
max_working_volume_mltoefflux_tube_volume_ml, including the UI label (Efflux tube level), MQTT/API state, and device config/cache migration during update. - Job and Automation controls now use worker-provided descriptors for individual Pioreactors, so worker-only plugin jobs automations appear in per-unit UI even if the leader doesn’t have that plugin installed. Bulk “Control All Pioreactors” automation flows remain leader-driven. A update script will attempt to add the necessary UI files to workers.
growth_rate_calculatingnow assumes the newgrpredicthidden-state filter and warmup-based initialization. It no longer supports--ignore-cache, cached growth-rate/filtered-OD startup state, orod_blankcorrection in this job. The parameters in[growth_rate_kalman]are no longer used.od_blankcorrection is now applied upstream inod_readingon a per-experiment basis before readings reachgrowth_rate_calculating. If a blank exists for the experiment,od_readingnow refuses to start with OD calibrations or fused estimators enabled, instead raising aValueError.
Enhancements
- Updated the config editor and worker-add flow for worker-owned unit configuration. The UI now edits shared cluster config separately from per-unit
unit_config.ini, and existing leaders update their add-worker helper so new workers receive shared config without overwriting their unit-specific config. - Added
pio config get <section> <parameter>andpio config set <section> <parameter> <value>for single-entry config access from the CLI.getdefaults to the effective merged value and also supports--shared/--specificfor file-specific reads.setuses--shared/--specificto targetconfig.iniorunit_config.ini. - Added short-lived leader-side caching for several fan-out metadata APIs, reducing repeated worker fetches and improving UI load times for calibrations, protocols, estimators, automations, jobs, and installed plugins.
- New growth-rate algorithm: designed the growth-rate EKF around a log-OD state model. You should see much faster convergence and better behaviour.
- Added
pio run stirring --measure-rpm-onlyto hold a fixed duty cycle while still measuring and publishingmeasured_rpm, making it easier to inspect fan RPM at settings like--duty-cycle 100.
Bug fixes
- Fixed
dosing_automationsubdosing to emit only the top-levelDosingStartedandDosingStoppedevents, avoiding duplicate nested dosing events during recursive IO actions. - Fixed repeated in-process actions such as dosing/pump runs to clean up MQTT listeners, signal handlers, and short-lived MQTT clients more reliably, preventing runaway socket/file-descriptor growth in long-lived jobs.
- Fixed
fed_batchdosing to skip additions that would push the vial past the configured hard-stop safety volume, pausing the automation instead of risking overflow. - Fixed non-interactive SSH and
nohupcommand execution forpioandpiosby installing/usr/local/binwrappers that source/etc/pioreactor.envbefore execing the Pioreactor virtualenv binaries. - Fixed pump calibration
dosing_eventsfrom changing retained bioreactor state such as vial volume and alt-media fraction. - Fixed overview chart legends so relabelled aliases are truncated consistently and still hide/show the correct series when clicked.
- Fixed
pio update appdefault release installs to download and apply the singlerelease_<version>.ziparchive, reusing the same archive update path as uploaded release bundles instead of fetching individual release assets.
26.4.0rc2
Breaking changes
- Renamed the shared bioreactor volume setting
max_working_volume_mltoefflux_tube_volume_ml, including the UI label (Efflux tube level), MQTT/API state, and device config/cache migration during update. - Job and Automation controls now use worker-provided descriptors for individual Pioreactors, so worker-only plugin jobs automations appear in per-unit UI even if the leader doesn’t have that plugin installed. Bulk “Control All Pioreactors” automation flows remain leader-driven. A update script will attempt to add the necessary UI files to workers.
growth_rate_calculatingnow assumes the newgrpredicthidden-state filter and warmup-based initialization. It no longer supports--ignore-cache, cached growth-rate/filtered-OD startup state, orod_blankcorrection in this job. The parameters in[growth_rate_kalman]are no longer used.
Enhancements
- Added short-lived leader-side caching for several fan-out metadata APIs, reducing repeated worker fetches and improving UI load times for calibrations, protocols, estimators, automations, jobs, and installed plugins.
- New growth-rate algorithm: designed the growth-rate EKF around a log-OD state model. You should see much faster convergence and better behaviour.
- Added
pio run stirring --measure-rpm-onlyto hold a fixed duty cycle while still measuring and publishingmeasured_rpm, making it easier to inspect fan RPM at settings like--duty-cycle 100.
Bug fixes
- Fixed
dosing_automationsubdosing to emit only the top-levelDosingStartedandDosingStoppedevents, avoiding duplicate nested dosing events during recursive IO actions. - Fixed repeated in-process actions such as dosing/pump runs to clean up MQTT listeners, signal handlers, and short-lived MQTT clients more reliably, preventing runaway socket/file-descriptor growth in long-lived jobs.
- Fixed
fed_batchdosing to skip additions that would push the vial past the configured hard-stop safety volume, pausing the automation instead of risking overflow. - Fixed non-interactive SSH and
nohupcommand execution forpioandpiosby installing/usr/local/binwrappers that source/etc/pioreactor.envbefore execing the Pioreactor virtualenv binaries. - Fixed pump calibration
dosing_eventsfrom changing retained bioreactor state such as vial volume and alt-media fraction. - Fixed overview chart legends so relabelled aliases are truncated consistently and still hide/show the correct series when clicked.
- Fixed
pio update appdefault release installs to download and apply the singlerelease_<version>.ziparchive, reusing the same archive update path as uploaded release bundles instead of fetching individual release assets.
26.4.0rc1
Upcoming
Breaking changes
- Renamed the shared bioreactor volume setting
max_working_volume_mltoefflux_tube_volume_ml, including the UI label (Efflux tube level), MQTT/API state, and device config/cache migration during update. - Job and Automation controls now use worker-provided descriptors for individual Pioreactors, so worker-only plugin jobs automations appear in per-unit UI even if the leader doesn’t have that plugin installed. Bulk “Control All Pioreactors” automation flows remain leader-driven.
Enhancements
- Added short-lived leader-side caching for several fan-out metadata APIs, reducing repeated worker fetches and improving UI load times for calibrations, protocols, estimators, automations, jobs, and installed plugins.
Bug fixes
- Fixed
dosing_automationsubdosing to emit only the top-levelDosingStartedandDosingStoppedevents, avoiding duplicate nested dosing events during recursive IO actions. - Fixed repeated in-process actions such as dosing/pump runs to clean up MQTT listeners, signal handlers, and short-lived MQTT clients more reliably, preventing runaway socket/file-descriptor growth in long-lived jobs.
- Fixed
fed_batchdosing to skip additions that would push the vial past the configured hard-stop safety volume, pausing the automation instead of risking overflow. - Fixed non-interactive SSH and
nohupcommand execution forpioandpiosby installing/usr/local/binwrappers that source/etc/pioreactor.envbefore execing the Pioreactor virtualenv binaries. - Fixed pump calibration
dosing_eventsfrom changing retained bioreactor state such as vial volume and alt-media fraction. - Fixed overview chart legends so relabelled aliases are truncated consistently and still hide/show the correct series when clicked.
26.3.3
26.3.3
Breaking changes
- Changed the leader API route for updating per-unit bioreactor values.
PATCH /api/workers/<unit>/experiments/<experiment>/bioreactorhas been removed; usePATCH /api/workers/<unit>/bioreactor/update/experiments/<experiment>instead.
Bug fixes
- Fixed reassignment history tracking in the leader web app's SQLite connection by enabling recursive triggers, preventing stale open rows from accumulating in
experiment_worker_assignments_history. Added an app-update database migration to repair stale open assignment-history rows in existing leader databases. This was caused by the new "re-assignment" dialog box in the Pioreactor's page. The biggest impact was duplicate logs showing up on the Logs UI page.- Fixed worker reassignment so moving a Pioreactor from one experiment to another now stops jobs still running under the previous experiment.
- Fixed pump
dosing_eventsMQTT publishes for very small dosing volumes, where fast runs could finish before an event was emitted. - Fixed missed pump
dosing_eventsobservations by publishing them with MQTT QoS 2 (EXACTLY_ONCE), and updatedpio mqttto subscribe at the same QoS when tailing topics. - Fixed recent log tables in the UI so live MQTT log events stay sorted by timestamp even if they arrive slightly out of order, instead of appearing under older events until refresh.
- Fixed experiment profile previews so inline YAML comments like
# 1/h,# mL, and timing notes now appear in the human-readable display in the create, edit, and profile preview UIs.
26.3.3rc2
Upcoming
Breaking changes
- Changed the leader API route for updating per-unit bioreactor values.
PATCH /api/workers/<unit>/experiments/<experiment>/bioreactorhas been removed; usePATCH /api/workers/<unit>/bioreactor/update/experiments/<experiment>instead.
Bug fixes
- Fixed reassignment history tracking in the leader web app's SQLite connection by enabling recursive triggers, preventing stale open rows from accumulating in
experiment_worker_assignments_history. - Added an app-update database migration to repair stale open assignment-history rows in existing leader databases. This was caused by the new "re-assignment" dialog box in the Pioreactor's page. The biggest impact was duplicate logs showing up on the Logs UI page.
- Fixed worker reassignment so moving a Pioreactor from one experiment to another now stops jobs still running under the previous experiment.
- Fixed pump
dosing_eventsMQTT publishes for very small dosing volumes, where fast runs could finish before an event was emitted. - Fixed missed pump
dosing_eventsobservations by publishing them with MQTT QoS 2 (EXACTLY_ONCE), and updatedpio mqttto subscribe at the same QoS when tailing topics. - Fixed recent log tables in the UI so live MQTT log events stay sorted by timestamp even if they arrive slightly out of order, instead of appearing under older events until refresh.
- Fixed experiment profile previews so inline YAML comments like
# 1/h,# mL, and timing notes now appear in the human-readable display in the create, edit, and profile preview UIs.
26.3.2
26.3.2
Bug fixes
- Adjusted the UI's "Assign Pioreactors" dialog so
Select all availableno longer includes workers already assigned to another experiment, reducing accidental bulk reassignments while preserving individual reassignment. - fixed new images now having the
experiment_tagstable. New users should reflash their images if having trouble. - fixed some UI bugs
26.3.1
26.3.1
Bug fixes
- Fix temperature automation not recognizing Pioreactor 20ml v1.0 correctly
- Fix bug that was causing
/api/bioreactor/descriptorsto fail on leader-only units.