CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

November 3, 2026Dashboard

Deploy procedures from large monorepos

Deployments from a large repository could time out while the source was being fetched, before any procedure code ran.

  • Fixed deployment timeouts on large repositories: only the commit being deployed is downloaded, and in a large repository only the procedure's folder, its uv workspace and the local packages it depends on are checked out.
  • Improved the message for a root directory that does not exist at the deployed commit: the deployment now fails at once and lists the folders that hold a pyproject.toml.
  • Improved versions read from git tags, such as with setuptools-scm or hatch-vcs: the tags on the deployed commit are fetched, also when it is not the latest commit of the default branch.
November 3, 2026Dashboard 2.51.28CLI 2.12.1

Prevent duplicate serials after a passing test

After a unit passes, operators swap in the next device, and pressing Run again by mistake tested that new device under the previous unit's serial number.

  • Removed Run again from the station outcome screen after a PASS, so Next unit is the only way forward and the next device is always identified
  • Updated the fixture-level Run again on multi-slot stations to keep only the units that did not pass, while slots that passed ask for their next unit
  • Kept Run again after a PASS in Studio, where rerunning the same unit is part of developing a procedure
November 2, 2026CLI 2.12.0Dashboard 2.51.27Docs 2.9.21

Show your own log lines, libraries' with -v

A run now shows your procedure's own log lines by default and an installed library's lines with -v, for TofuPilot procedures, OpenHTF, pytest and Robot.

  • Added your plugs' INFO lines and print output to the terminal, and your own DEBUG lines with -v.
  • Updated the terminal, --json, the operator UI and the kiosk to show a library's INFO lines only with -v. Warnings and errors always show, and hidden lines stay in the run log.
  • Added print output and OpenHTF's errors to OpenHTF runs, and removed the repeated "Captured log" block from pytest runs.
  • Added a normal and verbose switch to the Studio logs panel.
November 1, 2026WebsiteDocs

Update dependencies for security

Routine security maintenance: none of the advisories involved affected TofuPilot, so there is nothing to do on the client side.

  • Updated a third-party library to its patched release following a new security advisory.
October 29, 2026CLI 2.11.2Docs 2.9.20

Catch an outdated uv.lock before you deploy

tofupilot validate now checks your uv.lock the way the deployment build does, offline on your machine, so you see the build's verdict before you push.

  • Added lock checks to tofupilot validate: it reports a uv.lock that no longer matches pyproject.toml, a missing one, and one that will not ship with the deployment (ignored by .gitignore or not committed).
  • Added a guard to tofupilot deploy: it refuses an outdated uv.lock before uploading, and warns when the lock is missing or left out.
  • Improved tofupilot validate --watch so that saving pyproject.toml or uv.lock runs the check again.
October 29, 2026Dashboard 2.51.23

Fix live run view freezing on null characters

A station whose test logged a null character stopped updating its live view in the dashboard until the next run started.

  • Fixed live run updates being refused when a log, measurement or prompt text contained a null character. The character is now removed before the update is stored.
  • Fixed the dashboard showing an outdated run state when opening such a station in the middle of a run. Recorded runs were never affected.
October 29, 2026Dashboard 2.51.22CLI 2.11.1

Show applied station settings in the activity

The station activity now confirms that a setting changed from the dashboard was actually applied on the station.

  • Fixed the station activity, which showed a setting change as requested but never as applied by the station.
  • Added an entry when a station restores its launch on boot service at startup, for example after it was disabled by hand.
October 29, 2026CLI 2.11.0Docs 2.9.19

Run your current folder's procedure by default

Developing a procedure is now a single tofupilot run from its folder, and moving a machine between station and development work no longer leaves it in a mixed state that opened the kiosk on a developer's computer.

  • Added the current folder as the default for tofupilot run, and made the procedure ID optional on --deployment so it picks from the pulled deployments. Station scripts started outside a procedure folder keep running their deployment.
  • Added automatic station removal when you log in as a user on a station, and the new tofupilot logout --station: the station service stops, queued runs upload under the station first, then its login, deployments and desktop icon are removed. Nothing changes while a run is still in progress.
  • Improved the offline upload queue so each run only uploads with the kind of login that recorded it, so station runs never appear under a user.
October 29, 2026CLI 2.10.4Docs 2.9.18

Catch plug call mistakes before running

Some plug calls in a phase only failed at run time, on the station, after the operator had started the test.

  • Added tofupilot validate warnings for a plug method called with a keyword argument, an await on a plug call, and a property called like a method, each with the corrected call when one exists.
  • Improved checks on plug classes defined under an if or a try: misspelled methods, unknown with: keys and misspelled class names are now reported there too.
October 29, 2026CLI 2.10.3

Hide secrets in Studio plug debugger results

The plug debugger in Studio now gives a plug the procedure's environment variables, secrets included, so a method could return a secret and show it in clear.

  • Fixed secret values appearing in plug debugger results and errors: they are now masked, as they already are in tofupilot plug call output and plug logs.
  • Added an end-to-end check that the procedure's env: reaches a debugged plug, with the plug's own env: taking precedence.

Try these features today