{% extends "base.html" %} {% block title %}Run {{ run.run_id[:12] }} - Art-DAG L1{% endblock %} {% block head %} {{ super() }} {% endblock %} {% block content %} {% set status_colors = {'completed': 'green', 'running': 'blue', 'pending': 'yellow', 'failed': 'red', 'paused': 'yellow'} %} {% set color = status_colors.get(run.status, 'gray') %}
← Runs

{{ run.run_id[:16] }}...

{{ run.status }} {% if run.cached %} Cached {% endif %} {% if run.error %} {{ run.error }} {% endif %} {% if run.checkpoint_frame %} Checkpoint: {{ run.checkpoint_frame }}{% if run.total_frames %} / {{ run.total_frames }}{% endif %} frames {% endif %}
{% if run.status == 'running' %} {% endif %} {% if run.status in ['failed', 'paused'] %} {% if run.checkpoint_frame %} {% endif %} {% endif %} {% if run.recipe %} {% endif %}
Recipe
{% if run.recipe %} {{ run.recipe_name or (run.recipe[:16] ~ '...') }} {% else %} Unknown {% endif %}
Steps
{% if run.recipe == 'streaming' %} {% if run.status == 'completed' %}1 / 1{% else %}0 / 1{% endif %} {% else %} {{ run.executed or 0 }} / {{ run.total_steps or (plan.steps|length if plan and plan.steps else '?') }} {% endif %} {% if run.cached_steps %} ({{ run.cached_steps }} cached) {% endif %}
Created
{{ run.created_at }}
User
{{ run.username or 'Unknown' }}
{% if run.status == 'rendering' or run.ipfs_playlist_cid or (run.status in ['paused', 'failed'] and run.checkpoint_frame) %}

{% if run.status == 'rendering' %} Live Preview {% elif run.status == 'paused' %} Partial Output (Paused) {% elif run.status == 'failed' and run.checkpoint_frame %} Partial Output (Failed) {% else %} Video {% endif %}

Connecting...
Waiting for stream...
Stream: /runs/{{ run.run_id }}/playlist.m3u8
{% endif %}
{% if plan %}
Click a node to view details
{% for step in plan.steps %} {% set step_color = 'green' if step.status == 'completed' or step.cache_id else ('purple' if step.cached else ('blue' if step.status == 'running' else 'gray')) %}
{{ loop.index }} {{ step.name }} {{ step.type }}
{% if step.cached %} cached {% elif step.status == 'completed' %} completed {% endif %}
{% if step.cache_id %} {% endif %}
{% endfor %}
{% if plan_sexp %}
Recipe (S-expression) {% if recipe_ipfs_cid %} ipfs://{{ recipe_ipfs_cid[:16] }}... {% endif %}
{{ plan_sexp }}
{% endif %} {% else %}

No plan available for this run.

{% endif %}
{% if run.output_cid %}

Output

{# Inline media preview - prefer IPFS URLs when available #}
{% if output_media_type and output_media_type.startswith('image/') %} Output {% elif output_media_type and output_media_type.startswith('video/') %} {# HLS streams use the unified player above; show direct video for non-HLS #} {% if run.ipfs_playlist_cid %}
HLS stream available in player above. Use "From Start" to watch from beginning or "Live Edge" to follow rendering progress.
{% else %} {# Direct video file #} {% endif %} {% elif output_media_type and output_media_type.startswith('audio/') %} {% else %}
?
{{ output_media_type or 'Unknown media type' }}
{% endif %}
{% endif %}
{% endblock %}