Refactored timers module into layered architecture with per-timer async tasks and stream-aware lifecycle.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 13s
CI / Tests (Python 3.13) (push) Successful in 13s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s

This commit is contained in:
2026-04-09 20:39:25 -04:00
parent c4217b6ed8
commit 4fa7050f0a
10 changed files with 2089 additions and 702 deletions
@@ -19,12 +19,12 @@
{% for timer in timers %}
<tr>
<td class="text-center">{{ timer.id }}</td>
<td>{{ timer.name }}</td>
<td>{{ timer.message }}</td>
<td class="text-center">{{ timer.interval }}</td>
<td class="text-center">{{ timer.min_lines }}</td>
<td class="text-center">{{ timer.status }}</td>
<td>{{ timer.last_fired }}</td>
<td>{{ timer.name or "" }}</td>
<td>{{ timer.message or "(not set)" }}</td>
<td class="text-center">{{ timer.interval_value }} ({{ timer.interval_type }})</td>
<td class="text-center">{{ timer.min_chat_lines }}</td>
<td class="text-center">{% if timer.enabled %}Enabled{% else %}Disabled{% endif %}</td>
<td>{% if timer.last_fired_at %}{{ timer.last_fired_at[:19] | replace("T", " ") }} UTC{% else %}Never{% endif %}</td>
</tr>
{% endfor %}
</tbody>