Learn inputs
Every {{…}} token from Add. Try the control, copy the token.
| Input code | Description | Preview |
|---|---|---|
| File — pick a path | ||
| {{input.file}}file | Source file to read. | |
| {{input.dir}}file | Folder only. | |
| {{input.files}}file | Files, appended one after the other. | |
| {{input.image}}file | Drop image here or click to browse | One image — drop it or browse, preview inline. |
| {{input.images}}file | Drop images here or click to browse | Several images — names join with spaces, thumbnails inline. |
| {{input.video}}file | Drop video here or click to browse | One video — drop it or browse, playable preview. |
| {{input.videos}}file | Drop videos here or click to browse | Several videos — names join with spaces, each playable. |
| {{input.document}}file | A document — drop it or browse, shown as a chip. | |
| Text — short values | ||
| {{input.text}}text | Any short text. Prefill with {{input.text:hello}}. | |
| {{input.email}}text | Email address, validated. | |
| {{input.url}}text | Web link, validated. | |
| {{input.search}}text | Search query. | |
| {{input.uuid.autogenerate}}text · auto | Unique id, prefilled. Drop .autogenerate to ask instead. | |
| {{input.textarea}}textarea | Multiline text — commit messages, queries. Prefill with {{input.textarea:hello}}. | |
| {{input.keyvalue:MY_KEY=value}}keyvalue | Key=value pair for -e / env flags. Renders two fields, joins with =. | |
| Number — counts and ports | ||
| {{input.number}}number | Any number. Prefill with {{input.number:5}}. | |
| {{input.port:8080}}number | TCP port, clamped 1–65535. | |
| Date · Time · Color · Secret — pickers | ||
| {{input.date:2026-01-15}}date | Calendar day. {{input.since}} is an alias. | |
| {{input.time}}time | Clock time. {{input.hour}} / {{input.minute}} / {{input.second}} are retired here. | |
| {{input.datetime}}datetime | Day plus time, one control. | |
| {{input.duration}}duration | Slide seconds — reads out as HH:MM:SS for ffmpeg -t / -ss. | |
| {{input.color:#1677ff}}color | Brand color. | |
| {{input.password}}secret | Hidden secret. | |
| Choice — select, radio, buttongroup, multiselect, license | ||
| {{input.select:zip,tar.gz}}select | Pick one from a dropdown. Default with {{input.select:zip,tar.gz=zip}}. | |
| {{input.radio:yes,no}}radio | One of a few, as radios. Same inline options as select. | |
| {{input.buttongroup:zip,tar.gz}}buttongroup | One-tap pick, as segments. Same inline options as select. | |
| {{input.multiselect:dev,build,test}}multiselect | Pick several — joins with commas. Defaults with {{input.multiselect:dev,build,test=dev,test}}. | |
| {{input.license}}select · 18 | 18 SPDX ids built in — writing this inline is not viable. | |
| {{input.country}}select · 249 | Full 249-country list built in — writing this inline is not viable. | |
| {{input.timezone}}select · 41 | 41 IANA zones built in — writing this inline is not viable. | |
| {{input.currency}}select · 41 | 41 currencies built in — writing this inline is not viable. | |
| {{input.language}}select · 30 | 30 languages built in — use select for anything shorter. | |
| {{input.locale}}select · 20 | 20 locales built in — use select for anything shorter. | |
| Flag — on / off | ||
| {{input.checkbox:--rm}}checkbox | CheckboxFlag | Toggle a flag. Start unchecked with {{input.checkbox:--rm=off}}. |
| {{input.switch:--yes}}switch | SwitchToggle switch | Same syntax as checkbox, rendered as a switch. |
| {{input.option:--output=$file}}option | OptionToggle on emits the flag; off hides the bound field.Bound field {{input.file}}--output=input.mp4 | Optional flag bound to another input. Toggle on emits --output=input.mp4 once, and the bound input's own slot stays empty; toggle off emits nothing anywhere and hides the referenced field. Broken syntax or a ref with no matching input anywhere disables the toggle — see below. |
| Range — sliders | ||
| {{input.range:0-100}}range | Any slider with a number field — same paired control as the command form. Bounds plus default: {{input.range:18-28=23}}. | |
Reference other inputs with $
Inside an input default — after the colon — $base.property inserts another input's value. Example: {{input.text:$file.name}} defaults the text to the file's name. Refs resolve left to right in command order; a ref to a later input, to itself, to an unknown base or property, or to an empty value resolves to empty and Add shows a warning in the preview. When an input repeats, $ sees the nearest preceding one.
| Reference | Properties | Example |
|---|---|---|
| Single file — path parts | ||
| $file.*file | value full text · name file name · stem name without extension · ext extension · dir folder. Same for $dir, $document, $poster, $thumbnail, $path, $folder. | {{input.text:$file.name}} → input.mp4 |
| Image and video — plus dimensions | ||
| $image.*file | Path parts above, plus width and height once a file is dropped or picked — otherwise empty. Same for $video.*. | {{input.text:$image.width}} → 1920 |
| Multiple files — items and ordinals | ||
| $files.*file | value all items · count how many · first … ninth, tenth (ten works too). Items split on spaces. Same for $images.*, $videos.*. | {{input.text:$files.second}} → input2.mp4 |
| Everything else — raw value | ||
| $name.valuetext | Every other input type exposes value only — text, numbers, dates, colors, secrets, selects, radios, checkboxes, ranges. Exception: $url below. | {{input.text:$branch.value}} → main |
| URLs — safe filename | ||
| $url.asfilenametext | value the URL as typed · asfilename the entire URL lowercased into a safe filename — every run of characters outside a-z 0-9 . - becomes one dash (https://www.youtube.com/watch?v=dQw4w9WgXcQ → https-www.youtube.com-watch-v-dqw4w9wgxcq). | {{input.text:$url.asfilename}} → https-example.com-clips-trailer.mp4 |
Optional flags with {{input.option}}
Syntax is {{input.option:FLAG DIVIDER $ref}} — flag is --name, -x or /name; divider is =, space or :; ref is $base or $base.property using the $ table above. Toggle on appends flag plus divider plus the resolved value; toggle off emits nothing and hides the referenced field while keeping its value. The option finds its $ref in either direction, so the referenced input may come before or after the option. While the toggle is on, the bound input's own slot emits empty, so the value appears once, inside the flag; toggle off drops the flag and the bound slot still emits nothing, so the command shows neither. The input keeps its control value while connected, and toggling back on restores the flag with that value. Empty slots collapse surrounding spaces to one and trim the ends, so off never leaves double spaces. Anything else — bad flag, bad divider, missing $, or a ref with no matching input anywhere — disables the toggle, forces it off, and Add shows a warning in the preview.
| Syntax | Toggle on | Toggle off |
|---|---|---|
| {{input.option:--output=$file}} | --output=input.mp4 | empty, file field hidden |
| {{input.option:-o $branch}} | -o main | empty, branch field hidden |
| {{input.option:/res:$image.width}} | /res:1920 | empty, image field hidden |
| {{input.option:--output=out.mp4}} | toggle disabled, empty | empty |
Same parser as Add — {{input.color:#1677ff}}, {{input.uuid.autogenerate}}, {{input.checkbox:--dry-run=off}}. Unknown {{braces}} stay literal. Try it in Add →