All checks were successful
Deploy / deploy (push) Successful in 24s
From a frontend-design skill review of all pages, after last session's chrome changes (top nav, all-tabs nav, header download row): - The top/closing fastext nav now mutes the entry matching the current page (.fastext-here) instead of rendering a link to the page you're already on. - Colour in fastext is reserved for the four entries that still carry a real keyboard shortcut (r/g/y/c); the other four render in plain ink instead of reusing k-red/k-green/k-yellow/k-cyan for a destination they don't semantically mean (e.g. Requests no longer shows in the app's own off-air red). - Discover's badge slot meant "critic score" on its RT tiles and "release year" on its new search tiles at the same time. Search results (Library and Discover) now fold year/held-state into the sub-line instead, leaving the badge exclusively for critic score. - System's Transmission rows now carry a small ↗ glyph, since they silently changed from in-app navigation to opening each service's own UI in a new tab with no visual cue. - SABnzbd polling drops from 5s to 20s on pages that only show the header's download figure (everywhere but System/Activity, which keep 5s for their own live figures) — a number idle 95% of the time doesn't need second-level freshness sitewide. - DESIGN.md's fastext description, now-current per this session's nav changes.
88 lines
4.1 KiB
HTML
88 lines
4.1 KiB
HTML
{%- set here = (nav_items | selectattr('0', 'equalto', page) | list | first) or ('home', '100', 'Index', '/') -%}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}P{{ here[1] }} Media Centre{% endblock %}</title>
|
|
<meta name="theme-color" content="#000000">
|
|
<link rel="icon" href="{{ url_for('static', filename='favicon.svg') }}">
|
|
{#- Space Mono is self-hosted (see base.css's @font-face) — this app
|
|
runs on a LAN-only home server where a Google Fonts request can
|
|
simply fail, and a dropped webfont request is a silent identity
|
|
change, not a graceful fallback. -#}
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/base.css') }}">
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/teletext.css') }}">
|
|
{% block css %}{% endblock %}
|
|
</head>
|
|
<body data-timezone="{{ timezone }}" data-url-base="{{ request.script_root }}"
|
|
data-pages='{{ nav_items | tojson }}'>
|
|
<!--
|
|
THESIS: Media Centre is a broadcast information service, not a dashboard. It
|
|
refuses the bordered-card grid every self-hosted dashboard ships, this one
|
|
included until now.
|
|
OWN-WORLD: Teletext's locked eight colours at full saturation on pure black,
|
|
phosphor bloom on double-height rows only, one blocky monospace at exactly two
|
|
heights, a character-cell grid, and grouping carried by colour fields and row
|
|
weight — never a border, never a box, never a radius.
|
|
STORY: The visitor types or clicks a page number, reads the machine's state off
|
|
colour alone, and leaves knowing whether anything needs them.
|
|
FIRST VIEWPORT: P100. Double-height yellow masthead left, live clock right;
|
|
seven numbered service rows each carrying a live figure in its status colour, so
|
|
the index is the status page; NOW SHOWING fills the lower two-thirds in
|
|
double-height cyan with progress as whole mosaic cells; fastext colour keys last.
|
|
FORM: Ceefax teletext fused with the US cable guide channel; candidate 3 of 7;
|
|
seed aab4510e.
|
|
FINISH: unreviewed and undocumented is unfinished; this build ends with the
|
|
finish review, the verdict, DESIGN.md, and every shipping raster carrying its
|
|
provenance.
|
|
-->
|
|
|
|
<header class="tt-head">
|
|
<span class="tt-head-num">P{{ here[1] }}</span>
|
|
<span class="tt-head-name">{{ here[2] }}</span>
|
|
<span class="tt-entry" id="page-entry" hidden aria-live="polite"></span>
|
|
{#- SABnzbd's queue, on every page — the same live /api/sabnzbd poll
|
|
Activity and System already use, not a server-rendered fetch, so
|
|
an unreachable SABnzbd never adds latency to a page that doesn't
|
|
otherwise need it. Starts blank and fills in within a second. -#}
|
|
<span class="tt-head-dl" id="head-dl" aria-live="polite"></span>
|
|
<span class="tt-head-clock" id="head-clock"></span>
|
|
</header>
|
|
|
|
{#- Fastext: the four coloured keys. Each page names its own four, so the
|
|
keys always point somewhere useful from where you are. On the index
|
|
it stays the closing row, under Now Showing/Just Added, since the
|
|
index's own body already is the full nav. Everywhere else it leads,
|
|
right under the header, since it's the only nav those pages carry. -#}
|
|
{% set fastext_nav %}
|
|
<nav class="fastext{{ '' if page == 'home' else ' fastext-top' }}" aria-label="Fastext">
|
|
{% for cls, key, num, label, href in fastext %}
|
|
{% if num == here[1] %}
|
|
<span class="fastext-here" aria-current="page"><span>{{ num }} {{ label }}</span></span>
|
|
{% else %}
|
|
<a class="{{ cls }}" href="{{ request.script_root }}{{ href }}" data-key="{{ key }}">
|
|
<span>{{ num }} {{ label }}</span>
|
|
</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</nav>
|
|
{% endset %}
|
|
|
|
{% if page != 'home' %}{{ fastext_nav }}{% endif %}
|
|
|
|
<main class="tt-page">
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
{% if page == 'home' %}{{ fastext_nav }}{% endif %}
|
|
|
|
<footer class="tt-foot">
|
|
<span>MEDIA CENTRE</span>
|
|
<span class="v">v{{ app_version }} · {{ app_version_date }}</span>
|
|
</footer>
|
|
|
|
<script src="{{ url_for('static', filename='js/service.js') }}"></script>
|
|
{% block js %}{% endblock %}
|
|
</body>
|
|
</html>
|