Skip to content

Releases: Pioreactor/pioreactor

26.4.0rc6

09 Apr 18:38

Choose a tag to compare

26.4.0rc6 Pre-release
Pre-release
bump rc version

26.4.0rc5

09 Apr 18:32

Choose a tag to compare

26.4.0rc5 Pre-release
Pre-release
bump rc version

26.4.0rc4

09 Apr 18:12

Choose a tag to compare

26.4.0rc4 Pre-release
Pre-release
bump rc version

26.4.0rc3

09 Apr 18:00

Choose a tag to compare

26.4.0rc3 Pre-release
Pre-release

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 --specific now refreshes leader-side snapshots from each worker’s unit_config.ini instead of pushing leader-local config_<unit>.ini files to workers.
  • Renamed the shared bioreactor volume setting max_working_volume_ml to efflux_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_calculating now assumes the new grpredict hidden-state filter and warmup-based initialization. It no longer supports --ignore-cache, cached growth-rate/filtered-OD startup state, or od_blank correction in this job. The parameters in [growth_rate_kalman] are no longer used.
  • od_blank correction is now applied upstream in od_reading on a per-experiment basis before readings reach growth_rate_calculating. If a blank exists for the experiment, od_reading now refuses to start with OD calibrations or fused estimators enabled, instead raising a ValueError.

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> and pio config set <section> <parameter> <value> for single-entry config access from the CLI. get defaults to the effective merged value and also supports --shared / --specific for file-specific reads. set uses --shared / --specific to target config.ini or unit_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-only to hold a fixed duty cycle while still measuring and publishing measured_rpm, making it easier to inspect fan RPM at settings like --duty-cycle 100.

Bug fixes

  • Fixed dosing_automation subdosing to emit only the top-level DosingStarted and DosingStopped events, 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_batch dosing 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 nohup command execution for pio and pios by installing /usr/local/bin wrappers that source /etc/pioreactor.env before execing the Pioreactor virtualenv binaries.
  • Fixed pump calibration dosing_events from 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 app default release installs to download and apply the single release_<version>.zip archive, reusing the same archive update path as uploaded release bundles instead of fetching individual release assets.

26.4.0rc2

07 Apr 19:00

Choose a tag to compare

26.4.0rc2 Pre-release
Pre-release

Breaking changes

  • Renamed the shared bioreactor volume setting max_working_volume_ml to efflux_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_calculating now assumes the new grpredict hidden-state filter and warmup-based initialization. It no longer supports --ignore-cache, cached growth-rate/filtered-OD startup state, or od_blank correction 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-only to hold a fixed duty cycle while still measuring and publishing measured_rpm, making it easier to inspect fan RPM at settings like --duty-cycle 100.

Bug fixes

  • Fixed dosing_automation subdosing to emit only the top-level DosingStarted and DosingStopped events, 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_batch dosing 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 nohup command execution for pio and pios by installing /usr/local/bin wrappers that source /etc/pioreactor.env before execing the Pioreactor virtualenv binaries.
  • Fixed pump calibration dosing_events from 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 app default release installs to download and apply the single release_<version>.zip archive, reusing the same archive update path as uploaded release bundles instead of fetching individual release assets.

26.4.0rc1

02 Apr 15:19

Choose a tag to compare

26.4.0rc1 Pre-release
Pre-release

Upcoming

Breaking changes

  • Renamed the shared bioreactor volume setting max_working_volume_ml to efflux_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_automation subdosing to emit only the top-level DosingStarted and DosingStopped events, 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_batch dosing 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 nohup command execution for pio and pios by installing /usr/local/bin wrappers that source /etc/pioreactor.env before execing the Pioreactor virtualenv binaries.
  • Fixed pump calibration dosing_events from 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

24 Mar 15:33

Choose a tag to compare

26.3.3

Breaking changes

  • Changed the leader API route for updating per-unit bioreactor values. PATCH /api/workers/<unit>/experiments/<experiment>/bioreactor has been removed; use PATCH /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_events MQTT publishes for very small dosing volumes, where fast runs could finish before an event was emitted.
  • Fixed missed pump dosing_events observations by publishing them with MQTT QoS 2 (EXACTLY_ONCE), and updated pio mqtt to 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

24 Mar 15:14

Choose a tag to compare

26.3.3rc2 Pre-release
Pre-release

Upcoming

Breaking changes

  • Changed the leader API route for updating per-unit bioreactor values. PATCH /api/workers/<unit>/experiments/<experiment>/bioreactor has been removed; use PATCH /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_events MQTT publishes for very small dosing volumes, where fast runs could finish before an event was emitted.
  • Fixed missed pump dosing_events observations by publishing them with MQTT QoS 2 (EXACTLY_ONCE), and updated pio mqtt to 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

19 Mar 01:54

Choose a tag to compare

26.3.2

Bug fixes

  • Adjusted the UI's "Assign Pioreactors" dialog so Select all available no longer includes workers already assigned to another experiment, reducing accidental bulk reassignments while preserving individual reassignment.
  • fixed new images now having the experiment_tags table. New users should reflash their images if having trouble.
  • fixed some UI bugs

26.3.1

16 Mar 17:47

Choose a tag to compare

26.3.1

Bug fixes

  • Fix temperature automation not recognizing Pioreactor 20ml v1.0 correctly
  • Fix bug that was causing /api/bioreactor/descriptors to fail on leader-only units.