W3YH-102 Cross-Subdomain-Shell für terminal.w3yh.xyz
added
- **`tyrone-terminal/src/components/cross-shell/back-to-w3yh-badge.tsx`** und **`tyrone-terminal/src/components/cross-shell/cross-shell-footer.tsx`** — 1:1 aus `w3yh.xyz/src/components/cross-shell/` übernommen. Badge in default-Variante mit `placement="sticky"`, weil Tyrone keine echte Top-Bar hat — die `<StatusBar />` ist eine 8px-Bottom-Bar im Bloomberg-Stil.
changed
- **`tyrone-terminal/src/app/layout.tsx`** — globaler Stylesheet-Link auf `https://w3yh.xyz/cross-shell/cross-shell.css` im `<head>`. `<BackToW3yhBadge />` als erstes Body-Kind vor `<main>`, `<CrossShellFooter />` als letztes Body-Kind nach der existierenden `<StatusBar />`. Browser-Tab-Title gehoben auf `Tyrone Terminal · w3yh.xyz`.
- **`/etc/nginx/sites-available/terminal.w3yh.xyz`** — vier neue `add_header`-Direktiven (X-Content-Type-Options nosniff, X-Frame-Options DENY, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy ohne camera/mic/geo/topics/cohort) im HTTPS-Server-Block ergänzt. Bestehender HSTS-Header auf strengere Variante mit `includeSubDomains; preload` aktualisiert (vorher nur `max-age=31536000`).
deployed
- `sudo nginx -t` grün, `sudo systemctl reload nginx` (non-destructive, alte Worker bleiben bis fertig).
- `npm run build` im Tyrone-Tree grün, alle 11 Routes generiert (inkl. /, /login, /auth/callback, /auth/handoff, /api/auth/magic-link, /api/chart, /api/economic-events, /api/feed, /api/insights, /api/universe).
- `pm2 restart [process] durch (PID 2535842 neu).
- `curl -sI https://terminal.w3yh.xyz/` zeigt alle 5 Cross-Shell-Header live, HTTP/2 307 → /login wie erwartet (kein eingeloggter Zustand).
notes
- **Tyrone ist nicht git-versioniert** — keine Branch-/PR-Strategie wie bei gym/stocktracker, dafür Backup angelegt: `src/app/layout.tsx.bak-cross-shell` und `/etc/nginx/sites-available/terminal.w3yh.xyz.bak-cross-shell`. Rollback via `cp` falls nötig.
- **Cookies sicher:** Layout-Änderungen + Nginx-Header-Baseline berühren keine Cookie-Logik. Tyrone-Sessions bleiben weiterhin auf `terminal.w3yh.xyz`-Scope, nicht `.w3yh.xyz`.
- **Power-User-Subdomain-Scope von W3YH-102 ist damit komplett:** stocktracker (live seit 2026-04-25), gym (live heute), terminal (live heute). Spielplatz/Spielgenerator/Carpark wandern unter Spielgenerator-Dach (W3YH-116, eigene Familien-/Kinder-Strategie).