CHANGELOG

Small changes. Better testing.

Stay up to date with new features and improvements.

June 10, 2026CLI 0.24.0

Add full JSON output and clear command feedback

Scripts and agents driving the CLI needed every command to speak JSON, and several commands used to succeed without printing anything.

  • Added --json output to whoami, link, unlink and service status, and made API command errors return structured JSON instead of plain text
  • Added success messages to all create, update and delete commands (Created part <id>) so they no longer succeed silently
  • Fixed environment bootstrap output corrupting the --json event stream during runs
June 10, 2026Docs 2.3.25

Expand CLI docs with new command references

Every code example in the CLI and framework docs is now verified to run as written, and the CLI's automation surface is fully documented.

  • Added reference pages for the imports, logs, phases, measurements and deployments commands
  • Added a complete run --json event-stream reference covering the protocol, every event type, stdin commands and headless CI recipes
  • Updated every YAML and Python example to the current procedure schema so copy-pasted snippets work out of the box
June 10, 2026CLI 0.23.0

Catch YAML typos and fix concurrent run crashes

Running several CLI processes on one machine is now reliable, and mistakes in procedure YAML surface immediately instead of being silently ignored.

  • Fixed concurrent runs and station commands interfering with each other through the shared state database: the lock is now held only while in use and contention waits politely instead of interrupting other processes
  • Added strict procedure YAML validation: unknown fields like phases: or value: now fail with a clear error naming the field instead of being silently ignored
  • Fixed orphaned Python worker processes surviving after runs, tofupilot run file.yml ignoring the given file, and timeout phases reporting zero duration
June 10, 2026CLI 0.23.0

Fix CLI setup for stations in China

Test stations in China could not complete first-time CLI setup because a required Python tooling download came from a host that is unreachable there.

  • Fixed station setup in China by serving the Python environment manager from TofuPilot's own download infrastructure
  • Added a configurable download source for self-hosted and air-gapped deployments
June 10, 2026CLI

Add queue get, export and single-entry retry

Stations that run offline queue their runs locally, and operators needed better tools to inspect, recover, and clean up stuck uploads from the CLI.

  • Added queue get and queue export to inspect a queued run's failure detail and archive its upload payload before removing it
  • Added single-entry retry that reports the created run ID or the persisted failure record with --json, and exit codes that signal when entries remain queued
  • Renamed queue drop to queue rm and added lifecycle status (parked, backoff, attachments pending) plus attempt counts to queue ls
June 10, 2026Dashboard 2.36.9CLIDocs 2.3.24

Add image cards to radio and checklist options

Radio and checklist components now render as selectable image-card grids when their options include images, replacing the separate image choice and image checklist component types.

  • Added an image field on radio and checklist options that switches rendering to an image-card grid in the operator UI, with columns, aspect, and fit layout controls
  • Removed the image_choice and image_checklist component types; procedures should use radio and checklist with image options instead
  • Merged the image choice and image checklist documentation into the radio and checklist pages, with redirects from the old URLs
June 10, 2026CLI 0.22.25

Use any name for your procedure YAML file

Your procedure file no longer has to be named procedure.yaml. Point your deployment's entry point at any YAML file and TofuPilot runs it.

  • Added support for custom-named procedure YAML files (any .yaml/.yml) via the deployment entry point.
  • Improved repository import so a custom-named procedure is detected and offered in the picker instead of being reported as missing.
  • Fixed monorepo builds so a sibling procedure with a custom-named YAML ships as source instead of being skipped.
June 9, 2026CLI 0.22.25

Set up a station with one login command

Turning a machine into a station no longer needs a separate install step, so the dashboard's one-line setup command fully provisions the station on its own.

  • Added automatic boot-service setup on station login, so the station restarts after a reboot with no extra command.
  • Removed the boot service automatically when you log back in as yourself, making login the single command to switch a bench between station and development use.
  • Removed the separate install command, which is now redundant.
June 9, 2026Docs 2.3.23

Document JSON measurements

JSON measurements let you capture structured objects and arrays such as device state, config snapshots, and diagnostics, and now have their own documentation page.

  • Added a JSON measurement guide covering how values are captured, how the type is detected, and the validators it supports.
  • Added a live preview that renders a JSON payload the way it appears in the dashboard.
  • Clarified that numeric matrices stay multi-dimensional while objects and other arrays become JSON measurements.
June 9, 2026CLI 0.22.24

Filter procedures as you type in the CLI

The interactive procedure and deployment pickers in tofupilot link and tofupilot run now filter as you type, so you no longer page through long lists to find one.

  • Added fuzzy filtering to the link and run pickers — start typing to narrow the list instantly.
  • Showed a short id next to each procedure name so duplicate names are easy to tell apart.
  • Fixed link --procedure <name> to report an error and list matching ids when a name is ambiguous, instead of silently picking the first match.

Try these features today