{% extends "base.html" %} {% block title %}Dashboard — CalibreSync{% endblock %} {% block content %} {% if batch_size > 0 %}

Batch size: {{ batch_size }} zips per chunk — full sync processes all unprocessed files.

{% endif %} {% if request.query_params.get("started") %}
Sync started — processing all unprocessed archives{% if batch_size > 0 %} in batches of {{ batch_size }}{% endif %}.
{% endif %} {% if request.query_params.get("test_started") %}
Test sync started — processing 1 archive.
{% endif %} {% if request.query_params.get("rescan_started") %}
Remote rescan started — this will take a few minutes. Check logs for progress.
{% endif %} {% if request.query_params.get("already_running") %}
A sync is already running.
{% endif %}
{% if cache_info.count > 0 %} Remote cache: {{ cache_info.count }} zip(s) — last scanned {{ cache_info.last_scan[:19] if cache_info.last_scan else "never" }} UTC {% else %} Remote cache empty — first sync will run a full scan (may take several minutes). {% endif %}
{{ stats.total_zips }}
Zip archives processed
{{ stats.total_imported }}
Books imported

Recent sync runs

{% if runs %} {% for r in runs %} {% endfor %}
Started Finished Status New zips Imported Errors
{{ r.started_at[:19].replace("T"," ") }} {{ r.finished_at[:19].replace("T"," ") if r.finished_at else "—" }} {{ r.status }} {{ r.zips_new }} {{ r.books_imported }} {{ r.books_errored }}
{% else %}

No sync runs yet. Click "Run Sync" to start.

{% endif %}

Recent zip archives

{% if zips %} {% for z in zips %} {% endfor %}
Remote path Size Processed Status Error
{{ z.remote_path }} {{ (z.file_size / 1048576) | round(1) }} MB {{ z.processed_at[:19].replace("T"," ") if z.processed_at else "—" }} {{ z.status }} {{ z.error_msg or "" }}
{% else %}

No zip archives processed yet.

{% endif %} {% if sync_running %} {% endif %} {% endblock %}