New update! Some bug fixes, camera improvements, and UI improvements in this release.
26.9.0
Breaking changes
- MCP changes:
- Renamed MCP tools
get_pioreactor_unit_capabiltiestoget_pioreactor_unit_capabilitiesandassign_workers_to_experimenttoassign_worker_to_experiment. - Changed MCP job-launch
optionsto require a JSON object with scalar values, such as{"target-rpm": 500}, instead of a JSON-encoded string. Stopping jobs now requires an explicitpioreactor_unit; use"$broadcast"to target all workers in the experiment. - Removed the extra
{"result": ...}wrapper from MCP list responses. Unavailable workers now returnnullin capability results instead of an empty list. - Restricted MCP
db_query_dbto a single SELECT query and changed its response to{rows, row_count, truncated}. Queries return at most 100 rows by default; setlimitup to 1,000. MCP log requests now requirelinesbetween 1 and 1,000.
- Renamed MCP tools
Enhancements
- use
[camera].use_ir_ledto control whether the camera should work with the IR LED or not. - adding Experiment tags as an exportable dataset.
- Ability to select and reorder charts on the Experiment Overview and Pioreactors page.
- Added the ability to name camera snapshots when capturing them and rename existing photos from the Camera Stills page.
- Added a labelled
air_bubblersparger to bioreactor diagrams when thepioreactor-air-bubblerplugin is configured, with highlighting while it is active. - Improved MCP tool discovery with read-only annotations, clearer job-control guidance, and more detailed capability summaries. Added SQL query parameters for safely supplying values with
?placeholders. - More clear icons in the UI
Bug fixes
- Fix “Now” time selector on the UI.
- Fix experiment filter in Experiments database export.
- Fixed experiment-profile pause, resume, and setting updates so they still reach jobs that start while the action is running.
- Fixed PWM pumps not releasing their worker when interrupted, which could leave them running after a command was stopped.
- Fixed MCP calls waiting indefinitely for background tasks by bounding polling and reporting when an operation may still be running. Improved API error details and handling of experiment names containing URL-reserved characters.