acme-proxy-admin 0.6.0

The operation layer and web admin panel of acme-proxy (internal crate, no semver promise)
Documentation
{#- The swap target of the jobs list. Read-only: no control in the rows —
    cancel and run-now live on the detail card. -#}
<div id="jobs-table">
  <div class="panel table-scroll">
    <table>
      <thead>
        <tr>
          <th>Job</th>
          <th>Kind</th>
          <th>Status</th>
          <th>Attempts</th>
          <th>Run at</th>
          <th>Last error</th>
        </tr>
      </thead>
      <tbody>
        {% for job in page.items %}
          <tr>
            <td class="id-cell"><a href="/ui/jobs/{{ job.id }}" title="{{ job.id }}"><code>{{ job.id }}</code></a></td>
            <td><code>{{ job.kind }}</code></td>
            <td><span class="badge {{ job.status }}">{{ job.status }}</span></td>
            <td class="small">{{ job.attempts }}/{{ job.maxAttempts }}</td>
            <td class="small"><time datetime="{{ job.runAt }}">{{ job.runAt }}</time><br><span class="muted">{{ job.runAt | ago }}</span></td>
            <td class="wrap-anywhere small">
              {%- if job.lastError -%}{{ job.lastError }}{%- else -%}<span class="muted">—</span>{%- endif -%}
            </td>
          </tr>
        {% else %}
          <tr><td class="empty" colspan="6">No job matches.</td></tr>
        {% endfor %}
      </tbody>
    </table>
  </div>
  {% include "partials/_pager.html" %}
</div>