CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

September 5, 2026Studio 1.4.15Station 1.4.15Framework 1.4.15

Declare 80 slots in one line

Multi-slot procedures no longer need one YAML entry per slot.

  • Added an integer shorthand for execution.slots: slots: 80 expands to slots slot_01 to slot_80, zero-padded so they sort in order everywhere
  • Kept the list form for custom slot keys and names
  • Improved load errors: a wrong count or type says what was expected, and a bad entry in the list keeps its own message
  • Updated Studio to open procedures that use the shorthand
September 4, 2026StudioStationFramework

Reject bad operator input before the test runs

Operator entries used to be checked differently by the kiosk, the web console and the terminal, and a serial the server would refuse was only caught at upload, after the test had already run.

  • Added: every submission is now judged by the station itself; a rejected entry keeps the form open with a plain-language message under the field (“Remove the space (character 3) — allowed: uppercase letters, digits, -”, “Must be exactly 4 digits — you typed 2”), and the raw pattern is never shown to the operator
  • Added: prefix and suffix on unit fields and text inputs, displayed locked around the input and composed into the recorded value, so the operator scans only the variable part and pattern never has to repeat the fixed one
  • Added: pattern_message for patterns that cannot explain themselves; patterns now match the whole entry (SN-[0-9]+ rejects SCRAP SN-0042 XX, anchors optional), and serial, part, revision and batch fields default to the server's allowed characters so a bad scan fails at the form, not at upload
  • Improved: one shared form for phase prompts and unit identification with keyboard-first flow, Ctrl/⌘+Enter submit and password managers suppressed; the Studio editor refuses a pattern the station cannot compile while you type, nudges you to add a message when one cannot be derived, and screen previews use the exact verdict a run would give
  • Fixed: “Run again” no longer crashes when the unit config changed between two runs; the docs for text inputs and unit under test cover the new fields (Studio desktop keeps the previous client-side checks for now)
September 4, 2026Dashboard 2.42.8

See every slot of a fixture from one run

Runs from a multi-slot execution now show where they ran and what ran beside them.

  • Added a Slot section on the run page with the slot key, name and execution, and a hover card listing every sibling run with its serial and outcome
  • Added a Slot filter group to the runs list with key, name and execution, with counts, shown only for procedures that use a fixture
  • Improved the runs toolbar with a tooltip on Import and consistent pointer cursors
September 4, 2026Dashboard 2.42.5CLI 1.6.1

Follow every slot of a multi-slot run

Stations that test many units at once now get an operator view built for the fixture instead of a single-unit screen.

  • Added a fixture grid with one tile per slot showing its name, serial, current phase and status, sized to fill the screen from 2 to 80 slots
  • Added slot pages with each slot's own phases, prompts, outcome and run link, reachable from the grid or a direct link
  • Improved the progress bar to show one group per slot with its phases, and a violet state wherever a slot waits on the operator
  • Updated the CLI to report slot names, units and outcomes so every slot gets its own run in the dashboard
September 4, 2026Dashboard 2.42.4

Export charts and pick measurements by name

Getting a Measurement Control curve into a report meant a screenshot, and finding one measurement among hundreds meant scrolling a narrow list, so the analytics pages now do both from where you already work.

  • Added Copy chart as image, Export chart to PNG and Export chart to PDF to the right-click menu of every chart on Measurement Control and Phase Pareto, with the KPI strip included in the picture
  • Added measurement picking by name in the filter bar: tick several at once, see the typed characters highlighted in each name, and remove any filter with one click
  • Added a shortcut from a measurement's page to Measurement Control, with a date window that already contains the run it came from
  • Fixed the date range filter so a date can be typed on the keyboard, keeps its day in every timezone and includes the whole end day, in the run filters and on the usage page
  • Fixed the sidebar collapse strip covering the filter list's scrollbar, and made slider handles easier to grab
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

Try these features today