{% extends "base.html" %} {% block title %}Review — Libris{% endblock %} {% block content %}

Review Queue

{% if records %} {{ records|length }} {% endif %}
{% if error %}
{{ error }}
{% endif %} {% if stale_count %}
⚠ {{ stale_count }} stale record(s) point to missing files and are not shown. Run libris review-discard --stale to clean them up.
{% endif %} {% if not records and not error %}
Review queue is empty
All files have been imported or discarded.
{% else %}
{% for r in records %} {% endfor %}
# File Match Type Score Age Actions
{{ loop.index }}
{{ r.current_path.split('/')[-1] }}
{% if r._is_dup %}
⚠ {{ r.error_msg }}
{% endif %}
{% if r.matched_title %}
{{ r.matched_title }}
{% if r.matched_author %}
{{ r.matched_author }}{% if r.matched_year %} · {{ r.matched_year }}{% endif %}
{% endif %} {% else %} No match found {% endif %}
{% if r.media_type == 'audiobook' %} audio {% elif r._is_dup %} dup {% else %} ebook {% endif %} {% if r.confidence is not none %}
{{ "%.2f"|format(r.confidence) }}
{% else %} {% endif %}
{{ r._age }}
{% if r._has_match %} {% else %} {% endif %}
Tip: Accept imports using cached metadata (no API call). A greyed-out Accept means no match found yet — rematch via CLI: libris rematch --id N. Discard permanently deletes the file.
{% endif %}
{% endblock %}