CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

October 21, 2026Dashboard 2.48.1

Pick the root directory from your repository

A procedure's root directory was a free-text field: a typo such as a dash instead of an underscore went unnoticed until every build failed, and nothing pointed to the redeploy that applies the fix.

  • Added suggestions under the root directory setting: the procedure folders found on the repository's default branch, one click to fill the field.
  • Added a warning when no pyproject.toml exists at the typed path. Saving stays possible, for a folder that arrives in the next commit.
  • Added a Redeploy action to the confirmation after saving, which rebuilds the latest production commit with the new root directory.
October 21, 2026Dashboard 2.47.1

Get clear errors when a deployment build fails

A build that failed because of a wrong root directory or a package index it could not reach showed an error unrelated to the cause, sometimes after minutes of retries.

  • Added a clear error when a procedure's root directory does not exist, listing the folders of the repository that hold a pyproject.toml.
  • Improved builds that cannot reach a package index or a git source: they stop after the first attempt instead of several minutes of retries, and explain how to build with a private registry by committing uv.lock.
  • Fixed build errors that blamed the Python version when the real cause was a registry refusing credentials, a missing package or a dependency that needs another Python.
October 21, 2026CLI 2.3.1Dashboard 2.47.1

See teammates' cursors across the operator UI

When an operator and a remote viewer share a station, each now sees where the other is pointing anywhere on the screen, not only over form fields.

  • Added live cursors over the whole operator screen between the top and bottom bars, placed the same way on the kiosk and in the dashboard.
  • Improved the rings around a field someone else is filling: more space around the field, and no longer cut off at the edge.
  • Removed the repeated procedure name from the procedure card on stations with a single procedure, and the hover tooltips on its deployment details.
October 20, 2026Docs 2.6.2

Compare every curve in Measurement Control

Curves such as frequency sweeps or efficiency curves can be compared across every run, revision and batch in Measurement Control, and the docs now explain how.

  • Added a guide to the Waveform, Scatter and Band views for multi-dimensional measurements, with the 100-curve limit and the band computed over every run.
  • Documented how limits, reference units and the second axis appear on these charts.
October 20, 2026CLI 2.3.0Dashboard 2.47.0Docs 2.6.1

Keep your stations on your latest deployment

Stations now follow your latest production push more reliably, and you can see and act on each step from the dashboard.

  • Improved delivery to stations. A station always ends up on your newest production push, even when several builds overlap or a station is linked mid-build, and a rollback stays in place until a newer build is ready.
  • Added the reason a push was skipped to the deployment list and page, and a Pull now action on the station page to retry an install at once.
  • Improved builds and station updates. Builds retry on their own after a build service hiccup, stations stay responsive while they install an update, and Windows stations now write a log file.
October 20, 2026Dashboard 2.46.1

Get precise messages on validation errors

When a value is rejected, the API and the dashboard now say exactly what is wrong with it instead of a generic message.

  • Improved API error responses, which name the problem, for example "Invalid UUID" or "Too small: expected string to have >=1 characters".
  • Improved dashboard form errors the same way, such as the API key name field.
October 19, 2026CLI 2.2.0Dashboard 2.46.0Docs 2.6.0Python SDK 2.24.0C# SDK 2.22.0Rust SDK 2.22.0C++ SDK 2.16.0MATLAB SDK 2.16.0

Reuse groups of phases across procedures

Stations that test several products often repeat the same groups of phases in every procedure. Sequences let you write such a group once and call it wherever a procedure needs it.

  • Added sequence files: a group of phases with its own setup, main and teardown, called from a procedure with uses:, with typed inputs, plug bindings and nested calls.
  • Added an outcome per call. A failing phase stops its sequence and runs its teardown, then the procedure decides with then: whether to go on.
  • Added sequences to the dashboard: the run page nests phases under each call, the unit page lists the calls of each run, and the phase pareto tells apart the same phase used in two calls, with a Sequence filter.
  • Added sequence calls to Studio: add a phase or a sequence from any list, set a call's inputs and plugs, and edit the phases of a sequence file in the Inspector.
  • Added the sequence fields to the API, every SDK and the CLI commands for runs and phases.
October 19, 2026CLI 2.1.4Dashboard 2.45.6

Start the kiosk faster, with no white screen

Operator stations showed a long white screen while the kiosk started, and an update that could not be installed left the station without its window until a restart.

  • Improved kiosk startup: the window now appears only once the operator UI is drawn, in your system's light or dark colour, and the UI is ready up to 7x sooner on macOS (from 4.8 s to under 0.7 s on a Mac with Screen Time web filtering)
  • Fixed stations that lost their kiosk window after a failed update; a window that crashes now reopens immediately, and the station no longer waits for the window before it connects
  • Improved operator UI loading: 20% less code to start, with prompt controls, menus and run details loaded when first needed, and a recovery screen instead of a blank page if the UI hits an error
October 19, 2026Dashboard 2.45.5

Upgrade GitHub connection security

Connecting a GitHub organization to a workspace now confirms that the person connecting it owns that organization.

  • Added a GitHub authorization step when installing the TofuPilot app, so the installation is verified against your GitHub account before it is linked.
  • Added a read-only organization membership permission to the TofuPilot GitHub app. It covers members and their roles, with no access to code.
  • Updated existing installations to keep working as they are. Organization owners are asked to accept the new permission before their next reconnect.
October 19, 2026Dashboard 2.45.4Docs 2.5.51Python SDK 2.23.0C# SDK 2.21.0Rust SDK 2.21.0C++ SDK 2.15.0MATLAB SDK 2.15.0

Retry imports without creating duplicate runs

Scripts that push test reports on a schedule can now retry safely: a file you already imported is recognized instead of being imported twice.

  • Added duplicate detection to structured imports (OpenHTF, WATS, ATML, NI TestStand, STDF, ATDF), through the API and the dashboard. Importing the same file again returns its existing runs and creates nothing.
  • Added an allow_duplicate option to import a file again on purpose, as new runs next to the existing ones. The dashboard asks first when it recognizes a file.
  • Fixed OpenHTF records without a procedure in their metadata, which now import from the dashboard, and WATS WSJF files with unnamed measurements. The file picker now also offers XML, STDF and ATDF files.

Try these features today