{% extends "base.html" %} {% block title %}Voxint — review{% endblock %} {% block body %}

Review

Recordings that finished and still need you to confirm who is speaking. Signed in as {{ operator }}.

{% if not entries %}

Nothing to review right now. Every finished recording either had its speakers confirmed by you or matched confidently by Voxint.

{% else %} {# Sort control — mirrors the runs.html filter idiom, but the queue has no other query state to preserve, so these are plain links. Default stays "oldest" (FIFO fairness + guided-tutorial continuity). #}

Sort: Oldest first · Most voices to resolve

{% for e in entries %} {% set resolved = e.total_labels - e.unresolved_labels %} {% endfor %}
MediaDurationAgeProgressClaimed byAction
{{ friendly_media_label(e.title, e.source_path) }}
{{ e.source_path }}
{{ format_duration(e.duration_seconds) }} {% if e.created_at %}{{ format_age(e.created_at, now=now) }} {% else %}{% endif %} {# Fills toward done: resolved-of-total, so fuller = closer to finished. The adjacent count text is the primary signal; the slim bar reuses the review-journey .progress-track and is aria-hidden (#93). #}
{{ resolved }} of {{ e.total_labels }} resolved
{{ e.claimed_by or "—" }}
{% endif %} {% endblock %}