Fix design-review findings: self-linking nav, colour reuse, badge clash
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.
This commit is contained in:
Barely Removable 2026-08-30 09:11:59 -07:00
parent d672c3f02d
commit 59beb9490f
9 changed files with 45 additions and 15 deletions

View file

@ -167,6 +167,10 @@ a.tt-row:focus-visible .tt-row-sub { color: var(--tt-black); }
text-transform: uppercase;
min-width: 11ch;
}
/* Marks a row that leaves the app (System's Transmission links to each
service's own UI) — everywhere else a .tt-row stays inside Media
Centre, so leaving needs its own quiet signal. */
.tt-row-ext { color: var(--ink-dim); }
.tt-row-body { flex: 1; min-width: 0; }
.tt-row-title {
overflow-wrap: anywhere;
@ -494,7 +498,7 @@ a.tt-row:focus-visible .tt-row-sub { color: var(--tt-black); }
.fastext-top {
margin: var(--row) auto calc(var(--row) * 1.5);
}
.fastext a {
.fastext a, .fastext-here {
display: flex;
align-items: center;
min-width: 0;
@ -510,18 +514,25 @@ a.tt-row:focus-visible .tt-row-sub { color: var(--tt-black); }
}
/* The key's colour is carried by a solid cell at its head — the
physical coloured button on the remote. */
.fastext a > span {
.fastext a > span, .fastext-here > span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.fastext a::before {
.fastext a::before, .fastext-here::before {
content: "";
flex: 0 0 auto;
width: 1.2ch;
height: 1em;
background: currentColor;
}
/* The page you're already on: present for orientation, same shape as
its neighbours, but not a link — clicking your own destination did
nothing useful, so now it isn't offered as a click at all. */
.fastext-here {
color: var(--ink-dim);
cursor: default;
}
.fastext .k-red { color: var(--alert); }
.fastext .k-green { color: var(--ok); }
.fastext .k-yellow { color: var(--voice); }

View file

@ -199,8 +199,11 @@
.catch(function () { /* as above */ });
}
/* Second-accurate only where the page shows the full figures
(System, Activity); everywhere else it's a header glance at a
number that's idle most of the time, so it can poll slower. */
pollSab();
setInterval(pollSab, 5000);
setInterval(pollSab, document.getElementById('sab-queue') ? 5000 : 20000);
if (document.getElementById('tt-streams')) {
pollTautulli();
setInterval(pollTautulli, 15000);