c43573859f
Nutzer-Wunsch: "wenn ich mit Tab in die Werte springe, soll die Maus dann nicht mehr steuern, bis man den ersten Wert eingegeben hat -- das kann man aber mit Esc lösen." Bisher folgte der Punkt/die Kante nach Tab weiter der Maus, solange noch kein Wert gelockt war -- ein Zittern der Hand beim Greifen zur Tastatur konnte die Position also noch verändern, bevor überhaupt getippt wurde. Neue gripFrozenPointRef/edgeFrozenPointRef (useGripEditing.ts): beim ÖFFNEN des Feld-Controllers (erstes Tab, noch kein vorheriges Feld offen) wird die AKTUELLE Position eingefroren; onGripMove/onEdgeMove halten den Punkt/die Kante bei aktivem Feld-Controller OHNE Lock exakt dort fest, unabhängig von der Mausposition. Der erste getippte Wert (submitGripEditValue/submitEdgeEditValue) löst das Einfrieren -- ab da gilt wieder die bisherige Locked/Live-Mischung (gelockte Felder fest, ungelockte folgen der Maus). Neue closeGripEditField/closeEdgeEditField-Funktionen lösen das Einfrieren explizit auf und schließen NUR den Feld-Prompt (Punkt/Kante bleibt bewaffnet, Maus steuert wieder normal) -- ersetzen in App.tsx die bisherigen direkten setGripEdit(null)/setEdgeEdit(null)-Aufrufe im CommandLine-onCancel (Escape MIT Fokus in der Befehlszeile). Das bestehende, GLOBALE Escape (ohne Fokus in einem Eingabefeld) bleibt unverändert: es verwirft den ganzen Griff-/Kanten-Drag komplett auf die Ursprungsposition (PlanView.tsx, voriger Commit) -- zwei bewusst verschiedene Eskalationsstufen. tsc/vitest 922/922 grün.