Releases: Pioreactor/pioreactor
Releases · Pioreactor/pioreactor
26.4.3
26.4.3
Bug fixes
- Performance improvements in the UI frontend
- Improved software update reliability by avoiding temp-file name collisions between web-uploaded release archives and
pio update appdownloads. - Fixed duplicate
pio run od_readingstarts to fail before reinitializing ADC hardware, avoiding disruptions to an already-running OD reader and spurious noisy-reference warnings.
26.4.2
26.4.2
Enhancements
-
Updated
pio cache purgeto parse Python literals for cache keys, so tuple-shaped entries can be removed directly. For example:pio cache purge leader_multicast_get_cache "('multicast_get', 'calibrations', '/unit_api/calibrations', 'unit1')"
Bug fixes
- Fix new worker images not having the correct data in ~/.pioreactor/ui
- Fix bioreactor diagram not responding to waste pump actions.
- Improved experiment profile validation to catch more semantic errors before execution or save, including conflicting action time fields and invalid profile expressions.
- Updated the Create/Edit Experiment Profile UI to show backend validation messages when a profile save fails, making profile errors easier to diagnose.
- Fix for blinking self-tests on the Pioreactors page
- Fix for Pioreactor page crashing.
26.4.1
26.4.1
- hot fix release to fix PWM bug.
26.4.0
26.4.0
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.- new version of
grpredictthat has significant changes to the responsiveness of the growth-rate model.
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.0rc7
bump rc version
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.