Scheduler now evaluates cron expressions against local time instead of UTC, so schedules fire at the user's local clock time. All timestamp displays in templates use a new `localtime` Jinja filter that converts UTC strings from SQLite to the server's local timezone. Updated CLAUDE.md to reflect the systemd service setup. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
51 lines
1.8 KiB
HTML
51 lines
1.8 KiB
HTML
{% extends "base.html" %}
|
|
{% set section = "runs" %}
|
|
{% block title %}Runs — Pipekit{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="panel">
|
|
<header>
|
|
Runs
|
|
<span class="subtitle">
|
|
{% if module_filter %}for module {{ module_filter.name }} · {% endif %}
|
|
last {{ runs|length }}
|
|
</span>
|
|
{% if module_filter %}
|
|
<span style="margin-left:auto"><a href="/runs">clear filter</a></span>
|
|
{% endif %}
|
|
</header>
|
|
<div class="body tight">
|
|
{% if runs %}
|
|
<table class="grid">
|
|
<thead>
|
|
<tr>
|
|
<th style="width:5em">id</th>
|
|
<th>module</th>
|
|
<th>started</th>
|
|
<th>duration</th>
|
|
<th style="width:8em">status</th>
|
|
<th style="width:7em">rows</th>
|
|
<th>error</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for r in runs %}
|
|
<tr>
|
|
<td><a href="/runs/{{ r.id }}">#{{ r.id }}</a></td>
|
|
<td><a href="/modules/{{ r.module_id }}">{{ r.module_name }}</a></td>
|
|
<td class="mono">{{ r.started_at | localtime }}</td>
|
|
<td class="mono">{{ r.duration_s | duration }}</td>
|
|
<td><span class="pill {{ r.status }}">{{ r.status }}</span></td>
|
|
<td class="mono">{{ r.row_count if r.row_count is not none else "—" }}</td>
|
|
<td class="mono" style="max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">{{ r.error or '' }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% else %}
|
|
<div class="empty">No runs yet.</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|