Erste Etappe des v3-Umbaus. Bewusst ohne jede Architektur-Aenderung: nur
Entruempeln, damit der Rest des Umbaus auf einem messbar leichten Stand aufsetzt.
Gemessen (vorher -> nachher):
dist gesamt 27 375 720 B -> 1 477 852 B (-94,6 %)
Dateien in dist 135 -> 35
Start-Chunk gzip 220 278 B -> 110 571 B (-49,8 %)
CSS gzip 31 577 B -> 15 121 B (-52,1 %)
Schrift-Dateien 112 -> 11 (WOFF 1: 0)
Vier Eingriffe:
1) avatar.vrm (24,5 MB) entfernt. Lag in public/ und dist/, wurde von KEINER
Zeile des Repos referenziert — der Renderer Avatar3D.tsx war schon vorher
verschwunden. War 89,5 % der Nutzlast, die auf die Box ging. Damit fallen
auch die .gitignore-Sonderregel und der Direkt-Deploy-Schritt weg.
DISASTER_RECOVERY.md §3·D ehrlich auf "ausgebaut" gesetzt (7 Stellen).
2) Schriften: die 11 @fontsource-Sammelimporte zogen ALLE Subsets (latin-ext,
griechisch, kyrillisch) und je eine WOFF-1-Fassung mit — 112 Dateien, 1,58 MB,
davon 902 kB WOFF 1, das kein Browser dieser App je abruft. Jetzt stehen die
@font-face-Regeln direkt in index.css: nur latin, nur WOFF 2, nur die Schnitte,
die per grep ueber die font-*-Klassen wirklich belegt sind.
Nebenbei behoben: JetBrains Mono 600/700 fehlten komplett — die 19 Stellen mit
`font-mono font-bold/semibold` wurden vom Browser synthetisch fettgerechnet.
Jetzt echte Schnitte; bei Monospace ist die Laufweite gleich, kein Layout-Versatz.
3) Recharts aus dem Startbuendel. Das Cockpit ist die Startseite und laedt daher
NICHT lazy; ueber SystemStatusCard/TokenPerformanceCard zog es Recharts samt
d3 in index-*.js. LiveAreaChart ist jetzt eine Lazy-Huelle (Suspense mit
hoehengleichem Platzhalter, damit nichts springt), die Recharts-Umsetzung liegt
in LiveAreaChartImpl.tsx und kommt als eigener Chunk nach (105 kB gzip).
4) index.css: height 100dvh mit 100% als Rueckfall. Auf Mobilbrowsern mit
einfahrender Adressleiste ist 100 % nicht die sichtbare Hoehe.
Dazu ein Buendel-Budget in beiden Ampel-Dateien (.gitea/ = MC2-Fassung,
deploy/ = universelle Vorlage): Start-Chunk und dist-Gesamtgroesse werden am
FRISCHEN Build im Runner gemessen. Bewusst kein Vergleich mit dem committeten
dist — der waere ueber Node-Versionen hinweg flatterhaft und wuerde dauerhaft
rot leuchten, was das Signal zerstoert.
Verifiziert gegen die Box (Frontend-Dev mit MC_API_TARGET=192.168.178.151:9001):
Cockpit rendert mit Live-Daten, keine Konsolenfehler, alle 11 Schriftschnitte
registriert, LiveAreaChartImpl + recharts laden nachweislich als Nachlade-Chunk.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Fix: 'Interaktives Terminal' im Cockpit führte ins Leere (#terminal) → Konsole
- Mobile: Off-Canvas-Sidebar mit Hamburger unter md, Inhalt volle Breite
(vorher: 240px starre Sidebar, 135px Rest mit Quer-Scroll auf dem Handy)
- Dead Weight raus: src/mc3/ (verworfener Prototyp), DashboardView (alte
Zentrale) + 6 nur dort genutzte Karten, 8 ungenutzte npm-Pakete
(three, three-vrm, react-three fiber/drei, sigma, graphology ×2, @types/three)
- Code-Splitting: alle Views außer Cockpit per React.lazy → Haupt-Bundle
983 → 739 KB, jede View ein eigenes Chunk
- Fonts lokal (@fontsource) statt Google-CDN → UI offline identisch
- Polling harmonisiert: EINE Takt-Tabelle in queries.ts (Graphen 3s, Rest
8-60s), keine Override-Intervalle mehr in Komponenten; Updates-Check
(apt/git!) von 4s auf 60s
- CSS-Hack-Layer aufgelöst: !important-Klassen-Sniffing → explizite
.mc-card/.mc-card-sm/.nav-active-Klassen (Look identisch, ungeschichtete
Regeln statt Utility-Raten); totes .light-Theme raus; Scrollbars 1× definiert
- Aurora: animierte Fullscreen-Blur-Filter → statische radial-gradients
(gleicher Look, keine Dauer-GPU-Last)
- Sicherheit: Sudo-Passwort/HF-Token nur noch bei mutierenden Requests,
nicht mehr auf jedem GET-Poll
- Strg+K statt ⌘K auf Windows; dist neu gebaut
Live gegen die Box verifiziert: alle 10 Views + Mobile-Flow, 0 Konsolen-Fehler.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>