58014eb8dd
Two-axis review found the shipped colour and three weak tests. - --patina was a warm gold at the same hue family as --brass; the spec asked for a cool blue-green so an unhealthy Lane is unmistakably not ember. Now verdigris in both branches, with docs/design-system.md stating why the far side of the wheel is the point. - A Lane pass that returns before computing its figures carries the previous pass's due count and gap forward instead of recording zeroes, and Checked rides beside Due so a stopped Lane is distinguishable from a quiet one. - TestAdminPageWithoutAPollerSaysSo now separates the two causes it conflated, TestOwnerClearsReaderMarks seeds real counters so the clearing assertion can fail, and TestLaneStatus asserts Checked and the carry-forward. - backend/AGENTS.md records the one deliberate owner comparison outside requireOwner and the carry-forward rule.
42 lines
1.9 KiB
HTML
42 lines
1.9 KiB
HTML
{{/* Poll Lane status: one row per Site, refreshing itself so a run can be
|
|
watched rather than sampled by reloading. The refresh is one attribute on
|
|
the fragment root and the endpoint answers with this same fragment, so the
|
|
swap replaces the element that asked for it.
|
|
|
|
Every figure here is read out of the running poller, never out of a table:
|
|
a Site absent from Rows has not completed a pass since the last restart,
|
|
which the empty state must say — zeroes would read as a stopped Lane. */}}
|
|
{{define "lanes"}}
|
|
<section class="lanes" id="lanes"
|
|
hx-get="/ui/admin/lanes" hx-trigger="every 30s" hx-swap="outerHTML">
|
|
<h2>Poll Lanes</h2>
|
|
{{if .Rows}}
|
|
<ul class="lanelist">
|
|
{{range .Rows}}
|
|
<li{{if .Attention}} class="attention"{{end}}>
|
|
<span class="lane-site">{{.Site}}</span>
|
|
<span class="lane-fact">{{.Due}} due</span>
|
|
<span class="lane-fact">{{.Checked}} checked</span>
|
|
<span class="lane-fact">ran {{.Ran}}</span>
|
|
{{if .Gap}}<span class="lane-fact">gap {{.Gap}}</span>{{end}}
|
|
{{if .Clamped}}<span class="lane-mark">gap at floor</span>{{end}}
|
|
{{if .Refusing}}<span class="lane-mark">refusing</span>{{end}}
|
|
{{if .BrowserLost}}<span class="lane-mark">no browser</span>{{end}}
|
|
{{if .Stalled}}<span class="lane-mark">not checking</span>{{end}}
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
{{else}}
|
|
<p class="setup-copy">No data yet — no Lane has completed a pass since the
|
|
backend started.</p>
|
|
{{end}}
|
|
<p class="setup-copy lane-browser">
|
|
{{if .PollerOff}}Polling is switched off in this deployment: no Lane runs,
|
|
and Latest Chapter comes from the userscripts alone.
|
|
{{else}}Browser sidecar:
|
|
{{if not .BrowserConfigured}}not configured — comix, kagane and novelfull
|
|
pages are not fetched through it{{else if .BrowserReachable}}reachable
|
|
{{else}}unreachable{{end}}.{{end}}</p>
|
|
</section>
|
|
{{end}}
|