{# v3-style phase timeline: phase steps + connector fragments. This partial outputs only the inner content — the OOB wrappers in task_phase_view.html / pipeline_oob.html provide the outer container. #} {% set phase_idx = phases.index(task.current_phase) if task.current_phase in phases else -1 %} {% set display_idx = phase_idx %} {% set is_done = task.status == 'done' %} {% for p in phases %} {% set is_past = loop.index0 < display_idx or is_done %} {% set is_current = (loop.index0 == display_idx) and not is_done %} {% set status_text = 'done' if is_past else (task.status if is_current else 'pending') %}
{{ loop.index }}
{{ p|capitalize }}
{%- if is_past %}✓ completed {%- elif is_current and task.status == 'running' %}⟳ running {%- elif is_current and task.status == 'failed' %}✗ failed {%- else %}— pending {%- endif %}
{% if not loop.last %}
{% endif %} {% endfor %}