feat(monitors): a monitor's page reads as a page — response time over 24h, labelled actions, how long, not "ago"; the add form says what each type checks (#5214)
CI / lint (push) Successful in 3s
CI / integration (push) Successful in 1m3s
CI / unit (push) Successful in 1m22s
CI / publish (push) Successful in 1m22s

Monitor page: a response-time chart for the last day with failed checks
marked; Edit / Pause / Delete as labelled buttons; the state tile says
"for 29m" instead of "for at least 29m 25s ago"; the check strip fills
its card; no failures is one line, not an empty box; Settings names the
type, target and the actual global interval, with readable field names.

Add monitor: a line under the fields says what the selected type checks
and when it counts as up; Name says it defaults to the target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 15:57:09 -04:00
co-authored by Claude Opus 5.5
parent a7b280aed9
commit c6fc02def5
7 changed files with 162 additions and 21 deletions
+2 -2
View File
@@ -33,14 +33,14 @@
</div>
<div>
<label class="field-label" for="m-name">Name</label>
<input type="text" id="m-name" name="name" value="{{ monitor.name if monitor else v.name }}" placeholder="optional" autocomplete="off" class="input">
<input type="text" id="m-name" name="name" value="{{ monitor.name if monitor else v.name }}" placeholder="defaults to the target" autocomplete="off" class="input">
</div>
<div>
<label class="field-label" for="m-target">Target <span class="tone-crit" aria-hidden="true">*</span></label>
<input type="text" id="m-target" name="target" value="{{ monitor.target if monitor else v.target }}" placeholder="host, IP, or URL" autocomplete="off" required class="input">
</div>
<div>
<label class="field-label" for="m-interval">Interval (s, 0 = global)</label>
<label class="field-label" for="m-interval" title="0 uses the global interval set in Settings">Check every (s, 0 = global)</label>
<input type="number" id="m-interval" name="check_interval_seconds" value="{{ monitor.check_interval_seconds if monitor else (v.check_interval_seconds or 0) }}" min="0" class="input">
</div>
{{ type_fields(config) }}