{#- The page band: what used to be a title row, a loose about paragraph and a freshness caption stacked down the page, gathered into one aligned block — breadcrumb/title on the left, the updated-line and the filters on the right, the node's about beneath. The freshness line is not chrome. It is the ADR-0005 promise that the page dates its own data, so it reads as a measurement: tabular figures so the digits do not dance on each poll, and a rule separating it from the controls it is not one of. It keeps `id="status-updated"`, its server-seeded `data-rendered-at`, and the `text-muted` class **poll.js swaps for `text-danger`** — that swap is why nothing here may set a `color` on it (both Bootstrap utilities are `!important`; a color of our own would be beaten by them and a stale line could read muted instead of red). `band_stamp` and `band_filters` say which parts this page has: the dashboard takes both, a detail page neither. They default to off — the Jinja env is StrictUndefined, so a page that wants a part has to say so. -#} {%- set band_stamp = band_stamp | default(false) -%} {%- set band_filters = band_filters | default(false) -%} {#- The kiosk has no band: its slim line already carries the sentence, the stamp and the exit, and a wall display has no use for a title or for filters it cannot be clicked. The stamp lives in that line instead, so there is still exactly one of it on the page. -#} {%- if layout != 'kiosk' %}

{% include '_breadcrumb.html' %} {#- The title is dropped where it only repeats the last crumb beside it (`titles.py`) — the band would otherwise read "… / critical Critical". -#} {%- set shown = (node | node_title) if node else '' %} {%- if shown %} {{ shown | markdown_inline }} {%- endif %}

{%- if band_stamp or band_filters %}
{%- if band_stamp %}
updated {{ rendered_at }}
{%- endif %} {%- if band_filters %}
{# A form submit carries this marker, so an unchecked switch (which sends nothing) is told apart from a fresh visit — lets the switches persist and a default-on switch turn off. #} {#- Each control below carries `data-ls-submit`: prefs.js submits this form when one changes, so a switch needs no Apply. It was an `onchange` attribute on every input until a Content-Security-Policy made inline handlers the thing worth removing (ADR-0048); the
{%- endif %}
{#- What the node is, said once and folded, on every view of it: a line that names it and shows how it begins, cut off where the width runs out, and opened, the text at a reading measure beneath, the preview giving way to it. It was said here in full and again as *About:* in a leaf's status card, so the instance's own nodes, whose `about` is a paragraph, pushed their report down by twice its length. The preview is for the eye alone: a screen reader hears *about*, and opened, the text, never the same words twice. -#} {%- if node and node.about %} {%- set about_html = node.about | markdown %}
about
{{ about_html }}
{%- endif %} {#- A node's views (ADR-0097 decision 3): its status, its series, its history and its Copy document, each a route of its own addressed by the node's path. Series stands where a curve can stand at or beneath the node, as the configuration says (`series_tab`), so it does not come and go with the readings, and carries the number of curves its view draws, none where it draws none (ADR-0114 decision 3) — a number that moves with what is declared and what the tree holds, not with a reading; History on every node but the root, which declares nothing of its own and has no periods; Copy on every node and on the root, whose Copy is the tree's document (ADR-0115 decision 7) — last, since it hands over what the others show. They close the band, beneath what the node is about, so the band's rule is their track: the views are of what lies below it. -#} {%- if view is defined %} {%- set tabs = [('Status', url_for('status', branch=branch) if branch else url_for('status'), 'status', 0)] %} {%- if series_tab | default(false) %} {%- set tabs = tabs + [('Series', url_for('series', path=branch) if branch else url_for('series_index'), 'series', series_count | default(0))] %} {%- endif %} {%- if branch %} {%- set tabs = tabs + [('History', url_for('history', path=branch), 'history', 0)] %} {%- endif %} {%- set tabs = tabs + [('Copy', url_for('copy', branch=branch) if branch else url_for('copy'), 'copy', 0)] %} {%- endif %}
{%- endif %}