MayDaySim
mapustv
v0.24.0 — Säule 5.1: Save-Boundary
Dispatcher, dieses MEGA-Update zieht eine harte Save-Grenze durch die gesamte Leitstelle: API, Rechte, Timer und Queries laufen jetzt tenant-sicher zusammen. Dazu kommen konkrete Live-Fixes für Admin-Login, Deploy-Reload, OOM und Overpass, damit heiße Schichten unter Last stabil bleiben.
130 Commits · 249 Dateien · +26.017 / -8.301 Zeilen · 23 Themen
═══════════════════════════════════════
Design & Look
Die Progress- und Discord-Embeds wurden auf data-first Render mit klaren CTAs und /maintenance-Linking umgestellt, weil Statuskommunikation nur hilft wenn sie sofort in die richtige Aktion führt.
↳ Beim Öffnen eines Embeds siehst du direkt belastbare Daten statt flackernder Placeholder.
— Shadow
Performance
Build-ID-Watcher plus no-cache-HTML erzwingen nach Deploy einen sauberen Client-Reload, damit Frontend und Backend auf derselben Release-Basis laufen und du keine Schema-Mismatches spielst.
↳ Wenn der Patch während einer laufenden Session ausgerollt wird, zieht der Client automatisch auf die neue Build-ID.
— Shadow
Die Runtime-Memory-Konfiguration wurde auf Heap 2 GB bei Container 3 GB stabilisiert, weil Cgroup-OOM den Prozess vorher hart beenden konnte und du dadurch keine stillen Server-Abbrüche mehr in Lastsp
↳ Bei hoher Einsatzdichte bleibt der Prozess online, statt ohne klaren OOM-Flag zu verschwinden.
— Shadow
Prisma, Dispatcher und Projektionen werden beim Start eager gewärmt, damit die ersten Aktionen nach Boot ohne Kaltstart-Lag reagieren und Alarmierungen sofort durchgehen.
↳ Direkt nach Neustart feuert dein erster Einsatz ohne den typischen ersten schweren Request.
— Shadow
Fixes
Der Auth-Flow speichert im JWT wieder email und name, weil der Admin-Check sonst nicht greifen konnte und du dadurch nach dem Login direkt in der richtigen Rolle weiterarbeiten kannst.
↳ Wenn du als Admin einsteigst, bleibt user.email in der Session erhalten statt auf user.id zu schrumpfen.
— Shadow
Overpass nutzt jetzt Mirror-Rotation, sauberen User-Agent und Stale-Cache-Fallback, weil externe Geodatenquellen schwanken und du dadurch trotzdem weiter auf realen Straßen disponieren kannst.
↳ Wenn ein Overpass-Mirror ausfällt, wechselt der Request automatisch auf einen anderen Endpoint.
— Shadow
Stabilität & Security
Die Multi-Tenant-Basis erzwingt Save-Scope unter /:saveId/..., damit Daten strikt getrennt bleiben und du parallele Spielstände ohne Cross-Save-Effekte disponieren kannst.
↳ Wenn du drei Einsätze parallel in unterschiedlichen Saves jonglierst, bleibt jede Aktion im richtigen Datenraum.
— Shadow + Christian Jahnke
Kritische Pfade wurden gehärtet, indem einsatz/generate-Kontexte getrennt und Timer-Routen auf INTERNAL_API_SECRET geprüft werden, damit interne Funktionen nicht extern missbraucht werden und dein
↳ Server-Timer reagieren nur noch auf legitimierte interne Aufrufe statt auf zufällige externe Treffer.
— Shadow
In Production sind TENANCY_V2_ENABLED=true und ein starkes INTERNAL_API_SECRET jetzt Pflicht, weil der Boot sonst blockiert wird und du dadurch keine unsichere Instanz versehentlich online bringst
↳ Beim Deploy startet der Prisma-Client absichtlich nicht, wenn die ENV-Migration fehlt.
— Shadow
Weiteres
Neue ESLint-Regeln stoppen fehlende saveId-Envelopes, unscoped Tenant-Queries und Raw-SQL außerhalb Admin-Pfaden schon im CI, damit Fehler nicht erst als Runtime-500 bei Spielern auftauchen.
↳ Wenn ein Hotfix unter Zeitdruck saveId vergisst, scheitert der Build direkt statt mitten im Einsatz.
— Shadow
… +1 weitere Änderungen auf der Website
Alle Details auf der Website →