fix(vm): global eindeutige VNC-Displays (kein Doppel-Binding) + Gateway per-boot

- project_vms.add_vm: VNC-Display wird GLOBAL eindeutig vergeben (ueber alle
  Projekte). vnc_display<=0 oder belegtes Display → naechstes freies. Updates
  behalten ihr Display. Verhindert Port-Konflikt (5901) wenn mehrere VMs laufen.
  Getestet: vm1..3 → 1,2,3; Wunsch 2 (belegt) → 4; Update behaelt Display.
- vm_register-Tool + Seed-Regel: vnc_display weglassen, wird auto-vergeben.
- Gateway-IP: der Brain liest sie aus /proc/net/route bei JEDEM Boot frisch
  (Docker-IP-Aenderung nach Netz-Neuaufbau wird abgefangen); boot-Antwort
  enthaelt vnc_bind zur Transparenz.

py_compile clean. Brain-only, Deploy: brain rebuild.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 00:23:23 +02:00
co-authored by Claude Opus 4.8
parent d38d62ba21
commit 2832ab3dc9
4 changed files with 44 additions and 15 deletions
+4 -2
View File
@@ -435,8 +435,10 @@ SEED_RULES: List[dict] = [
" - `aria-vm list` / `aria-vm stop <name>` / `aria-vm rm <name>`.\n"
"\n"
"PFLICHT nach dem Bau/Boot: `vm_register(name, arch, disk?/floppy?/iso?, "
"vnc_display, mem)` im aktuellen Projekt aufrufen — mit den Medien, die Du "
"gebaut hast. ERST DANN erscheint die VM in Stefans Desktop-Panel (Cockpit), "
"mem?)` im aktuellen Projekt aufrufen — mit den Medien, die Du gebaut hast. "
"vnc_display WEGLASSEN — es wird global eindeutig auto-vergeben (kein "
"Port-Konflikt, wenn mehrere VMs laufen). ERST DANN erscheint die VM in "
"Stefans Desktop-Panel (Cockpit), "
"wo er sie Starten/Stoppen/Verbinden kann. Ohne vm_register bleibt seine "
"Liste leer, obwohl die VM laeuft. Der Startbefehl steht als Wert dahinter.\n"
"\n"