{% extends "admin/_layout.html" %} {% from "_macros.html" import icon %} {% set section = "images" %} {% block title %}{{ workflow.name or t("New workflow") }} - {{ brand.name }}{% endblock %} {% block heading %}{{ workflow.name or t("New workflow") }}{% endblock %} {% block admin_content %} {% if error %}
{{ icon("warning", "icon--sm") }} {{ error }}
{% endif %}

{{ t("What it is") }}

{{ t("Shown to you, in the list.") }}

{{ t("Lowercase letters, digits, hyphens and underscores. This is what the model writes when it picks this workflow.") }}

{{ tm("The only thing the model has to choose with, so say what this is for rather than what it contains. It never sees the graph.") }}

{{ t("The workflow") }}

{{ tm("Export this from ComfyUI with Export (API), not Save — the two formats are different and only the API one can be submitted.") }}

{{ tm("Then put a placeholder where each value goes. A placeholder that is the whole value keeps its type, so \"steps\": {{steps}} sends the number 20 rather than the text “20”; one inside a longer string is substituted as text, so \"{{prompt}}, masterpiece\" works. Anything you leave out takes its default.") }}

{{ t("The placeholders") }}

{{ tm("Every hole a template may carry, what it fills, and what it resolves to right now. {{prompt}} is required — without it every image would be the same one, whatever anybody typed.") }}

{# The current value beside each name, the way /admin/prompts shows a variable's. A legend that lists names and not values answers "what may I write" and not "what will happen", and the second is the question somebody has while looking at a workflow that came out wrong. #}
{% for name, kind, what, current in placeholder_help %}
{{ '{{' ~ name ~ '}}' }} {{ what }} {% if name == "prompt" %}{{ t("Required.") }}{% endif %} {{ current }}
{% endfor %}

{{ tm("Two of these are not spelled the way ComfyUI spells them, which is the mistake that costs an afternoon: {{model}} fills ckpt_name and {{sampler}} fills sampler_name.") }}

{{ tm("The right-hand column is what an omitted placeholder resolves to today — the instance defaults from the image settings page, falling back to the built-in floor. A model may override any of them except {{batch}}, which is yours alone.") }}

{{ t("Back") }} {% if not is_new %} {% endif %}
{% endblock %}