feat: Debug-Kasten minimierbar; Mobil-Inhalte ~25 % kleiner
Debug-Panel: Ein Klick entfernte es bisher ganz — was nichts half, weil der 15-Sekunden-Takt es sofort wieder aufbaute; auf dem Telefon verdeckte es damit dauerhaft die untere rechte Ecke. Jetzt schaltet der Klick zwischen Kasten und einem 26-px-Icon (⟳) unten rechts um. Der Zustand liegt im localStorage, nicht am Element: Das Panel wird bei jedem Takt neu bespielt, ein Zustand am DOM-Knoten wäre beim nächsten Tick weg. Über einen echten Intervall-Durchlauf geprüft. Der aufgeklappte Kasten bekommt white-space:pre-wrap — die mit \n gefügten Zeilen liefen bisher zu einem Absatz zusammen. Mobil ~25 % kleiner: MOBILE_ZOOM=0.75 als Faktor AUF den Nutzer-Zoom, nicht als neuer Anfangswert — sonst wäre die Verkleinerung nach dem ersten Zoomen weg und „Zurücksetzen" führte auf eine Größe, die auf dem Telefon zu groß ist. Die Anzeige nennt den effektiven Wert (75 %), sie soll beschreiben was man sieht. Die drei Messstellen rechnen jetzt effZoom() zurück; nachgemessen bei 0,75 liegen alle fünf Stationspunkte exakt auf ihren Blattknoten (0 px). Der Text kann kein zoom bekommen — Zeilennummern-Streifen und Spiegel messen am Textfeld (D33) und die Streifenbreite rechnet in ch. Also font-size .64rem an Textfeld und Streifen gemeinsam, Innenabstand im selben Verhältnis mit. 27 statt 19 Zeilen im Bild. Dabei aufgefallen: Der Grafikexport war schon immer zoom-abhängig falsch — die SVG-Schriftgrößen sind feste Zahlen, die Kästen gemessen. Fiel nie auf, weil 100 % der Normalfall war; mit dem Mobil-Faktor wäre es der Regelfall geworden. diagramToSvg() stellt den Zoom für die Messung jetzt kurz auf 1 (Knoten auf dem Schirm 143 px, im SVG 189,7 px — die unskalierte Größe). Desktop unverändert nachgeprüft (Zoom 1, 100 %, 13,6 px). Prod-Build enthält das Debug-Panel weiterhin gar nicht. SPEC §9, D17 (Nachtrag 2) und frontend/CLAUDE.md nachgezogen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
ec086eb526
commit
037db30d96
@@ -243,6 +243,54 @@ Mobil, die Grid-Minima `--pmin-d`/`--pmin-e`, `syncPanelMins()`,
|
||||
`setMobileDrow()` und das Titelzeilen-Tippen; Desktop behält Splitter,
|
||||
Presets und Fenster-Buttons unverändert.
|
||||
|
||||
**Nachtrag 2 — auf Mobil sind die Inhalte grundsätzlich ~25 % kleiner, und der
|
||||
Debug-Kasten minimiert sich statt zu verschwinden.**
|
||||
|
||||
**Verkleinerung als Faktor, nicht als neuer Anfangswert.** `MOBILE_ZOOM = 0.75`
|
||||
multipliziert den Nutzer-Zoom (`effZoom()`), statt ihn beim ersten Start auf
|
||||
0,75 zu setzen. Der Unterschied zählt: Ein Anfangswert wäre nach dem ersten
|
||||
Zoomen weg, und „Zurücksetzen" führte zurück auf eine Größe, die auf dem
|
||||
Telefon zu groß ist. Als Faktor bleibt die Verkleinerung eine Eigenschaft des
|
||||
Geräts, und der Regler arbeitet relativ dazu weiter. Die Anzeige nennt den
|
||||
**effektiven** Wert (75 % statt 100 %) — sie soll beschreiben, was man sieht,
|
||||
nicht was man eingestellt hat.
|
||||
|
||||
**Die drei Messstellen mussten mit.** `alignStems()`, `drawCheapPath()` und
|
||||
`drawDepLinks()` rechnen gemessene Pixel durch den CSS-`zoom` zurück; sie lesen
|
||||
jetzt `effZoom()` statt `zoom`. Nachgemessen bei 0,75: alle fünf
|
||||
Stationspunkte liegen exakt (0 px Abweichung) auf ihren Blattknoten.
|
||||
|
||||
**Der Text kann kein `zoom` bekommen.** Zeilennummern-Streifen und Spiegel
|
||||
messen am Textfeld (D33), und der Streifen rechnet seine Breite in `ch` — beide
|
||||
folgen der **Schriftgröße**, nicht einem Zoom auf einem Vorfahren. Also
|
||||
`font-size: .64rem` (= 0,85 × 0,75) an Textfeld **und** Streifen gemeinsam;
|
||||
`line-height` ist einheitenlos und skaliert mit. Der Innenabstand des
|
||||
Textfelds schrumpft im selben Verhältnis mit (14/16 → 10/12 px), sonst wäre der
|
||||
Rand auf 375 px unverhältnismäßig breit. Ergebnis: 27 statt 19 Zeilen im Bild.
|
||||
|
||||
**Dabei aufgefallen: der Grafikexport war schon immer zoom-abhängig falsch.**
|
||||
Die Schriftgrößen im Ausgabe-SVG sind feste Zahlen (14 für Labels, 9–11 für
|
||||
Badges), die Kästen kommen aus der Live-Messung — bei jedem Zoom ≠ 1 passten
|
||||
Text und Kasten nicht zueinander. Das fiel nie auf, weil 100 % der Normalfall
|
||||
war; mit der Mobil-Verkleinerung wäre es der Regelfall geworden. `diagramToSvg()`
|
||||
stellt den Zoom für die Messung deshalb kurz auf 1 und danach zurück —
|
||||
derselbe Griff wie bei der `exporting`-Klasse (D25-Nachtrag), und die Funktion
|
||||
läuft synchron, es wird nichts davon gezeichnet. Nachgemessen: Knoten auf dem
|
||||
Schirm 143 px, im SVG 189,7 px — also die unskalierte Größe, passend zur festen
|
||||
Schrift.
|
||||
|
||||
**Das Debug-Panel minimiert sich jetzt, statt sich zu schließen.** Ein Klick
|
||||
entfernte es bisher ganz — was nichts half, weil der 15-Sekunden-Takt es sofort
|
||||
wieder aufbaute; auf dem Telefon verdeckte es damit dauerhaft die untere rechte
|
||||
Ecke. Jetzt schaltet der Klick zwischen Kasten und einem 26-px-Icon (⟳) unten
|
||||
rechts um. Der Zustand liegt im **localStorage**, nicht am Element: Das Panel
|
||||
wird bei jedem Takt neu bespielt, ein Zustand am DOM-Knoten wäre also beim
|
||||
nächsten Tick weg. Nachgeprüft über einen echten Intervall-Durchlauf und über
|
||||
den `visibilitychange`-Pfad — es bleibt minimiert. (Test-Hilfe, im Prod-Build
|
||||
ohnehin unterdrückt; die Gelegenheit genutzt, dem aufgeklappten Kasten
|
||||
`white-space: pre-wrap` zu geben — die mit `\n` gefügten Zeilen liefen bisher
|
||||
zu einem Absatz zusammen.)
|
||||
|
||||
## D18 — Günstigsten Pfad per Inversion zeigen, fehlende Größe = M
|
||||
Der kostengünstigste Weg durch den Baum wird hervorgehoben (Umschalter im
|
||||
Diagramm-Kopf, Default an, Zustand persistiert). Nötig sind bei **all of** alle
|
||||
|
||||
+6
-1
@@ -403,7 +403,12 @@ damit genau dann zu sehen, wenn der Text vorn ist. Die übrigen
|
||||
umgeschaltet — jeder Bereich zeigt seine eigenen, in der unten beschriebenen
|
||||
komprimierten Form. Der sichtbare Bereich wird gemerkt; ein Sprung zwischen
|
||||
Diagramm und Text (§9) holt den nötigen Bereich selbst nach vorn.
|
||||
Voreinstellung ist das Diagramm. Die **Legende** bekommt hier einen eigenen
|
||||
Voreinstellung ist das Diagramm. Beide Inhalte werden hier zudem rund **25 %
|
||||
kleiner** dargestellt, damit mehr Plan auf die Fläche passt; das ist ein Faktor
|
||||
**auf** den Zoom, der Zoom-Regler arbeitet unverändert relativ dazu und zeigt
|
||||
den effektiven Wert (auf dem Telefon also 75 %). Der **Grafikexport** ist davon
|
||||
unberührt — er zeichnet immer die unskalierte Geometrie nach. Die **Legende**
|
||||
bekommt hier einen eigenen
|
||||
Umschalter im Editor-Kopf (statt der dauerhaften „AGENDA“-Zeile), damit sie
|
||||
zugeklappt keinen Platz kostet. Der **Modus-Wähler** zeigt nur das aktive Icon
|
||||
und schaltet bei jedem Tippen reihum weiter (horizontal → kompakt → vertikal →
|
||||
|
||||
Reference in New Issue
Block a user