From 9fba4f210e6ce6e829dbfd3b163b1c6cf9a95694 Mon Sep 17 00:00:00 2001 From: Barely Removable Date: Sun, 30 Aug 2026 09:27:39 -0700 Subject: [PATCH] Colour Watch's fastext label, not just its swatch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Swatch-only blue read as unfinished next to the other five fully- coloured entries. The word now carries the colour like every other key, same currentColor mechanism as the rest — accepting blue's ~2.4:1 contrast on black as a known, deliberate exception to the 4.5:1 bar everything else here clears. --- CLAUDE.md | 32 +++++++++++++++++--------------- app.py | 33 ++++++++++++++------------------- static/css/teletext.css | 9 ++++----- 3 files changed, 35 insertions(+), 39 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 7ca377d..0984715 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -106,21 +106,23 @@ the user's Unraid home server. Server-side project directory is still named other nav, so it needs no scroll to reach. The index overrides it with `HOME_FASTEXT`, the original four-entry row, as its own closing line, since its body already lists every destination once. Every - destination gets its own distinct mark — the locked eight colours - only give five that read as legible text on black, so getting to - eight took three treatments: five flat colours as text+swatch - (Index/Library/Discover/System keep their `r`/`g`/`y`/`c` shortcut; - Requests gets magenta/`--pending` with no shortcut — a deliberate - fit, since Requests already is "waiting on a human" everywhere else - magenta appears); Watch gets blue as a swatch-only accent (`.k-blue` - — blue fails contrast as body text, so only the small cell carries - it, not the row's own label); Activity gets an ordered-dither swatch - (`.k-dither`, same mechanism as `--dither-mid`) rather than a flat - colour. Settings alone keeps plain ink with no swatch treatment — - deliberately, as the one page with no live status of its own. - Whichever entry matches the current page renders as a - `.fastext-here` span instead of a link — a page linking to itself - did nothing, so it isn't offered as a click. + destination gets its own distinct mark. Six get a flat colour, text + and swatch both: Index/Library/Discover/System keep their `r`/`g`/ + `y`/`c` shortcut; Requests gets magenta/`--pending` with no + shortcut (a deliberate fit — Requests already is "waiting on a + human" everywhere else magenta appears); Watch gets blue (`.k-blue`) + with no shortcut. Blue is a known exception to the app's own 4.5:1 + text-contrast bar (it clears ~2.4:1 on black) — kept anyway, at the + visitor's request, over the alternative of a swatch-only accent + that read as unfinished next to six fully-coloured neighbours. + Activity gets an ordered-dither swatch (`.k-dither`, same mechanism + as `--dither-mid`) instead of a flat colour — the one other legal + way to get a distinct mark without a ninth hue. Settings alone + keeps plain ink with no swatch treatment — deliberately, as the one + page with no live status of its own. Whichever entry matches the + current page renders as a `.fastext-here` span instead of a link — + a page linking to itself did nothing, so it isn't offered as a + click. - **Nothing is clipped, hidden, or sticky.** All seven page numbers and every fastext entry stay visible at every width, reflowing to another row rather than scrolling, truncating, or folding into a menu. No diff --git a/app.py b/app.py index 0a0ada4..1ff1171 100644 --- a/app.py +++ b/app.py @@ -1304,25 +1304,20 @@ def service_urls(): # Every destination, for the top of every page but the index, each -# with its own distinct treatment. Order matches nav_items. The -# locked eight teletext colours only give five that read as full- -# saturation text on black (blue fails contrast there), so getting all -# eight distinct without inventing a ninth colour takes three -# treatments, not one: -# - Five flat colours, text and swatch both: the four with a real -# keyboard shortcut (r/g/y/c), plus magenta for Requests — not -# arbitrary, it's the same --pending magenta a request already -# shows once approved elsewhere, and Requests IS "waiting on a -# human". -# - Blue as a swatch-only accent (Watch): legible as a small solid -# cell — "the physical coloured button on the remote" — but not as -# the row's own text colour, where it fails contrast. -# - An ordered dither swatch (Activity): the one other legal way to -# get a distinct mark out of this palette per base.css's own first -# discipline, without smuggling in a ninth hue. -# Settings keeps plain ink deliberately — the one purely administrative -# destination with no live status of its own, so it's the one page -# that gets no colour at all rather than an arbitrary last one. +# with its own distinct treatment. Order matches nav_items. Six of the +# eight get a flat colour, text and swatch both: the four with a real +# keyboard shortcut (r/g/y/c), plus magenta for Requests (the same +# --pending magenta a request already shows once approved elsewhere — +# Requests IS "waiting on a human") and blue for Watch. Blue is ~2.4:1 +# contrast on black, well under the 4.5:1 every other body text here +# clears — a known, deliberate exception, not an oversight; it's set +# this way because coloured-icon-only for Watch read as unfinished +# next to six fully-coloured neighbours. Activity gets an ordered +# dither swatch instead of a flat colour, the one other legal way to +# get a distinct mark out of this palette without smuggling in a ninth +# hue. Settings alone keeps plain ink — deliberately, as the one page +# with no live status of its own, so it's the one that gets no colour +# rather than an arbitrary leftover. FULL_FASTEXT = [ ("k-red", "r", "100", "Index", "/"), ("k-blue", "", "101", "Watch", "/watch"), diff --git a/static/css/teletext.css b/static/css/teletext.css index 4687654..19def98 100644 --- a/static/css/teletext.css +++ b/static/css/teletext.css @@ -560,11 +560,10 @@ a.tt-row:focus-visible .tt-row-sub { color: var(--tt-black); } .fastext .k-yellow { color: var(--voice); } .fastext .k-cyan { color: var(--live); } .fastext .k-magenta { color: var(--pending); } -/* Blue fails contrast as body text on black, so it marks the swatch - only — the button cap's colour, not the printed label — while the - row's own text stays legible ink. */ -.fastext .k-blue::before { background: var(--field); } -.fastext .k-blue:hover, .fastext .k-blue:focus-visible { background: var(--field); } +/* Pure blue on black is ~2.4:1 contrast — well under the 4.5:1 every + other body text in this app clears — but the word carries the + colour like every other key here, at the visitor's request. */ +.fastext .k-blue { color: var(--field); } /* The one other legal way to get a distinct mark out of eight colours without a ninth: an ordered dither, same mechanism as --dither-mid, in place of a flat swatch. */