Skip to content

Changelog

Stay up to date with new features and improvements.

August 11, 2026Dashboard 2.38.6

Clarify procedure and station setup tabs

The Get Started tabs on procedure and station pages now say what each integration path actually does, so new users can pick between the CLI and the SDKs at a glance.

  • Renamed the setup tabs to "TofuPilot runs your tests" and "Your code sends results" on both pages, with icons matching each path
  • Improved the station setup descriptions: supported frameworks and SDK languages are now listed inline in a single readable sentence
  • Updated the API key empty state to a shorter, clearer call to action
August 11, 2026Python SDK 2.16.0

Restore the OpenHTF TofuPilot context manager

Bench scripts using with TofuPilot(test): work again without code changes, while a deprecation warning points to the recommended upload callback and CLI operator UI.

  • Added the TofuPilot context manager back as a thin wrapper around the upload output callback, keeping the historical quiet Ctrl-C exit
  • Fixed duplicate uploads when reusing one test object across several runs, and restored console quieting between runs
  • Fixed attachment uploads to always verify TLS with the client's CA bundle on self-hosted instances with a private CA
August 11, 2026Dashboard 2.38.5

Fix MCP client connection after authorization

Connecting an AI client over MCP could stall after clicking Authorize, leaving the client waiting even though access was granted.

  • Fixed the authorization hand-off so the client receives its connection code reliably on the first try
  • Removed the confusing "finish connecting manually" step from the authorization screen
August 11, 2026Dashboard 2.38.5

Read full measurement names in pareto charts

Long measurement and phase names were cut off after 24 characters in Measurement Control and Phase Pareto, so bars that differed only by frequency band or test temperature all looked identical and there was no way to tell which one to click.

  • Added a name column that sizes itself to the longest name on screen, with a drag handle to widen or narrow it and a double-click to return to automatic
  • Improved shortening to keep both ends of a name when space runs out, so measurements that differ only by their suffix stay distinguishable
  • Added the execution count and Cpk value at the end of each bar, and kept the value scale pinned in view while scrolling through long lists
August 10, 2026Dashboard 2.38.3Python SDK 2.15.2C# SDK 2.13.2Rust SDK 2.14.2C++ SDK 2.9.0MATLAB SDK 2.9.0Docs 2.4.11

Fix attachment size showing 0 on the dashboard

Attachments uploaded through the SDKs showed a size of 0 and no file type on the dashboard, even though the file itself was stored and downloadable.

  • Fixed the server to record each attachment's size and content type when an SDK links an uploaded file to a run
  • Fixed the C#, Rust, C++ and MATLAB upload helpers to finalize uploads, and the Python client to declare file size and type up front
  • Improved upload error reporting: a stored file that fails to link to its run is now reported instead of logged as success
August 10, 2026CLI 1.2.0Python SDK 2.15.0Dashboard 2.38.2Docs 2.4.10

Slim OpenHTF uploads, trust private CAs

Stations that only upload no longer install a full test framework, and self-hosted instances behind a corporate certificate authority work end to end.

  • Removed the TofuPilot context manager and its streaming stack from the Python client — uploads go through the upload() output callback, and the CLI provides the live operator UI.
  • Made OpenHTF an optional extra: install tofupilot[openhtf] for the callback, plain tofupilot for API-only stations.
  • Added private CA support to the CLI: pass --ca-cert at login or set TOFUPILOT_CA_CERT, and the saved certificate is reused by unattended stations across logins.
  • Neutralized leftover upload() callbacks under tofupilot run, so migrated procedures work unedited without crashing on a missing API key or creating duplicate runs.
  • Fixed custom CA bundles replacing the trust store instead of extending it, which broke attachment uploads to publicly-signed storage hosts.
August 7, 2026Dashboard 2.38.0Docs 2.4.9Release Server 1.4.9

Sign in with your Atlassian account

Teams already using Jira or Confluence can now access TofuPilot with their existing Atlassian account.

  • Added Atlassian sign-in on the login and sign-up pages, and to the connected accounts settings
  • Documented the self-hosted setup with the OAuth app configuration and environment variables

Note: requires an Atlassian account with access to a Jira or Confluence site.

August 6, 2026CLI 1.1.0Docs 2.4.8Python SDK 2.14.1

Run OpenHTF 1.3.0 through 1.6.1

Tests running an older pinned OpenHTF could not use the CLI at all. Every release from 1.3.0 onward now works the same way.

  • Added support for OpenHTF 1.3.0 through 1.6.1, with the same measurements, validators, attachments and phase outcomes on every release.
  • Fixed attachments being dropped on releases below 1.5.2.
August 6, 2026CLI 0.26.27Docs 2.4.7

Keep instruments connected between runs

Reconnecting to instruments between units costs time on every run — slow VISA sessions, TCP links, or serial handshakes were re-established for each unit tested on a station.

  • Added scope: station for plugs: the connection opens once, is shared by every run on the station, and closes when the station stops
  • Health-checked the held instance before each run, respawning it if the process died, the plug definition changed, or a new deployment was applied
  • Renamed plug and phase scopes to slot / execution / station; the legacy each / all spellings still parse
August 5, 2026CLI 0.26.26Docs

Fix phases timing out at 60s during plug calls

Long-running hardware operations — thermal soaks, firmware flashes, slow measurements — were killed after exactly one minute, even when the phase allowed more time.

  • Fixed plug method calls dying at 60 seconds: they now run for as long as their phase allows, with no time limit when the phase has none
  • Improved timeout errors to name the interrupted plug method instead of a bare "timed out"
  • Documented the phase timeout field: duration syntax, bounds, and how the deadline covers plug calls and operator prompts

Try these features today