1 · Überblick & Architektur
Das System besteht aus vier eigenständigen Web-Apps (jeweils eine einzige HTML-Datei) plus einer Startseite, die alles verbindet. Alle Dateien liegen im iCloud-Ordner Trading-System/Maick Trading System und sind damit auf allen Macs synchron. Der Mac mini ist der Dauerläufer: Er liefert alle Apps per HTTP aus und stellt die Daten-Endpunkte bereit — dadurch funktioniert alles auch auf iPhone und iPad.
Live-Status der Server (wird beim Öffnen dieser Seite geprüft):
2 · Zugriff von allen Geräten
| Situation | Adresse |
|---|---|
| Offline-App / unterwegs (empfohlen) | https://mts-hub.pages.dev/ — Cloudflare Pages, immer online (HTTPS). Auf dem iPhone in Safari öffnen → „Zum Home-Bildschirm". Läuft offline und ohne WLAN (Service-Worker-Cache); Live-Kurse/FRED über den Cloudflare Worker. Siehe cloudflare-pages/. |
| Zuhause im WLAN (Mac mini an) | http://mac-mini-von-maick.local:8090/ |
| Unterwegs zum Mac (Tailscale) | http://mac-mini-von-maick-2.tail02bccd.ts.net:8090/ — nur wenn der Mac mini online ist |
Die Pages-Version ist der robuste Offline-/Mobil-Zugang (unabhängig vom Mac). Der Mac mini wird nur für Signal-Hub-Neuberechnung, KI-Committee und geräteübergreifende Daten-Sync gebraucht; ist er per Tailscale erreichbar, nutzen die Apps ihn automatisch, sonst läuft alles aus Cache + Worker. Nach Änderungen an den Apps neu deployen: cloudflare-pages/deploy.command.
iPhone/iPad als Offline-App (PWA) einrichten
Damit eine App auch bei ausgeschaltetem Mini startet, braucht es einen Service Worker — und der läuft nur über HTTPS. Deshalb dafür die https://…ts.net/-Adresse verwenden. Die http://…-Adressen funktionieren weiter, aber nur solange der Server erreichbar ist.
- Die
https://…ts.net/-Adresse in Safari öffnen (Mini an, Tailscale aktiv) - Teilen-Symbol → „Zum Home-Bildschirm"
- Beim ersten Start cacht der Service Worker die App-Dateien auf dem Gerät
- Danach startet die App auch unterwegs ohne Mini: Kurse kommen direkt von Yahoo (CORS-Proxy), das Portfolio aus dem
localStorage
*.ts.net-Adresse löst nur auf, wenn der Tailscale-Client läuft — sonst startet die installierte App unterwegs nicht. Tailscale ist für genau diesen Dauerbetrieb gemacht.http(s)://…-Adresse verwenden.3 · Die Apps
🏠 Startseite / Hub (index.html)
Verteiler zu allen Apps mit Live-Status-Badges. Jede Karte prüft beim Laden, ob der zugehörige Server läuft („✓ Live-Daten") und schaltet dann automatisch auf die Live-Version um; ohne Server bleibt die statische iCloud-Version verlinkt (Badge „iCloud-Version").
🎯 Maick's Trading System (Hauptapp)
Portfolio-, Risiko- und Trade-Verwaltung. Tabs: Dashboard (Cockpit Terminal mit 6 KPIs, Risiko-Gauge, Klumpenrisiko, problematische Positionen), Trading Cockpit (Streamlit-iframe, Port 8502), Portfolio, Control Center, CRV-Coach, Risk Management, FIRE Kalkulator; unter „Mehr": Psychology, Committee, Steuer, Lernen & Tools.
Markt-Chip im Cockpit-Terminal-Header: objektiver Schnellcheck aus Live-Daten — 🟢 = S&P 500 über MA50 und MA200 bei VIX < 20 · 🔴 = unter MA200 oder VIX > 25 · 🟡 = dazwischen. Klick öffnet Markets 360 mit der vollen Marktampel. Der Chip ist bewusst keine Kopie der Ampel (die hat manuelle Kategorien).
🚦 Trade-Gate: Beim Anlegen eines neuen Trades zeigt das Formular die aktuelle Marktphase (grün/gelb/rot mit Begründung). Wird im roten Umfeld eine neue Position eröffnet, fragt die App noch einmal nach — Minervinis Kernregel: in einem schwachen Markt keine neuen Käufe. Geschlossene/historische Trades werden nie geblockt.
Daten werden bei jeder Änderung an den Server gespeichert (mts_data.json, siehe Daten & Sicherung).
📲 Proaktive Alarme: Der 8090-Server überwacht die offenen Positionen automatisch (alle 20 Min, außerhalb der Ruhezeit 22–08 Uhr und am Wochenende pausiert) und schickt einen Push an deinen ntfy-Kanal (derselbe wie der Signal-Hub, nichts Neues abonnieren) bei: Stop-Loss-Bruch (Priorität „urgent"), SL-Nähe (Kurs < 3 % über dem Stop), Teilverkaufszonen +8 % / +20 % / +40 % (Minervini 50/25/25) und erreichtem Kursziel. Anti-Spam: Beim ersten Sichten einer Position wird nur der Ist-Zustand gemerkt — gepusht wird erst bei einem echten Übergang. Logik: mts_alarms.py. Test: python3 mts_alarms.py --test.
🔍 Verkaufs-Check (Sell-Coach): Knopf über den offenen Positionen. Prüft je Position die Minervini-Ausstiegsregeln aus Tageskursen (vom /history-Endpunkt) und zeigt eine Ampel in der Spalte „🔍 Verkauf": 🔴 Verkauf prüfen bei hartem Signal (Bruch der 50-Tage-Linie auf erhöhtem Volumen oder Kurs unter der 200-Tage-Linie = Stage-2-Ende), 🟡 Beobachten bei weichem Signal (Schluss unter 50-Tage-Linie, größter Tagesverlust seit Einstieg, Bruch des jüngsten Swing-Tiefs oder > 15 % unter dem jüngsten Hoch), sonst 🟢 Halten. Die Begründungen stehen im Tooltip der Ampel. Das ist das Gegenstück zur SEPA-Kaufprüfung im Coach — die Verkaufsdisziplin, wo bei Minervini die Rendite entschieden wird. Der Check schlägt zusätzlich einen nachgezogenen Stop-Loss vor (⤴ Stop → …): ab +8 % Break-Even, ab +20 % unter die 50-Tage-Linie bzw. das jüngste Swing-Tief — nur anhebend, nie senkend. Ein Klick übernimmt den neuen Stop (mit Rückfrage).
🩺 Status-Leiste: Oben zeigt die App den Live-Zustand: „Mac mini: online/offline" (alle 30 s neu geprüft — ein Ausfall des Dauerläufers wird sofort sichtbar, nicht erst an leeren Charts) und das Kurs-Datenalter („HH:MM · vor X Min", grün < 15 Min, orange < 60 Min, rot darüber). So ist immer klar, ob die angezeigten Zahlen frisch sind.
📊 Sektor-Rotation (Portfolio-Tab): zeigt die 11 US-Sektoren nach 1-Monats-Performance gerankt (stark → schwach). „🔄 Laden & einordnen" ordnet zusätzlich die offenen Positionen ihrem Sektor zu (Sektor kommt vom 8090-Server: FMP, sonst yfinance-Fallback) und markiert Positionen in den drei schwächsten Sektoren. Minervini-Logik: Leader in starken Sektoren halten, relative Schwäche im Auge behalten.
🏛️ Committee-Verdikt inline: Hat eine offene Position eine Investment-Committee-Analyse (Minervini/Weinstein/O'Neil), erscheint in der Ticker-Spalte ein farbiges Score-Badge (🏛️ Score). Tooltip zeigt Entscheidung + Entry/Stop/Ziel; Klick öffnet den Committee-Tab. So sieht man das KI-Urteil direkt am Bestand statt nur im separaten Tab.
🎲 FIRE Monte-Carlo (FIRE-Tab): zusätzlich zur glatten Compound-Hochrechnung simuliert die App 2000 Verläufe mit schwankenden Jahresrenditen (einstellbare Volatilität) und zeigt eine ehrliche Bandbreite — optimistisch (P10), Median (P50), pessimistisch (P90) — plus die Wahrscheinlichkeit, das Ziel binnen 40 Jahren zu erreichen.
🔬 Kelly „Was-wäre-wenn" (Risk-Management-Tab): wendet ein konsequentes fixes Risiko (1,0 / 1,25 / 2,0 %) auf die realen R-Multiples deiner geschlossenen Trades an und zeigt den kumulierten Depot-Multiplikator. Macht greifbar, wie stark stures Risikomanagement die Equity-Kurve verändert.
🧠 Minervini Coach 2 (minervini-coach-2.html)
Lern- und Analyse-App mit den Seiten Coach, Quiz, SEPA-Analyse (prüft die Trend-Kriterien automatisch aus Live-Daten), Academy (Stage-2-Basen, VCP, Entry, Pyramidisieren), Mental und Guide. Lernfortschritt synchronisiert über GitHub-Gist.
Deeplinks: ?page=sepa öffnet eine Seite direkt, ?ticker=NVDA startet sofort die SEPA-Analyse (wird u. a. vom Signal-Hub und der Hauptapp genutzt). Der Pre-Trade-Check lebt nur hier — die Hauptapp verlinkt darauf.
Kursquelle: SEPA-Analyse und Batch-Screener holen die Tageskurse jetzt zuerst vom MTS-Server (8090, /history) — beste Symbol-Auflösung (ISIN/onvista/EUR), kein öffentlicher CORS-Proxy, kein Rate-Limit. Ist der Mac mini aus, greift automatisch die bisherige Kette (Twelve Data → Stooq → Yahoo über Proxy).
📊 Minervini Markets 360 (Minervini/Minervini Dashboard.html)
Die 360°-Marktsicht. Tabs: 🚦 Marktampel (8 Bewertungskategorien, teils automatisch, teils manuell — Score ≥ 65 % bullish, ≤ 38 % bearish), Technik, Marktbreite, Sentiment, Makro, Rohstoffe, Sektoren, COT, Grundlagen, Links.
Markt-Heatmaps (im Marktampel-Tab): „US Sektoren · live" ist selbst gebaut aus eigenen Daten (Yahoo, ±15 Min — Standardansicht). „US Aktien · Vortag" ist das TradingView-Widget, das für US-Aktien prinzipbedingt nur den Vortagesschluss liefert (E-Badge) — daher die Beschriftung.
Datenquelle: Läuft der 8080-Server, kommen Marktampel/FRED/Sektoren über ihn (lokaler Cache). Ist der Mac mini aus, holt die App die Kurse selbst — direkt von Yahoo bzw. über CORS-Proxies (Marktampel, VIX, FRED und US-Sektoren-Heatmap). Als robusten, eigenen Proxy gibt es einen Cloudflare Worker (kostenlos, immer erreichbar) — Code + Anleitung in cloudflare-worker/. Nach dem Deploy die Worker-URL in die Konstante MTS_PROXY der drei Apps eintragen; dann wird er bevorzugt genutzt und die unzuverlässigen öffentlichen Gratis-Proxys (corsproxy.io ist kostenpflichtig geworden) nur noch als Notnagel. Markets 360 funktioniert damit auch unterwegs ohne Server; nur der lokale 15-Min-Cache entfällt dann. Über die HTTPS-PWA (https://…ts.net/) reicht zudem der 8090-Server die Datenendpunkte (/markt, /sector-perf, /fred) an den 8080-Server durch — so kommen echte Server-Daten ohne Mixed-Content, ohne Umweg über öffentliche Proxies. Minervinis Kernregel: Nur kaufen, wenn der Markt grün ist.
🛰️ Daily Signal Hub (Signal-Hub/signal-hub.html)
Tägliche, gerankte Ideen-Liste aus drei Quellen: PDF (Traderfox-Magazine aus dem iCloud-Ordner), Mail (Traderfox-Signale via IMAP/freenet, Passwort im macOS-Schlüsselbund signal-hub-imap) und Finviz (8 Screener: Momentum, VCP, SEPA, Zanger, Darvas, Livermore, High-Tight-Flag, Pullback).
Unified Score (0–100) aus Stage-2-Trend, relativer Stärke, 52W-Hoch-Nähe, Basis, Volumen und Quellen-Konsens. Schwellen: ≥ 70 Kauf-Kandidat, ≥ 50 beobachten. Earnings-Warnung und Depot-Abgleich („hältst du bereits") sind integriert.
Push: zweimal täglich (07:30 / 21:30) via ntfy an alle Geräte — nur neue Kandidaten ≥ 70. Der Zeitplan läuft vollautomatisch auf dem Mac mini.
📈 Trade-Funnel: Jede Kachel hat (im HTTP-Modus) einen „📈 Trade"-Link, der in der Hauptapp das Trade-Formular vorbefüllt öffnet (Ticker + Quelle = „Signal-Hub"). Die Hauptapp speichert die Quelle am Trade (Feld im Formular, frei wählbar/Vorschlagsliste). Im Psychology-Tab wertet „Performance nach Quelle" dann aus, welche Ideen-Quelle tatsächlich Gewinner bringt (Trades, Win-Rate, Ø-CRV, P&L je Quelle) — so lassen sich schwache Quellen datenbasiert aussortieren.
🧭 Regel-Check (Psychology-Tab): wertet automatisch deine Disziplin aus — Positionsgröße ≤ 2 % Depotrisiko, Stop-Loss eingehalten (Verlust nicht größer als geplant), Verlierer schneller geschnitten als Gewinner gehalten, Ø Gewinn ≥ 2× Ø Verlust. Jede Regel mit ✅/⚠️ und konkreten Zahlen. Verhaltensmuster sind bei Minervini der eigentliche Edge.
Zugriff (iPhone/PWA): Der Signal Hub wird über denselben 8090-Origin geöffnet (relativer Link) — der 8090-Server reicht /Signal-Hub/api/* an den 8091-Server durch. So funktioniert er in der installierten PWA und über Tailscale-HTTPS, ohne dass das Gerät den separaten Port 8091 erreichen muss (früher zeigte der Link direkt auf http://…:8091 → auf dem iPhone „Seite nicht erreichbar").
Token: Lesen ist offen; Schreiben (Aktualisieren/Einstellungen speichern) verlangt das Token aus Signal-Hub/config.json. Einmal mit ?token=… öffnen — danach merkt sich das Gerät den Zugang (Cookie, 1 Jahr).
4 · Server & Ports
| Port | Server | Aufgabe |
|---|---|---|
8090 | server_mts.py | Liefert den ganzen Projektordner aus (Startseite, Hauptapp, Coach, Wiki). Preis-Proxy (yfinance + onvista für dt. Derivate), Daten-Persistenz /data, /status; reicht /markt /sector-perf /fred an den 8080-Server durch (Markets 360 über HTTPS) |
8080 | Minervini/server.py | Markets 360 + Daten-Endpunkte /markt/<symbol>, /fred/<serie>, /sector-perf (15-Min-Cache), /status |
8091 | Signal-Hub/src/server.py | Signal-Hub-Dashboard, Screening-Lauf (POST /api/run), Konfiguration, /api/status; liefert auch den Coach aus (Fernzugriff über einen Port) |
8502 | Streamlit | Trading Cockpit (optional, manuell gestartet) |
5 · Dauerbetrieb auf dem Mac mini
Alle Dienste laufen als LaunchAgents: Sie starten beim Login automatisch und arbeiten als Watchdog — alle 5 Minuten wird geprüft, ob der Server noch läuft; wenn nicht, wird er neu gestartet. Ein abgestürzter Server ist also spätestens nach 5 Minuten von selbst wieder da.
| LaunchAgent | Dienst |
|---|---|
de.maickschwillo.mts-server | MTS-Server (8090) |
de.maickschwillo.minervini-dashboard | Markets-360-Server (8080) |
com.maick.signalhub.server | Signal-Hub-Server (8091) |
com.maick.signalhub | Push-Zeitplan: prüft alle 15 Min, löst je einmal pro Slot (07:30/21:30) Lauf + Push aus |
osascript-Wrapper, der den Server entkoppelt startet. Folge: launchctl bootout beendet den Server nicht — erst den Prozess am Port beenden.Nützliche Kommandos (Terminal am Mac mini)
# Status aller Agents
launchctl list | grep -E "maick|signalhub|minervini|mts"
# Server neu starten (Beispiel Signal-Hub, Port anpassen)
kill $(lsof -tnP -iTCP:8091 -sTCP:LISTEN)
launchctl kickstart gui/$(id -u)/com.maick.signalhub.server
# Logs
tail -f /tmp/mts-server.log
tail -f /tmp/minervini-dashboard.log
tail -f /tmp/signalhub-server.log # Server
tail -f /tmp/signalhub-scheduled.log # Screening-Läufe/Push
Energie: sleep 0, per Netzwerk weckbar (womp 1), nur das Display geht aus. Den Mini nicht herunterfahren.
Automatik installieren.command / Mac Mini Dauerbetrieb.command nie auf dem MacBook ausführen (sonst doppelte Pushes, und das MacBook verlernt den Ruhezustand). ② Keine gleichzeitigen Screening-Läufe von zwei Macs — Risiko von iCloud-Sync-Konflikten in data/signals.json. Anschauen/Lesen ist immer unkritisch.HTTPS für die Offline-App (einmalig)
Die PWA (Abschnitt 2) braucht HTTPS. Das liefert tailscale serve mit gültigem Zertifikat — rein im Tailnet, nichts wird öffentlich (kein funnel).
- Einmalig in der Admin-Konsole:
login.tailscale.com/admin/dns→ HTTPS Certificates aktivieren (sonst hängt der nächste Schritt beim Zertifikat). - Auf dem Mini:
tailscale serve --bg --https=443 http://127.0.0.1:8090 - Prüfen:
tailscale serve status→ zeigthttps://…ts.net/ → http://127.0.0.1:8090
--bg macht die Weiterleitung dauerhaft (übersteht Neustarts). Rückgängig: tailscale serve --https=443 off. Nach Code-Änderungen am 8090-Server diesen wie oben neu starten, damit die PWA-Verdrahtung (Manifest/Service Worker) aktuell ist.
6 · Daten & Sicherung
| Was | Wo | Sicherung |
|---|---|---|
| Trades, Portfolio, Einstellungen | mts_data.json (geschrieben vom 8090-Server bei jedem Speichern) | ① Rotierende Backups: data-backups/, die letzten 30 Stände, automatisch vor jedem Überschreiben · ② iCloud-Versionierung. Nicht mehr in Git (private Trading-Daten gehören nicht ins Repo — seit 2026-06 in .gitignore; Quelle der Wahrheit sind die data-backups/). Backup-Wächter: Die Hauptapp prüft über /backup-status die jüngste Sicherung (Alter, Lesbarkeit, Trade-Zahl) und warnt in der Status-Leiste, falls das Backup > 7 Tage alt, leer oder unlesbar ist. |
| Signal-Hub-Ergebnisse | Signal-Hub/data/signals.json | Wird bei jedem Lauf neu erzeugt — kein Backup nötig |
| Signal-Hub-Konfiguration (inkl. Token) | Signal-Hub/config.json | iCloud; bewusst nicht in Git (Secrets) |
| Coach-Lernfortschritt | GitHub-Gist | Cloud-seitig |
| Mail-Passwort (IMAP) | macOS-Schlüsselbund signal-hub-imap (pro Mac) | — |
mts_data.json wird in Git nur als bewusster, separater Snapshot committet („Daten: …"), nie vermischt mit Code-Änderungen. So kann ein Code-Rollback nie Trading-Daten zurückdrehen.7 · Wartung & Fehlerbehebung
| Symptom | Ursache / Lösung |
|---|---|
| Startseiten-Badge zeigt „iCloud-Version" | Zugehöriger Server läuft nicht → der Watchdog startet ihn binnen 5 Min selbst neu; sofort: launchctl kickstart gui/$(id -u)/<agent> (siehe Abschnitt 5) |
| Startseite: „Server nicht erreichbar", obwohl der Mini läuft | Mini und Gerät im selben WLAN? Von unterwegs: Tailscale aktiv? Die Seite findet den Server selbst, wenn sie als Datei geöffnet wurde — erreichbar muss er aber sein |
| Markets 360: Marktampel/Sektoren leer | Daten kommen sonst per CORS-Proxy auch ohne Server → bleibt alles leer, ist die Internet-Verbindung weg oder die öffentlichen Yahoo-Proxies (allorigins/corsproxy) gerade gestört; einfach erneut laden |
| Derivate-/Optionsschein-Kurse fehlen oder zeigen den Basiswert | Kurse deutscher Derivate (Turbos/OS/Faktor-/Knock-Out-Zertifikate) holt der 8090-Server per ISIN über die onvista-API (Yahoo listet sie nicht; daher nie den Basiswert verwenden). Zeigt eine Position „—", war onvista kurz nicht erreichbar → erneut „🔄 Kurse". Der Abruf nutzt zuerst den lokalen Proxy (8090); ohne ihn bleiben reine Derivate „—". |
| Signal-Hub: keine Mail-Signale | Schlüsselbund-Eintrag fehlt auf dem Mac, der den Lauf ausführt → security add-generic-password -a "mschwillo@freenet.de" -s "signal-hub-imap" -U -w |
| Signal-Hub: keine PDF-Signale | pypdf fehlt → /usr/bin/python3 -m pip install --user pypdf; Magazin-Ordner-Pfad in config.json prüfen |
| „Speichern" im Signal-Hub geht nicht (403) | Token fehlt auf dem Gerät → Seite einmal mit ?token=… öffnen |
| Pushes kommen doppelt | Push-Zeitplan läuft auf zwei Macs → auf dem MacBook: launchctl bootout gui/$(id -u)/com.maick.signalhub |
| iPhone: Seite „tot", nichts klickbar | HTML-Datei statt HTTP-Adresse geöffnet → http://mac-mini-von-maick.local:8090/ verwenden |
| Markets 360: FRED/Makro oder Marktdaten veraltet | Der Service-Worker (PWA) reicht /markt, /fred, /sector-perf jetzt immer frisch ans Netz (nie aus dem Cache). Falls nach einem Update noch alte Werte erscheinen: Seite neu laden (ggf. zweimal) bzw. die PWA einmal schließen und neu öffnen, damit der neue Service-Worker (Cache mts-pwa-v3) aktiv wird. |
| Signal-Hub „Aktualisieren" tut nichts / „Lauf läuft bereits" | Ein früherer Lauf hing → das in-memory-Lock blieb gehalten. Behoben: server.py bricht einen Lauf nach RUN_TIMEOUT (10 Min) hart ab und gibt das Lock frei. Sofort-Abhilfe: 8091-Server neu starten (Port-Prozess killen, dann launchctl bootstrap gui/$(id -u) Signal-Hub/com.maick.signalhub.server.plist). Der Server-Job läuft jetzt mit KeepAlive — stirbt der Server, startet launchd ihn binnen ~10 s neu (zusätzlich 5-Min-Watchdog via StartInterval). Voraussetzung: Der Job muss in launchd geladen sein (einmalig per bootstrap bzw. „Automatik installieren.command"). Der Timeout killt jetzt die ganze Prozessgruppe (run.py + scorer.py), sonst hielt ein überlebendes Kind die Pipe offen und das Lock blieb hängen. |
| Signal-Hub aktualisiert nicht automatisch (kein Morgen-/Abend-Push) | Der Scheduler-Job com.maick.signalhub muss die osascript-Variante der Plist nutzen (wegen TCC/iCloud) und nach /tmp loggen — nicht python3 direkt mit iCloud-Logpfad (das bricht mit EX_CONFIG 78 ab, bevor etwas läuft). Korrekte Plist: Signal-Hub/com.maick.signalhub.plist nach ~/Library/LaunchAgents/ kopieren, dann bootout + bootstrap. Außerdem: run.py läuft unter /usr/bin/python3 (3.9) — dort muss pypdf installiert sein (/usr/bin/python3 -m pip install --user pypdf certifi), sonst überspringen PDF/Mail still (Code 1) und es kommen keine frischen Signale. Prüfen: tail /tmp/signalhub-scheduled.log. |
| Markt-Chip im Cockpit fehlt | 8080-Server nicht erreichbar — Chip blendet sich dann bewusst aus |
| Kein Zugriff von unterwegs | Tailscale auf iPhone und Mini aktiv? Mini wach? (Display darf aus sein) |
8 · Tests
tests/test-hub-token.sh— prüft Token/Cookie/CORS-Logik des Signal-Hub-Servers (nur GETs bzw. nebenwirkungsfreie POSTs)tests/— Playwright-Setup für Browser-Tests der Apps
MTS.save() würde die echte mts_data.json überschreiben. In Playwright immer alle POST-Requests blocken.9 · Pflege dieses Wikis
Dieses Wiki ist Teil des Repos und wird bei jeder Systemänderung im selben Commit mitgepflegt (Regel in CLAUDE.md verankert — gilt damit für jede Claude-Code-Session). Das „Stand"-Datum oben rechts kommt automatisch vom Dateidatum, die Server-Status-Chips in Abschnitt 1 sind live. Da die Datei in iCloud liegt und über Port 8090 ausgeliefert wird, ist immer und überall die aktuelle Fassung sichtbar.