{% extends "base.html" %} {% block title %}Voxint — {{ media_label }}{% endblock %} {% block cb_breadcrumb %}media / {{ media_label|lower|replace(" ", "-") }}{% endblock %} {% block cb_summary %} {%- if progress.total > 0 -%} {{ progress.verified }}/{{ progress.total }} verified {%- elif selected_run -%} {{ selected_run.status }} {%- else -%} no runs {%- endif -%} {% endblock %} {% block body %} {# Media detail page (Console 2.0 P3a, issue #156). Renders run metadata, a run chooser, and — when a completed run is selected — a server-rendered transcript fallback. The editor island (#157) will mount here when it ships, consuming the embedded island_props payload. Until then, the transcript is display-only; edits go through the legacy /review path. #}
{# ---- Main column: transcript or empty state ---- #}
{% if selected_run and island_props %} {# Server-rendered transcript fallback (read-only display). The editor island (#157) will replace this with a full interactive surface. #}
{% if token %}

Editing enabled. Mutations go through the legacy review page until the editor island ships.

{% else %}

Read-only view. Claim this run to edit.

{% endif %} {% for seg in island_props.segments %} {% endfor %}
Time Speaker Text
{{ "%.1f"|format(seg.start) }}s {{ seg.speaker or seg.label or "—" }} {{ seg.text }}
{% elif selected_run %}

Run {{ selected_run.id.hex[:8] }} is {{ selected_run.status }}. The transcript will be available once the run completes.

View run details

{% else %}

No runs for this media file yet.

Back to the library

{% endif %}
{# ---- Side rail: run chooser and media info ---- #}

Media

File
{{ media_label }}
{% if detail.media.duration_seconds is not none %}
Duration
{{ format_duration(detail.media.duration_seconds) }}
{% endif %} {% if detail.media.size_bytes is not none %}
Size
{{ format_size(detail.media.size_bytes) }}
{% endif %}
{% if detail.chooser %} {% endif %}
{% endblock %}