feat: von Station zu Station des günstigsten Pfads (D47)
Mit dem status-bewussten Pfad (D46) zeigt das Diagramm die offene Front — im mitgelieferten Plan 24 Stationen, verteilt über einen Baum von über 20 000 px Breite. Sie zu sehen war damit gelöst, sie abzugehen nicht. Der neue Knopf im Diagramm-Kopf holt sie der Reihe nach in die Mitte: erster Druck die erste (was als Nächstes dran ist), jeder weitere die nächste, nach der letzten wieder die erste. Der Sprung fasst nur das Diagramm an — zentrieren, hervorheben, Tastaturfokus, also buchstäblich die Behandlung des ausdrücklichen Alt+Klicks (D25) samt Puls und hervorgehobenen Abhängigkeits-Kanten. In den Text führt von dort Alt+Enter, dieselbe Geste wie überall. Ohne eigenen Zustand: Fortgesetzt wird am gerade hervorgehobenen Knoten. Ein gemerkter Index wäre schlechter — der Baum wird bei jedem Tastendruck neu gebaut, die Stationsliste ändert sich unter ihm. Verborgen, solange es keine Station gibt (Pfad aus, oder alles erledigt); der Tooltip nennt die Anzahl. i18n `leanNextTooltip` in neun Sprachen. Die Mobil-Kopfzeile trug den neunten Knopf nicht mehr — D17-Nachtrag 5 hatte sie gerade erst auf acht zurechtgemessen. Nachgemessen: bei 375 px reicht es nach Lücke 8->6 px und Innenabstand 10->8 px weiterhin (345 px Inhalt, 359 px Platz, 14 px Luft); bei 320 px passen neun Fingerziele arithmetisch nicht, und unter 29 px zu gehen hat D17-Nachtrag 5 abgelehnt. Die Zeile schiebt dort deshalb (`overflow-x:auto`, Balken ausgeblendet) — 41 px Schiebeweg, Kopfhöhe unverändert 49 px, alle neun Elemente in voller Größe erreichbar. Dabei ein älterer, stiller Fehler gefunden: Bei Platzmangel schrumpfte der Modus-Wähler — das einzige Element ohne feste Größe — auf einen 2-px-Strich zusammen, während sein Icon 38 px breit darüber hinausragte; er sah aus wie ein Trennstrich und war unbenutzbar. `flex:0 0 auto` an allen Kindern der Zeile stellt das ab. 236 Tests grün. SPEC §9 und D47 halten es fest; der Plan bekommt den Knoten als `[x]` (noch nicht deployt), frontend/CLAUDE.md die Kopfzeilen-Stolperfalle. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c4a6ff57d4
commit
ecc1b632f6
@@ -2997,3 +2997,77 @@ um genau zwei Knoten (`[x] Zielgruppenanalyse`, `[x] Sitemap` verlieren
|
||||
Status-Hälfte ist damit gebaut. Offen bleibt die **Nutzen-Achse** (Ausbaustufen:
|
||||
ist eine Gruppe komplett realisiert, zur nächsten per Nutzen gewählten Stufe
|
||||
weiterspringen) — die braucht erst ein Nutzen-Attribut und den Aufwands-Rollup.
|
||||
|
||||
## D47 — Von Station zu Station: ein Knopf, der geht, statt zu schalten
|
||||
Mit dem status-bewussten Pfad (D46) zeigt das Diagramm die offene Front — im
|
||||
mitgelieferten Plan 24 Stationen, verteilt über einen Baum von über 20 000 px
|
||||
Breite. Sie **zu sehen** ist damit gelöst, sie **abzugehen** nicht: Man müsste
|
||||
jede von Hand suchen. Der Knopf im Diagramm-Kopf holt sie der Reihe nach in die
|
||||
Mitte.
|
||||
|
||||
**Der einzige Knopf im Diagramm-Kopf, der kein Umschalter ist.** „Verworfene
|
||||
einblenden" (D4), „günstigster Pfad" (D18) und die Falt-Voreinstellung (D44)
|
||||
beschreiben je einen Zustand; dieser löst eine **Bewegung** aus. Deshalb kein
|
||||
`aria-pressed` und keine gedrückte Optik — er sieht aus wie „kopieren" und
|
||||
„herunterladen", die ebenfalls etwas *tun*.
|
||||
|
||||
**Der Sprung fasst nur das Diagramm an** (Nutzer): zentrieren, hervorheben,
|
||||
Tastaturfokus — buchstäblich die Behandlung des ausdrücklichen Alt+Klicks
|
||||
(D25-Nachtrag 1), inklusive Puls und der Hervorhebung der
|
||||
Abhängigkeits-Kanten (D41). Erwogen war, zusätzlich die Schreibmarke auf die
|
||||
Zeile zu setzen; das kostete aber den Fokus im Baum (der nächste Druck müsste
|
||||
ihn zurückholen) und wäre auf dem Telefon bei jedem Sprung ein Bereichswechsel
|
||||
weg vom Diagramm. Der Weg in den Text steht direkt daneben offen: **Alt+Enter**
|
||||
am fokussierten Knoten, dieselbe Geste wie überall.
|
||||
|
||||
**Nach der letzten wieder die erste** (Nutzer). Ein Knopf, der am Ende
|
||||
aufhört, wirkt kaputt und bräuchte eine eigene Rückstell-Geste; dass man wieder
|
||||
oben ist, sieht man am Baum.
|
||||
|
||||
**Kein Zähler am Knopf** (Nutzer). Der „Was ist neu?"-Knopf trägt einen, hier
|
||||
wäre er ein zehntes Element in einer Zeile, die schon knapp ist — die Zahl der
|
||||
offenen Stationen steht stattdessen im **Tooltip** („… (24 offen)"), wo sie
|
||||
nichts kostet.
|
||||
|
||||
**Kein eigener Zustand: fortgesetzt wird am hervorgehobenen Knoten.** Ein
|
||||
gemerkter Index wäre die naheliegende Lösung und die schlechtere: Der Baum wird
|
||||
bei **jedem Tastendruck** neu gebaut, die Stationsliste ändert sich unter dem
|
||||
Index, und er zeigte danach auf etwas anderes. `currentNodeEl` (D25) überlebt
|
||||
den Neubau dagegen von selbst, weil es aus der Cursor-Zeile neu abgeleitet
|
||||
wird. Liegt der hervorgehobene Knoten nicht auf einer Station — etwa weil
|
||||
jemand zwischendurch im Text getippt hat —, beginnt der Gang wieder vorn. Das
|
||||
ist kein Notbehelf, sondern die richtige Antwort auf „zeig mir, was als
|
||||
Nächstes dran ist".
|
||||
|
||||
**Verborgen, solange es nichts anzuspringen gibt** — bei ausgeschaltetem Pfad
|
||||
(dann gibt es keine Stationen) ebenso wie bei einem durchweg erledigten Plan.
|
||||
Dieselbe Zurückhaltung wie beim „Was ist neu?"-Knopf (D28).
|
||||
|
||||
**Die Kopfzeile hat das nicht mehr getragen — und das war kein Fehler des
|
||||
Knopfes.** D17-Nachtrag 5 hatte die Zeile gerade erst auf acht Elemente
|
||||
zurechtgemessen und dabei `flex-wrap:nowrap` als Riegel gesetzt, damit aus
|
||||
einem stillen Umbruch ein sichtbarer Überlauf wird. Der neunte Knopf hat den
|
||||
Riegel prompt ausgelöst — nachgemessen aber anders als erwartet:
|
||||
|
||||
- Bei **375 px** passte es weiterhin, nachdem die Lücke von 8 auf 6 px und der
|
||||
Innenabstand von 10 auf 8 px ging: 345 px Inhalt, 359 px Platz, **14 px
|
||||
Luft**, eine Reihe.
|
||||
- Bei **320 px** ist es Arithmetik: 345 px Inhalt gegen 304 px Platz. Neun
|
||||
fingergroße Ziele passen dort nicht, und unter 29 px zu gehen hat
|
||||
D17-Nachtrag 5 ausdrücklich abgelehnt.
|
||||
|
||||
**Dabei ein älterer, stiller Fehler gefunden:** Bei Platzmangel schrumpfte
|
||||
nicht etwa irgendetwas gleichmäßig — der **Modus-Wähler** ist das einzige
|
||||
Element ohne feste Größe und wurde auf einen **2-px-Strich** zusammengedrückt,
|
||||
während sein Icon 38 px breit darüber hinausragte. Das Bedienelement war
|
||||
unbenutzbar und sah aus wie ein Trennstrich. `flex:0 0 auto` an allen Kindern
|
||||
der Zeile stellt das ab: Niemand wird mehr zerdrückt.
|
||||
|
||||
**Darum schiebt die Zeile jetzt, statt zu zerdrücken oder abzuschneiden:**
|
||||
`overflow-x:auto` auf dem Kopf (Scrollbalken ausgeblendet — auf Touch-Geräten
|
||||
sind sie ohnehin Overlay). Bei 375 px ändert die Regel nichts, weil nichts
|
||||
überläuft; bei 320 px bleiben alle neun Elemente in voller Größe erreichbar
|
||||
(nachgemessen: 41 px Schiebeweg, Kopfhöhe unverändert 49 px, Modus-Wähler
|
||||
wieder 40 px breit). Das ist die ehrliche Fortschreibung der D17-Regel: Der
|
||||
Riegel sollte einen unbemerkten Layout-Wechsel verhindern, nicht ein
|
||||
Bedienelement opfern.
|
||||
|
||||
@@ -529,6 +529,19 @@ Restarbeit ist dann seine); ist ein ganzer Zweig erledigt, hat er keine. Linie,
|
||||
abgetönte Kopie und Punkte erscheinen bei aktivem Umschalter auch im
|
||||
Grafikexport. Siehe D18, D46.
|
||||
|
||||
**Von Station zu Station.** Neben dem Umschalter steht ein **Knopf**, der die
|
||||
Stationen der Reihe nach anspringt: Der erste Druck holt die **erste** — das,
|
||||
was als Nächstes dran ist —, jeder weitere die nächste, nach der letzten wieder
|
||||
die erste. Gegangen wird die Dokument-Reihenfolge, also dieselbe, in der die
|
||||
Linie durch die Stationen fädelt. Der Knoten wird **zentriert, hervorgehoben
|
||||
und bekommt den Tastaturfokus** — dieselbe Behandlung wie beim ausdrücklichen
|
||||
Alt+Klick (§9, Sprung zwischen Diagramm und Text); von dort führt **Alt+Enter**
|
||||
in die zugehörige Textzeile. Fortgesetzt wird am gerade hervorgehobenen Knoten:
|
||||
Steht der auf einer Station, geht es bei der nächsten weiter, sonst wieder
|
||||
vorn. Der Knopf ist **verborgen**, solange es keine Station gibt — bei
|
||||
ausgeschaltetem Pfad ebenso wie bei einem durchweg erledigten Plan; sein
|
||||
Tooltip nennt die Zahl der offenen Stationen. Siehe D47.
|
||||
|
||||
### Diagramm aus einer URL laden (`?sourceUrl=`)
|
||||
Der Editor kann den Notationstext aus einer externen Textdatei beziehen:
|
||||
`…?sourceUrl=https://example.org/plan.txt` (relative Angaben werden gegen die
|
||||
|
||||
@@ -136,6 +136,13 @@ entscheiden, **bevor** Code entsteht.
|
||||
M-Badge. Angefangenes (`[~]`/`[/]`) zählt weiter voll, maßgeblich ist der
|
||||
intrinsische Status. Kein neuer Umschalter — der vorhandene ändert seine
|
||||
Bedeutung. `tests/frontier.test.js`.
|
||||
- [x] Von Station zu Station springen (Knopf im Diagramm-Kopf).
|
||||
→ Umgesetzt (D47): `jumpToLeanStation()` holt die nächste offene Station
|
||||
in die Mitte (Behandlung wie Alt+Klick, D25), nach der letzten wieder die
|
||||
erste; ohne eigenen Zustand — fortgesetzt wird am hervorgehobenen Knoten.
|
||||
Verborgen, solange es keine Station gibt; i18n `leanNextTooltip` in neun
|
||||
Sprachen. Die Mobil-Kopfzeile musste dafür enger und darf unter 360 px
|
||||
schieben.
|
||||
- [ ] Nutzen je Knoten (Gegenstück zur Kosten-Größe) — Schreibweise offen,
|
||||
SPEC-first (siehe ROADMAP „Kleinere Ideen").
|
||||
- [ ] Aufwands-Rollup (Größen der Kinder aggregieren) — braucht erst eine
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
- [^] Cost model, missing size counts as M (S)
|
||||
- [x] Only the open front: what is done costs nothing (S) %% see D46
|
||||
- [^] Metro-map line through the leaves (S)
|
||||
- [x] Step from station to station, one button (S) %% see D47
|
||||
- [^] #closure: Count the whole dependency closure (M)
|
||||
- [^] Shared dependencies counted only once (S)
|
||||
- [^] The cheapest alternative is no longer the local one (M) %% see D34, D42
|
||||
|
||||
Reference in New Issue
Block a user