From 8500fba7459660e8ab2c8f1f3e9807973c66a99e Mon Sep 17 00:00:00 2001 From: Barely Removable Date: Sun, 30 Aug 2026 09:17:37 -0700 Subject: [PATCH] Give Requests its own colour instead of leaving 4 fastext entries plain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plain ink for Watch/Requests/Activity/Settings read as flat and unfinished, not deliberate — user feedback: "the new colors are awful and basically the same color." Requests gets magenta (--pending) back: not an arbitrary reuse, it's the same colour a request already carries once approved elsewhere in the app, and Requests genuinely is "waiting on a human." That's the real ceiling though — the locked eight teletext colours leave exactly five legible as text on black (blue fails contrast, black is invisible on black), so Watch/Activity/Settings still share plain ink rather than a sixth colour that doesn't exist in this palette. --- CLAUDE.md | 16 ++++++++++------ app.py | 30 +++++++++++++++++------------- static/css/teletext.css | 9 +++++---- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 57172c2..147a29d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -105,12 +105,16 @@ the user's Unraid home server. Server-side project directory is still named under the header on every page but the index — those pages carry no 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. Only - those original four (Index/Library/Discover/System) carry an `r`/ - `g`/`y`/`c` keyboard shortcut and a colour swatch — colour is - semantic everywhere else in this app, so the other four entries - render in plain ink rather than reusing one of the four colours for - a destination it doesn't mean. Whichever entry matches the current + line, since its body already lists every destination once. The + original four (Index/Library/Discover/System) keep their `r`/`g`/ + `y`/`c` keyboard shortcut and colour; Requests also gets a colour + (magenta, `--pending`) without a shortcut — a deliberate fit, not + an arbitrary fifth pick, since Requests already is "waiting on a + human" everywhere else magenta appears. That's the ceiling: the + locked eight colours leave exactly five that read as legible text + on black (blue fails contrast there, black is invisible), so Watch/ + Activity/Settings share plain ink rather than a sixth colour that + doesn't exist in this palette. 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 diff --git a/app.py b/app.py index c30c8c6..69ef6e2 100644 --- a/app.py +++ b/app.py @@ -1304,20 +1304,24 @@ def service_urls(): # Every destination, for the top of every page but the index. Order -# matches nav_items. Colour is semantic everywhere else in this app -# (red = off-air, magenta = needs a decision, ...), so only the four -# that still carry a real teletext keyboard shortcut (r/g/y/c) get a -# colour swatch; the rest render in plain ink rather than borrowing -# one of the four colours for a destination it doesn't mean. +# matches nav_items. The locked eight teletext colours leave exactly +# five that read as text on black without inventing a ninth tone or +# borrowing a colour that already means something else here: 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 fails contrast as text and black is invisible on black, so the +# three destinations left over (Watch/Activity/Settings) share plain +# ink rather than a sixth colour that doesn't exist in this palette. FULL_FASTEXT = [ - ("k-red", "r", "100", "Index", "/"), - ("", "", "101", "Watch", "/watch"), - ("k-green", "g", "102", "Library", "/library"), - ("k-yellow", "y", "103", "Discover", "/discover"), - ("", "", "104", "Requests", "/requests"), - ("k-cyan", "c", "105", "System", "/system"), - ("", "", "106", "Activity", "/activity"), - ("", "", "900", "Settings", "/settings"), + ("k-red", "r", "100", "Index", "/"), + ("", "", "101", "Watch", "/watch"), + ("k-green", "g", "102", "Library", "/library"), + ("k-yellow", "y", "103", "Discover", "/discover"), + ("k-magenta", "", "104", "Requests", "/requests"), + ("k-cyan", "c", "105", "System", "/system"), + ("", "", "106", "Activity", "/activity"), + ("", "", "900", "Settings", "/settings"), ] # The index's own closing row: just the four letter keys, since the diff --git a/static/css/teletext.css b/static/css/teletext.css index d2f374e..dcf0d0c 100644 --- a/static/css/teletext.css +++ b/static/css/teletext.css @@ -533,10 +533,11 @@ a.tt-row:focus-visible .tt-row-sub { color: var(--tt-black); } color: var(--ink-dim); cursor: default; } -.fastext .k-red { color: var(--alert); } -.fastext .k-green { color: var(--ok); } -.fastext .k-yellow { color: var(--voice); } -.fastext .k-cyan { color: var(--live); } +.fastext .k-red { color: var(--alert); } +.fastext .k-green { color: var(--ok); } +.fastext .k-yellow { color: var(--voice); } +.fastext .k-cyan { color: var(--live); } +.fastext .k-magenta { color: var(--pending); } .fastext a:hover, .fastext a:focus-visible { background: currentColor; outline: none;