fix(web): all accent text and icons use accent-fg (#5318)
release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m11s
release / go (push) Successful in 1m26s
release / integration (push) Successful in 4m18s
release / android (push) Successful in 4m44s
release / Build signed APK (releases and dev) (push) Successful in 4m53s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 26s
release / Verify release artifacts (tag releases only) (push) Skipped

The raw accent fails AA as text on every dark surface, not only on its
own tint: 3.04:1 on the page, 2.70 on iron, 2.21 on slate, against 4.5.
accent-fg (the house formula, 45% toward parchment) measures 5.62 at
worst across both modes. The operator chose the readable colour over the
signature teal for text, on 2026-10-08.

- 36 sites swap. They are 35 Tailwind uses: links, "Now playing", the
  ingest progress line, active shuffle/repeat, the liked heart, the app
  download icon and its hover. The last is the alphabet rail's pending
  spinner in CSS. Icons follow the text: as graphics they need only
  3:1, and the raw accent misses even that on iron.
- check-tint-contrast adds accent to TEXT_NEVER_RAW, so a new raw
  text-accent or color: var(--fs-accent) fails the web lane. Run against
  the files before the swap, it finds all 36. Borders, rings and fills
  keep the raw accent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 00:17:19 -04:00
co-authored by Claude Opus 5.5
parent 37d3a5bcd3
commit b46c080d19
26 changed files with 54 additions and 42 deletions
+2 -2
View File
@@ -290,7 +290,7 @@
<header class="flex items-baseline justify-between">
<h3 class="font-display text-xl font-medium text-text-primary">Pending requests</h3>
{#if pendingCount > PREVIEW_LIMIT}
<a href="/admin/requests" class="text-sm text-accent hover:underline">View all {pendingCount} →</a>
<a href="/admin/requests" class="text-sm text-accent-fg hover:underline">View all {pendingCount} →</a>
{/if}
</header>
@@ -523,7 +523,7 @@
<header class="flex items-baseline justify-between">
<h3 class="font-display text-xl font-medium text-text-primary">Quarantine</h3>
{#if quarantineCount > PREVIEW_LIMIT}
<a href="/admin/quarantine" class="text-sm text-accent hover:underline">View all {quarantineCount} →</a>
<a href="/admin/quarantine" class="text-sm text-accent-fg hover:underline">View all {quarantineCount} →</a>
{/if}
</header>
@@ -424,7 +424,7 @@
<div>
<h3 class="font-display text-lg font-medium text-text-primary">Lidarr</h3>
<p class="mt-1 text-sm text-text-secondary">
Search Lidarr from <span class="font-mono text-accent">/discover</span> and
Search Lidarr from <span class="font-mono text-accent-fg">/discover</span> and
route approved requests to it.
</p>
</div>
+1 -1
View File
@@ -225,7 +225,7 @@
{rowMeta(r)}
</div>
{#if r.imported_album_count > 0 || r.imported_track_count > 0}
<div class="text-sm text-accent" data-testid="ingest-progress">
<div class="text-sm text-accent-fg" data-testid="ingest-progress">
{#if r.kind === 'artist'}
{r.imported_album_count} {r.imported_album_count === 1 ? 'album' : 'albums'}
· {r.imported_track_count} {r.imported_track_count === 1 ? 'track' : 'tracks'} ingested
+2 -2
View File
@@ -495,7 +495,7 @@
{/each}
{#if s.points.length > 1}
<polyline
class="text-accent"
class="text-accent-fg"
points={sparkPoints(s)}
fill="none"
stroke="currentColor"
@@ -503,7 +503,7 @@
/>
{:else if s.points.length === 1}
<circle
class="text-accent"
class="text-accent-fg"
cx={xFor(s.points[0].week_start)}
cy={SPARK_H - s.points[0].skip_rate * SPARK_H}
r="2" fill="currentColor"