CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

September 3, 2026Python SDK 2.20.0C# SDK 2.18.0C++ SDK 2.13.0MATLAB SDK 2.13.0

Filter and group runs by slot in every SDK

Multi-slot stations now upload one run per slot; the SDKs needed the matching fields to read and query them.

  • Added: execution_id, slot_key and slot_name on run creation and run details in the Python, C#, C++ and MATLAB clients
  • Added: execution_ids and slot_keys filters on run listing, so one start's runs or one fixture position's history can be pulled in a single call
  • Updated: clients regenerated from the current API specification; no breaking changes
September 3, 2026CLI 1.6.0Docs 2.5.4Rust SDK 2.19.0

Upload one run per slot on multi-slot stations

A station testing several units at once used to upload a single run for the whole fixture, so per-unit results and per-slot yield were invisible.

  • Added: one run per slot on every start, each with its own unit, outcome, phases, measurements, logs and attachments; the runs of one start share an execution id and carry their slot key and name (needs a dashboard at 2.42.2 or later; single-slot uploads are unchanged)
  • Added: {slot} and {slot_name} placeholders in unit default values, so auto_identify derives each slot's serial number and a burn-in rack starts with no operator input
  • Added: execution_id on run_started and per-slot outcomes on run_finished in the agent protocol, per-slot phase rows and prompts in the terminal UI
  • Updated: Rust client with the run grouping fields and filters; docs on slot placeholders and one run per slot
September 3, 2026CLI 1.5.2Docs 2.5.3

Stop a failing slot without stopping the rest

On a multi-slot station, one unit failing used to stop every slot and mark their runs as aborted.

  • Fixed: a phase that fails, times out, errors or calls phase.stop() now stops its own slot only; that slot's remaining phases are skipped, its slot teardown runs, and the other slots continue to their own outcome
  • Fixed: each slot now gets its own outcome, with shared setup and teardown phases counted in, so a failed shared setup reads FAIL on every slot and a slot finished before an operator stop keeps its result
  • Fixed: the last main phase can retry again when a teardown stage follows it; the run no longer reads PASS off a phase that was still asking to retry
  • Updated: docs on phase.stop(), run outcome and a new "Failure in one slot" section
September 3, 2026Dashboard 2.42.2

Add execution and slot identity to runs

Stations that test several units at once can now record which fixture slot produced each run and which execution the runs belong to, so a batch is traceable as a whole and per slot.

  • Added execution_id, slot_key and slot_name to the run API, returned on run get, list, header and metadata
  • Added execution and slot filters to the run list, the timeline and the runs page, with the fields in CSV exports
  • Added slot and execution details to the run overview, with a link to every run of the same execution
September 3, 2026Dashboard 2.42.2

Connect internal GitLab hosts on self-hosted

Self-hosted dashboards could not connect a GitLab group or Bitbucket project on an internal hostname, because the instance URL had to resolve to a public IP address, a protection that only makes sense for the cloud service.

  • Fixed the GitLab and Bitbucket setup on self-hosted installs to accept instance URLs on internal DNS
  • Kept HTTPS mandatory for the instance URL, since the access token travels over it
September 3, 2026Dashboard 2.42.1

Fix GitLab settings page crashing before setup

Opening Settings > GitLab in a workspace that had not connected a GitLab group yet showed "Something went wrong" instead of the connect button, so the integration could not be set up from the dashboard.

  • Fixed the GitLab and Bitbucket settings pages so they load correctly before an integration is connected
  • Added error reporting from the dashboard's error screens, so crashes like this one are detected by the team instead of relying on user reports
September 3, 2026CLI 1.5.1

Fix shared plug calls under many parallel slots

Multi-slot stations that share one instrument plug across slots could see phases fail with "Connection reset by peer" when several slots called the plug at the same instant.

  • Fixed the plug service dropping simultaneous calls: every call is now accepted immediately and executed one at a time, verified with 80 slots on a single shared power supply
  • Improved plug shutdown and health checks so a long-running or abandoned instrument call no longer blocks them
  • Added a safeguard that skips a queued call whose phase already timed out, so it never runs late on the instrument
September 2, 2026CLI 1.5.0

Fix operators tabbing out of the Windows kiosk

On Windows the station kiosk launched Microsoft Edge with generic full-screen flags, which hide the toolbars but leave an ordinary browser session behind them, so pressing Ctrl+T opened a tab on the MSN start page.

  • Fixed the kiosk launch on Windows to use Edge's own kiosk mode, which serves a single site in a private session and blocks new tabs and new windows.
  • Pinned the kiosk idle timeout to zero, so the window can never be closed and reset under a running test.
  • Rewrote the message shown when the local UI cannot bind its port, which blamed privileged ports on every platform and sent Windows operators looking for administrator rights instead of the reserved port ranges that were the real cause.
September 2, 2026CLI 1.5.0

Report runs that stop at a failure as Failed

When a phase failed under the default stop-on-first-failure setting, the remaining phases were skipped and the whole run was reported as aborted, so a normal failing unit landed in the aborted bucket and a filter on Failed never found it.

  • Fixed the outcome of a run stopped by a failed phase, which now reports Failed, or Timeout when the phase timed out, instead of Aborted. The skipped phases after the failure are unchanged.
  • Kept Aborted for genuine interruptions: an operator stop or kill, and an explicit stop asked for by a phase. An operator kill during a passing phase used to report Error and now reports Aborted.
September 2, 2026CLI 1.5.0Dashboard 2.42.0Python SDK 2.19.0C# SDK 2.17.0Rust SDK 2.18.0C++ SDK 2.12.0MATLAB SDK 2.12.0

Stop lost responses duplicating your runs

A run upload whose response never made it back to the station was re-sent and stored a second time, so one test appeared twice on the dashboard.

  • Added an idempotency reference that the CLI mints and saves before its first upload attempt, so every retry of the same run returns the run already created instead of storing another one.
  • Removed a redundant retry loop inside the CLI upload queue, which had turned a single queued attempt into up to four uploads.
  • Extended the reference to the Python, C#, Rust, C++ and MATLAB clients, and to stations already in the field, which pick it up on upgrade with no re-login.

Try these features today