Skip to content

Changelog

Stay up to date with new features and improvements.

April 2, 2026Python SDK 2.2.4

Remove console banner and version check

The Python SDK no longer prints a banner or checks PyPI on every client init — cleaner output, faster startup, no network call at import time.

April 2, 2026Python SDK 2.2.3C# SDK 2.3.1Rust SDK 2.1.1

Auto-append /api to custom server URLs

All SDK clients now automatically append /api to custom server URLs, so self-hosted servers no longer need to include it manually — passing https://demo.tofupilot.sh now works out of the box without getting redirected to the signin page.

April 2, 2026Dashboard 2.15.9Python SDK 2.2.2C# SDK 2.3.0Rust SDK 0.1.0

Add strongly-typed validators to all SDKs

All SDK clients now expose typed validator objects instead of untyped JSON, making it easier to build and validate measurement validators with IDE autocomplete and compile-time checks.

  • Simplified validators API schema for cleaner OpenAPI output, removing legacy string union type
  • Regenerated C++, Rust, C#, and Python SDK clients with strongly-typed validator structs and builders
  • Fixed C# generator to support CancellationToken in all async methods and synced SDK version to 2.3.0
  • Fixed Speakeasy generation script to use correct config and synced version to 2.2.2
April 1, 2026Dashboard 2.15.7

Deploy test procedures from GitLab

Connect your GitLab repositories to automatically deploy test procedures to your stations and trace every test run back to its source code.

  • Added GitLab integration supporting both GitLab.com and self-hosted instances
  • Added automatic procedure deployment to stations when pushing to GitLab
  • Added webhook-based synchronization to keep branches and commits in sync
April 1, 2026Rust SDK 2.1.0

Ship test data from Rust

You can now push test runs to TofuPilot from Rust. The SDK covers the full V2 API with async builders, typed errors, retries, and file upload helpers.

let client = TofuPilot::new("your-api-key");

client.runs().create()
    .procedure_id("FVT-001")
    .serial_number("SN-042")
    .part_number("PART-001")
    .outcome(Outcome::Pass)
    .send()
    .await?;

Source on GitHub, package on crates.io.

March 31, 2026Release Server 1.1.0Dashboard 2.15.2Docs 2.1.4

Deploy self-hosted from GitHub workflows

Self-hosted instances can now enable automatic deployments by installing the TofuPilot GitHub App. The setup process is documented in the self-hosting guide. Cloud users already have this built in.

March 31, 2026Dashboard 2.15.3

Fix Dashboard Filters

Fixed an issue where some dashboard filters could return incorrect options after an internal infrastructure upgrade.

Our compatibility audit caught the regression, and we've added preventive checks to our release process for future dependency upgrades.

March 31, 2026C# SDK 2.0.2Docs 2.1.3

Ship test data from C# and .NET

You can now push test runs to TofuPilot from C# and .NET. The SDK covers the full V2 API with typed responses and errors.

var client = new TofuPilot(apiKey: "your-api-key");

await client.Runs.CreateAsync(new RunCreateRequest
{
    ProcedureId = "FVT-001",
    SerialNumber = "SN-042",
    PartNumber = "PART-001",
    Outcome = RunCreateOutcome.Pass,
});

API docs now show C# examples next to Python. Source on GitHub, package on NuGet.

Thanks to community member @Hylaean for building the original 1.x client that got this started.

March 30, 2026Python SDK 2.2.2Dashboard 2.15.1

Fix datetime filters and simplify finalize

You can now pass datetime objects to date filters on units.list() and batches.list(). Previously these only accepted strings, while runs.list() already handled datetime. All list endpoints are now consistent.

We also cleaned up attachments.finalize(). It no longer asks for an empty request_body parameter. If you were passing request_body={}, you can drop it.

March 29, 2026Docs 2.1.0

Add V2 Python SDK examples to docs

All dashboard documentation pages now include working Python V2 SDK code examples. V1 client syntax has been removed and replaced with tofupilot.v2 throughout.

Try these features today