Meldungen entschlackt, Bild-Modalbox, neues Muster, kleinere Trade-Schrift, M15 eingeklappt (v=207)

Fuenf User-Vorgaben in einem Durchgang.

(1) HYPERLIQUID + MUSTER + TRAILING AUS DER MELDUNGEN-KARTE. Die drei Divs sind
ENTFERNT, nicht nur versteckt; die Render-Bloecke bleiben stehen (null-sicher),
damit ein Zurueckholen eine reine HTML-Aenderung ist. Backend rechnet
unveraendert weiter (hl_ctx, patterns_tf, trail_info stehen im Snapshot).
Stufe F bekam eine dokumentierte Ausnahmeliste - sonst haette sie drei
Dauer-Treffer gemeldet, und eine Pruefung mit Dauer-Treffern wird ignoriert.

⚠⚠ DABEI ZWEI ECHTE ABSTUERZE GEFUNDEN - und der Weg dahin ist der Punkt.
`hl-note` wurde ueber das Auffang-`$` geholt; nach dem Entfernen des Elements
griffen ZWEI Zweige ungeschuetzt auf `hlEl.classList` zu. Im Browser ein
TypeError mitten im Render = das GESAMTE Dashboard friert auf Altwerten ein.
Die Render-Probe blieb zunaechst GRUEN - ihr eigener blinder Fleck: die
DOM-Attrappe lieferte fuer JEDE ID ein Element, `$streng` konnte darin also NIE
`null` zurueckgeben. Genau der Fall, fuer den es `$streng` gibt, war ungeprueft.
Behoben: die Attrappe kennt jetzt die echten IDs aus index.html
(`getElementById: id => HTML_IDS.has(id) ? el() : null`) - und meldete die
beiden Zweige im selben Lauf. Danach beide Waechter ergaenzt.

(2) BILD-MODALBOX. Klick auf ein Chartmuster oeffnet es gross.
⚠⚠ BEWUSST OHNE BIBLIOTHEK: ein Lightbox-Paket waere 15-40 KB plus ein zweites
Bedienkonzept fuer ~30 Zeilen Code. Das Dashboard laeuft nur ueber WireGuard,
ein CDN ist gar nicht erreichbar; das Projekt hat aus demselben Grund Tailwind
abgelehnt und am 05.08. die vendorte lightweight-charts (164 KB) entfernt.
Delegierter Klick auf `document`, weil die Kacheln bei JEDEM Render neu erzeugt
werden - ein Handler am <img> waere nach dem naechsten Snapshot weg.
Grosse Fassung (1408 px, ~133 KB) liegt getrennt unter muster/gross/ und wird
ERST beim Klick geladen; die Kachel bleibt bei 25 KB. Esc und Klick auf den
Hintergrund schliessen.

(3) NEUES BILD gescannt: "Inverse Tasse+Henkel.jpg". `inv_cup` hatte bis dahin
ausdruecklich KEIN Bild ("lieber keins als ein falsches") - jetzt zugeordnet.
Damit 16 Muster, keins ohne Datei, keine Datei ohne Zuordnung.

(4) SCHRIFT IN DER TRADE-LEISTE um 2 px (bezogen auf die 18-px-Referenz)
verkleinert - 4 Regeln: Ueberschrift, Feldbeschriftungen, Werte/Eingaben,
Knoepfe.
⚠ Erster Versuch nahm alles zwischen `.tb-title{` und `.mg-row` und traf 80
Regeln statt 4 - die halbe Oberflaeche. Zurueckgesetzt und namentlich
aufgezaehlt. Ein Zeilenbereich ist kein Selektor.

(5) M15-KARTE PER DEFAULT EINGEKLAPPT. Das `open` am ersten <details> ist weg.
⚠ Zusaetzlich der localStorage-Schluessel gebumpt (oil_m15_akk -> oil_m15_akk2):
bei jedem, der die Karte je aufgeklappt hatte, stand dort `true`, und das
gewinnt gegen den neuen Default. Ein neuer Schluessel setzt genau EINMAL
zurueck; danach merkt sich die Karte die eigene Wahl wie bisher.

