Session 41: P0 audit fixes — MLB stat_types, broken routes, tier mismatch, self-hosted fonts (1940 tests)

- Backend: whitelist MLB stat_types in analyze.js + scan.js gates (mirrors
  python validation.py); fixes MLB scans 400ing.
- Routes: /settings -> /profile, /report -> /blog redirect pages.
- Profile: read tier from useAuth().tier (nav's source) to kill the
  Free-vs-DESK mismatch.
- Fonts: self-host Inter/JetBrains Mono/IBM Plex Mono via next/font, drop the
  503ing fonts.googleapis.com <link>; rewire literal font-family refs to vars.
- Kept /settings/security (real MFA page) intact — NOT clobbered to a redirect.
- +33 tests (1907 -> 1940), 149 suites; web build clean (exit 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kev
2026-06-17 21:55:40 -04:00
parent e453c24d2c
commit 32069863dc
17 changed files with 318 additions and 41 deletions
+10 -7
View File
@@ -94,9 +94,12 @@
--scan-op: 0.04;
--grade-hero: var(--g-a);
/* Type — Inter for chrome/UI, JetBrains Mono for ALL data */
--sans: 'Inter', system-ui, sans-serif;
--mono: 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
/* Type — Inter for chrome/UI, JetBrains Mono for ALL data.
Session 41: --font-* come from next/font (self-hosted, set on <html>).
Literal family names kept as fallbacks for any non-next/font context. */
--sans: var(--font-sans), 'Inter', system-ui, sans-serif;
--mono: var(--font-mono), 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
--ibm-mono: var(--font-ibm), var(--font-mono), 'IBM Plex Mono', 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
/* ── Legacy aliases — every existing component still resolves ── */
--bg-primary: var(--bg-0);
@@ -605,7 +608,7 @@ body.tex-grain::before {
───────────────────────────────────────────────────────── */
.wordmark {
font-family: 'IBM Plex Mono', 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
font-family: var(--ibm-mono);
font-weight: 800;
letter-spacing: 0.10em;
display: inline-flex;
@@ -717,7 +720,7 @@ body.tex-grain::before {
align-items: center;
gap: 8px;
padding: 4px 10px 4px 4px;
font-family: 'IBM Plex Mono', 'JetBrains Mono', monospace;
font-family: var(--ibm-mono);
font-size: 10px;
font-weight: 700;
letter-spacing: 0.15em;
@@ -743,7 +746,7 @@ body.tex-grain::before {
padding: 6px 10px;
background: var(--bg-1);
border: 1px solid var(--border);
font-family: 'IBM Plex Mono', 'JetBrains Mono', monospace;
font-family: var(--ibm-mono);
font-size: 10px;
letter-spacing: 0.15em;
text-transform: uppercase;
@@ -761,7 +764,7 @@ body.tex-grain::before {
/* The V watermark — Vendetta nod, hero background */
.v-watermark {
position: absolute;
font-family: 'IBM Plex Mono', 'JetBrains Mono', monospace;
font-family: var(--ibm-mono);
font-weight: 800;
font-size: 70vmin;
line-height: 0.8;