{# Scheduled backups, as one swappable section. The table answers the question an operator actually has: what will run, and when. The schedule is shown in words with the exact OnCalendar expression beside it in mono, because "daily" is what a person scans for and the expression is what they paste into a terminal to check. Retention shows an em dash for listed timers: systemd keeps no record of a schedule's retention, and inventing a number here would be lying about what the machine will do. A refused action renders at 200 with the refusal inline: htmx does not swap an error status, so answering 4xx would freeze the screen and report nothing. Deleting confirms first, and the question names the domain and the consequence; the row is the target, so it only disappears when the timer actually did. #} {% import "_macros.html" as m %}
{% if problem %} {{ m.problem(problem.fix, problem.output) }} {% endif %} {% if notice %}

{{ notice }}

{% endif %} {% if schedules %} {% for item in schedules %} {% endfor %}
Application Schedule Retention Next run Last run Actions
{{ item.domain }} {{ item.schedule }} {{ item.on_calendar }} {{ item.retention }} {{ item.next_run }} {{ item.last_run }}
{% else %}

No scheduled backups. A schedule is a systemd timer that runs wasm backup create on its own, so an application is backed up before anyone is frightened rather than after.

{% endif %} {% if apps %}
Used only when the schedule is custom. A systemd calendar expression, as systemd-analyze calendar accepts it.
{% else %}

Nothing to schedule: no applications are deployed. Deploy one first, or run wasm backup schedule create example.com --schedule daily for a domain this machine serves.

{% endif %}