Pipeline A-G gruen, 97 Tests, 14 render*-Funktionen (Fixture UND leerer
Snapshot), deployt und am ausgelieferten HTML/JS verifiziert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-20 22:27:18 +02:00
co-authored by Claude Opus 5
parent 06024dd0c1
commit 71abb49cf7
23 changed files with 155 additions and 21 deletions
+35 -7
View File
@@ -12,9 +12,9 @@
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
und muss offline funktionieren. -->
<link rel="stylesheet" href="pico.min.css?v=1">
<link rel="stylesheet" href="style.css?v=205">
<link rel="stylesheet" href="style.css?v=207">
</head>
<body data-html-v="205">
<body data-html-v="207">
<!-- Modul-Menü (ganz oben) -->
<nav id="tabs">
<button class="tab active" data-view="dash">Dashboard</button>
@@ -139,7 +139,11 @@
dann zu diesen Preisen. -->
<div class="m15-setup" id="m15-setupblock" hidden></div>
<div class="m15-grid">
<details class="m15-akk" data-akk="prüfkette" open>
<!-- ⚠ KEIN `open` mehr (User-Wunsch 2026-08-20): alle Punkte der
M15-Karte sind per Default EINGEKLAPPT. Der zuletzt vom
Nutzer gewaehlte Zustand wird weiterhin gemerkt — nur der
Ausgangszustand ist jetzt zu. -->
<details class="m15-akk" data-akk="prüfkette">
<summary> ④ Prüfkette</summary>
<div class="m15-item" id="m15-bias" title="Uebergeordneter Trend M30 + H1. Der EINZIGE belegte Filter: gegen den HTF zu handeln halbiert den Edge (gemessen ×2)."></div>
<div class="m15-item" id="m15-kosten" title="Spread geteilt durch ATR_M15. Auf M15 gemessen 0,104 gegen 0,193 auf M5 - hier ist die groebere Zeitebene echt im Vorteil. Schwellen 0,20 / 0,32 aus backtest_realcosts.py."></div>
@@ -174,14 +178,20 @@
gemessen (`analyze_hl_funding.py`, 5.095 Stundenwerte, 7 Monate)
hält entüberlappt KEIN Bucket die 2-Stichproben-Regel. Kein
Verdict-Gewicht, kein Trigger. -->
<div class="hl-note hidden" id="hl-note"></div>
<!-- ⚠ AUSGEBLENDET am 2026-08-20 (User-Wunsch): Hyperliquid-Kontext
(`#hl-note`), M1/M5-Muster (`#pat-note`) und Trailing-Zustand
(`#trail-note`). Die Elemente sind ENTFERNT, nicht nur versteckt —
die drei Render-Bloecke greifen ueber `$streng` zu und ueberspringen
sich damit sauber. Das Backend rechnet unveraendert weiter
(`hl_ctx`, `patterns_tf`, `trail_info` stehen im Snapshot), die
Muster-Bilder haben ihre eigene Karte im Dashboard.
Zurueckholen = die drei <div class="hl-note hidden" id="..."> hier
wieder einsetzen; am JS ist nichts zu aendern. -->
<!-- Trailing-Zustand im Klartext. Die Trailing-KARTE ist seit dem
22.07. ausgeblendet; damit gab es keine Stelle mehr, an der man
sah, WARUM der Stop nicht nachgezogen wird (User-Frage 20.08.). -->
<!-- M1/M5-Muster kompakt (User 2026-08-20). Bewusst OHNE Bild:
die Meldungen-Karte ist der Live-Textstrom zum laufenden Trade. -->
<div class="hl-note hidden" id="pat-note" title="Das gerade entstehende Muster auf M1 und M5. Reine Anzeige — die Muster-Klasse ist als Signal gemessen und verworfen (Ziel-Trefferquote 1338 %), auf M1 am schwaechsten."></div>
<div class="hl-note hidden" id="trail-note" title="Was das Trailing gerade tut. Zwei Gruende, warum es scheinbar nichts tut und beide richtig sind: es startet erst ab 1,3×ATR Gewinn (seit 20.08., vorher 0,3×), und es lockert einen bereits engeren Stop niemals."></div>
<!-- Auto-Flip-Close: schließt eine Position, wenn die Empfehlung dreht.
⚠ GEMESSEN in BEIDEN Halbjahren negativ (92/160 R,
backtest_flipclose2.py), läuft auf ausdrücklichen User-Wunsch. Hatte
@@ -431,6 +441,24 @@
</nav>
<!-- Modal (Bestätigung / Token-Eingabe) -->
<!-- ══ BILD-MODALBOX (User-Wunsch 2026-08-20) ═══════════════════════════════
Klick auf ein Chartmuster-Bild öffnet es in voller Größe.
⚠⚠ BEWUSST OHNE BIBLIOTHEK. Ein Lightbox-Paket (GLightbox, PhotoSwipe …)
wäre 1540 KB plus ein zweites Bedienkonzept — für ~40 Zeilen Markup und
CSS. Das Projekt hat aus demselben Grund Tailwind abgelehnt (WireGuard,
offline, kein npm) und am 05.08. die vendorte lightweight-charts (164 KB)
wieder entfernt. Ein CDN scheidet ohnehin aus: das Dashboard läuft nur
über WireGuard, ohne Weg ins Internet.
⚠ Die große Fassung (`muster/gross/…`, ~133 KB) wird ERST beim Klick
geladen — die Kachel zeigt die 25-KB-Fassung. -->
<div id="bildbox" class="bildbox hidden">
<button id="bildbox-zu" class="bildbox-zu" title="Schließen (Esc)"></button>
<figure class="bildbox-inner">
<img id="bildbox-img" alt="">
<figcaption id="bildbox-txt"></figcaption>
</figure>
</div>
<div id="modal" class="modal hidden">
<div class="box">
<div class="box-title" id="modal-title"></div>
@@ -445,6 +473,6 @@
</div>
<div id="toast" class="toast hidden"></div>
<script src="app.js?v=205"></script>
<script src="app.js?v=207"></script>
</body>
</html>