{% extends "base.html" %} {% block content %} {% set scheduler = status.get("scheduler") %} {% set ls = status.get("last_scan") %} {% set overview_breakdown = status.get("overview_breakdown", []) %} {% set n_ok = status.get("by_status", {}).get("ok", 0) | int %} {% set n_corrupt = status.get("by_status", {}).get("corrupt", 0) | int %} {% set n_unreadable = status.get("by_status", {}).get("unreadable", 0) | int %} {% set n_issues = n_corrupt + n_unreadable %} {% set hero_class = "is-ready" %} {% if banner.state == "Healthy" %} {% set hero_class = "is-healthy" %} {% elif banner.state == "Scan running" %} {% set hero_class = "is-running" %} {% elif banner.state == "Issues found" %} {% set hero_class = "is-warning" %} {% elif banner.state in ["Configuration needed", "Access problem suspected"] %} {% set hero_class = "is-degraded" %} {% endif %} {% set hero_title = "SemanticDog is ready to scan your library." %} {% set hero_detail = banner.detail %} {% if banner.state == "Healthy" %} {% set hero_title = "All clear. Your library is healthy." %} {% if ls and ls.get("scope") %} {% set hero_detail = "Last scan completed without issues for " ~ ls.get("scope") ~ "." %} {% else %} {% set hero_detail = "No current corruption or access issues are recorded in the indexed library." %} {% endif %} {% elif banner.state == "Issues found" %} {% set hero_title = "Library Health Warning: Data Compromised." %} {% set hero_detail = n_corrupt ~ " files are corrupted. " ~ n_unreadable ~ " files are unreadable. View details below." %} {% elif banner.state == "Scan running" %} {% set hero_title = "Scan in progress. SemanticDog is checking your library." %} {% set hero_detail = "Live progress appears below while files are being validated." %} {% elif banner.state == "Configuration needed" %} {% set hero_title = "Configuration attention needed before trusting results." %} {% elif banner.state == "Access problem suspected" %} {% set hero_title = "Library access warning. Scan roots may be unavailable." %} {% endif %}
{% if banner.state == "Healthy" %}
{% elif banner.state == "Scan running" %}
{% elif banner.state == "Issues found" %}
{% elif banner.state in ["Configuration needed", "Access problem suspected"] %}
{% else %}
{% endif %}

{{ hero_title }}

{{ status.files_indexed | default(0) | int }} files indexed
{# ── Active scan (shown while scanning) ────────────────────── #}
Active Scan
Validating files {% if current_scan %}{{ current_scan.scan_id[:8] }}…{% endif %}
{% if current_scan and current_scan.eta_s %}~{{ (current_scan.eta_s / 60) | round(0, 'ceil') | int }}m remaining{% endif %}
{% if current_scan and current_scan.discovered_total > 0 %} {% set pct = [(current_scan.processed / current_scan.discovered_total * 100) | int, 100] | min %} {% else %} {% set pct = 0 %} {% endif %}
{% if current_scan %} {{ current_scan.processed | default(0) }} / {{ current_scan.discovered_total | default(0) }} {% else %}0 / 0{% endif %} {{ pct }}% {% if current_scan %}{{ "%.1f"|format(current_scan.files_per_sec | default(0)) }} files/sec{% endif %}
Library Activity Timeline
{% if ls and ls.get("finished_at") and n_issues > 0 %} 1. Last scan completed with issues {% elif ls and ls.get("finished_at") %} 1. Last Scan: {{ ls.get("started_at", "") }} {% elif ls %} 1. Last scan incomplete {% else %} 1. No scans yet {% endif %}
{% if ls and ls.get("finished_at") %} Duration: {{ ls.get("finished_at", "") }}. Scan Speed: {% if ls.get("files_per_sec") %}{{ "%.1f"|format(ls.get("files_per_sec")) }} f/s{% else %}—{% endif %} {% elif ls %} Scan started but did not finish cleanly. {% else %} Run your first scan to establish a baseline. {% endif %}
{{ ls.get("scope") if ls else "all configured paths" }} {{ ls.get("total", 0) | int if ls else 0 }} files examined
2. {% if scheduler and scheduler.get("last_error") %} Schedule unavailable {% elif scheduler and scheduler.get("next_run_at") %} Next scan {{ scheduler.get("next_run_at") }} {% elif scheduler and scheduler.get("enabled") %} Scheduler enabled {% else %} Scheduler disabled {% endif %}
{% if scheduler and scheduler.get("last_error") %} Fix the schedule expression in Configuration. {% elif scheduler and scheduler.get("next_run_at") %} scheduled automatically {% else %} waiting for a schedule {% endif %}
Schedule {{ scheduler.get("cron") if scheduler and scheduler.get("cron") else "disabled" }} {% if scheduler and scheduler.get('last_error') %} Error {% elif scheduler and scheduler.get('enabled') %} Active {% else %} Disabled {% endif %}
Last scheduled run: {% if scheduler and scheduler.get("last_run_at") %}{{ scheduler.get("last_run_at") }}{% else %}Never{% endif %} Last result: {{ scheduler.get("last_trigger_result") if scheduler and scheduler.get("last_trigger_result") else "No runs yet" }}
{% if scheduler and scheduler.get("last_error") %} {{ scheduler.get("last_error") }} {% endif %}
Library Health & File Overview
{{ status.files_indexed | default(0) | int }}
Total Files Indexed
{{ status.files_indexed | default(0) | int }}
files
{% for item in overview_breakdown %}
{{ item.label }}
{{ item.count }} {% if status.files_indexed %}{{ ((item.count / status.files_indexed) * 100) | round(1) }}%{% else %}0%{% endif %}
{% endfor %}
No indexed files yet
Run a scan to see the health of this library and which file types dominate it.
{% if setup.warnings %}
Setup warnings
    {% for w in setup.warnings %}
  • {{ w }}
  • {% endfor %}
{% endif %}
{% endblock %}