Give every fastext destination a distinct mark; add skip-link, fix aria-label
All checks were successful
Deploy / deploy (push) Successful in 23s

Colours: "if the intent is to have them all different colors than
lets have them all different colors." The locked eight only give five
safe as full text (blue fails contrast, black's invisible on black),
so the other three get their own treatments instead of sharing plain
ink: Watch gets blue as a swatch-only accent (the button cap's colour,
not the label), Activity gets an ordered-dither swatch (the other
legal way to mark something without a ninth colour), and Settings
alone keeps plain ink deliberately, as the one page with no live
status of its own.

Accessibility (items 1 and 3 from the design review, item 2 skipped
per request — the header's download figure stays live and unmuted):
- Added a skip-link, off-screen until focused, jumping past the
  8-item top nav straight to each page's #main-content.
- Renamed the nav's aria-label from "Fastext" (meaningless without
  the visual teletext context) to "Page navigation".
This commit is contained in:
Barely Removable 2026-08-30 09:24:52 -07:00
parent 15936027de
commit 5dd49c505c
4 changed files with 79 additions and 28 deletions

34
app.py
View file

@ -1303,24 +1303,34 @@ def service_urls():
}
# Every destination, for the top of every page but the index. Order
# 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.
# 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.
FULL_FASTEXT = [
("k-red", "r", "100", "Index", "/"),
("", "", "101", "Watch", "/watch"),
("k-blue", "", "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"),
("k-dither", "", "106", "Activity", "/activity"),
("", "", "900", "Settings", "/settings"),
]