CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

July 22, 2026CLI 0.26.21

Fail fast when security software blocks a run

On locked-down stations, endpoint-protection software could suspend the Python worker or block the venv interpreter, leaving runs hanging forever with no explanation.

  • Added startup watchdogs that detect a stalled Python worker (30s to respond, 300s to finish importing) and fail the phase with clear guidance to allowlist the venv in EDR/antivirus software
  • Fixed tofupilot pull to name AppLocker/WDAC/EDR blocking as the cause instead of a bare "Access is denied" error, with one automatic retry for transient scans
  • Added a per-run event log at ~/.tofupilot/logs/ referenced from stall diagnostics for faster troubleshooting with IT
July 22, 2026CLI 0.26.21

Stop framework runs hanging silently at start

A station run of a framework procedure could sit on the spinner forever with no error when the test worker process was blocked from starting — most often by security software on locked-down machines.

  • Fixed framework runs hanging indefinitely at startup: the station now stops waiting after a deadline and shows a clear, actionable error naming the likely cause.
  • Added the worker's own error output to the failure message, so a crash during startup points straight at the offending line.
July 21, 2026CLI 0.26.20

Fix stuck station runs with a clear error

A station run could get stuck on a spinner with no explanation when the test process was blocked before it could start — often by antivirus or endpoint-protection software holding the newly launched process on a locked-down machine.

  • Fixed runs hanging indefinitely: the station now surfaces a clear, actionable error instead of an endless spinner when a run cannot start.
  • Added a "still starting" hint in the operator UI that points you to the terminal if a run is slow to begin.
  • Improved crash messages so a failed run tells you whether it hit a Python error or was stopped from outside.
July 20, 2026Dashboard 2.36.101

Fix missing charts for imported test history

Runs uploaded with an older start date, such as imported history or a migration from another system, were missing from the Measurement Control charts and filters even though the measurement table below listed them.

  • Fixed backdated runs not appearing in measurement analytics: charts, trends and sidebar filters now include them as soon as the data is uploaded
  • Improved how historical data is folded into the pre-computed analytics so charts stay fast once the import settles
July 20, 2026Rust SDK 2.14.0Docs 2.3.44

Add custom CA support to the Rust SDK

The Rust SDK can now connect to self-hosted instances that use a private certificate authority.

  • Added add_root_certificate and root_certificate_from_pem_file to the client configuration.
  • Switched to the system trust store by default, so system-installed certificates work without code changes.
  • Updated the self-hosting guide with the Rust certificate setup.
July 20, 2026Docs 2.3.43

Clarify certificate setup for self-hosted

Self-hosted instances often run behind a private CA, and the deploy guide only showed one client's certificate setup while still documenting the retired v1 Python client.

  • Removed the legacy Python SDK v1 examples from the self-hosting deploy guide, leaving OpenHTF and the current Python SDK.
  • Added certificate guidance for every client: the Python SDK accepts a custom certificate directly, while OpenHTF and the C++ and MATLAB SDKs use the standard OpenSSL environment variable.
  • Documented that the Rust SDK cannot connect to an instance using a private certificate authority yet.
July 20, 2026Orbit 0.11.23

Fix self-hosted license creation in Orbit

Requesting a self-hosted license in Orbit failed with an unauthorized error for every account, blocking new self-hosting evaluations.

  • Fixed license creation by resolving your organization from your membership instead of a session flag that was never set
  • Added clear error messages for each failure case: signed out, no organization yet, missing admin role, or multiple organizations
  • Fixed stale changelog links from search results to land on the changelog index instead of a 404 page
July 16, 2026Studio 1.4.12Station 1.4.12Framework 1.4.12

Debug Python phases with a debugger

Debugging a failing phase used to mean adding print statements; you can now attach VS Code or any debugpy client and step through your Python phase code with breakpoints.

  • Added a debug mode to the CLI (tofupilot run --debug) that starts a debugger listener, runs a single worker, and disables phase timeouts so a breakpoint pause isn't cut off
  • Added a Debugging guide covering debug mode and manual debugpy attachment, with a ready-to-use VS Code configuration
July 16, 2026Studio 1.4.11Station 1.4.11Framework 1.4.11

Run and unit metadata added to the framework

High-value units are often tested while undergoing modifications, and standard identifiers like revision number can't capture that state — custom metadata now records it on every run and unit.

  • Added run.metadata and unit.metadata to the Python phase API, validated at assignment with clear errors and included even when a phase fails
  • Added operator-prompted unit metadata fields to the procedure file, rendered in the unit identification form next to the serial number
  • Added metadata to uploaded reports and Studio local reports so runs and units can be filtered by any key
July 16, 2026Studio 1.4.11Station 1.4.11Framework 1.4.11

Configure plugs from your procedure file

Plugs can now receive settings like instrument addresses directly from your procedure file, so you no longer have to hard-code them in Python or duplicate a plug class per instrument.

  • Added an optional config mapping on each plug that is passed to the plug class as keyword arguments
  • Added support for running several instruments of the same model by giving each plug its own config
  • Documented the new config option and the multi-instrument pattern in the plugs guide

Try these features today