diff --git a/web/app.js b/web/app.js
index 14ecca0..aa8d01a 100644
--- a/web/app.js
+++ b/web/app.js
@@ -469,7 +469,19 @@ function renderM15(s, snap) {
sb.innerHTML = zl2.join("
");
sb.hidden = false;
} else if (sb) {
- sb.hidden = true;
+ // ⚠⚠ NICHT einfach verstecken — sagen, WARUM (User-Meldung 2026-08-20:
+ // "die TP in der M15 Karte sind nicht mehr sichtbar"). Es war kein
+ // Fehler: ohne Veto gibt es keine erlaubte Richtung, und ohne Richtung
+ // sind Entry Zone, Stop und TP1-3 nicht bestimmbar. Ein leeres und ein
+ // blockiertes Feld sahen bis hierher identisch aus — dieselbe Klasse
+ // wie "Slot frei" beim Breakout und wie das schweigende Trailing,
+ // beide am selben Tag aus demselben Grund repariert.
+ const g = !erl
+ ? "kein Trend-Veto (M30 flach) — ohne erlaubte Richtung sind Entry Zone, "
+ + "Stop und TP nicht bestimmbar"
+ : (!nah ? "kein Level in Reichweite" : "ATR_M15 fehlt noch");
+ sb.innerHTML = `Kein Setup: ${g}.`;
+ sb.hidden = false;
}
}
@@ -2447,7 +2459,7 @@ async function closeSlot(slot, label, pnl) {
// und der Browser zeigte Altes. Statt das jedes Mal von Hand zu diagnostizieren,
// sagt die Seite es jetzt selbst.
// ⚠ Bewusst SICHTBAR statt nur Konsole: die Konsole sieht am Handy niemand.
-const _JS_V = "204";
+const _JS_V = "205";
{
const htmlV = document.body && document.body.dataset
? document.body.dataset.htmlV : null;
diff --git a/web/index.html b/web/index.html
index a2eec26..4e2f0ed 100644
--- a/web/index.html
+++ b/web/index.html
@@ -12,9 +12,9 @@
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
und muss offline funktionieren. -->
-
+
-