TofuPilotTofuPilot

Checklist

Prompt operator with multiple selection from list of options.

You can create a checklist with checklist:

ui:
  components:
    - key: visual_checks
      type: checklist
      label: "Visual Inspection Checks"
      description: "Select all checks that passed"
      required: true
      options: 
        - label: "No scratches"
          value: "no_scratches"
        - label: "No dents"
          value: "no_dents"

Properties

Display

You can configure how the checklist appears to the operator.

PropertyTypeRequiredDescription
keystringYesUnique identifier for accessing the value
typestringYesMust be "checklist"
labelstringNoDisplay label for the checklist
descriptionstringNoHelper text displayed below the checklist

Value

You can set default values and bind to measurements or unit properties.

PropertyTypeRequiredDescription
default_valuearrayNoArray of default selected option values
bindstringNoBind to unit property or measurement. See Collect Input for details.

Options

You can define the list of choices available for selection.

PropertyTypeRequiredDescription
optionsarrayYesArray of objects with label and value properties

Each option object has:

PropertyTypeDescription
labelstringText displayed to the operator
valuestringValue submitted when selected

Validation

You can validate selection before the value is submitted.

PropertyTypeRequiredDescription
requiredbooleanNoIf true, operator must select at least one option (shows "Required" badge)

TofuPilot validates operator input before submission, preventing continuation until all constraints are met. For some workflows, this input validation can create workarounds where operators bypass the UI to proceed.

Instead, you can capture the input as a Measurement using Binding and validate it with Validators. TofuPilot will record the actual operator input while enforcing pass/fail criteria.

Examples

Multi-Step Verification

We'll require operators to verify multiple conditions:

phases:
  - name: Safety Checks
    ui:
      components:
        - key: safety_verification
          type: checklist
          label: "Safety Verification"
          description: "Confirm all safety checks"
          required: true
          options: 
            - label: "Power disconnected"
              value: "power_off"
            - label: "Grounding verified"
              value: "grounded"
            - label: "Protective gear worn"
              value: "gear_on"
            - label: "Area clear of hazards"
              value: "area_clear"

Defect Types

We'll collect multiple defect types if found:

phases:
  - name: Defect Detection
    ui:
      components:
        - key: defect_types
          type: checklist
          label: "Select All Defect Types Found"
          required: false
          options: 
            - label: "Cosmetic Damage"
              value: "cosmetic"
            - label: "Electrical Issue"
              value: "electrical"
            - label: "Mechanical Issue"
              value: "mechanical"
            - label: "Software Issue"
              value: "software"

How is this guide?