Repository navigation
fix(connections): Zaplex-Sessions mit Tab-Namen und Offen-Status statt Hex-IDs anzeigen #509
Description
Problem — P1
Unter Verbindungen → Host → Zaplex-Sessions steht jede Session nur als <host> · Session · <8 Hex-Zeichen>. Der Nutzer kann nicht erkennen,
- welche dieser Sessions gerade in einem Zaplex-Tab offen ist, und
- welche Session zu welchem Tab gehört. Der Tab heißt zum Beispiel
<host> · <projekt>, die Liste zeigt aber nur die ID.
Owner-Feedback: „Wieso sehe ich hier nicht, welche Sessions ich gerade in zaplex offen habe? Wieso sehe ich dort nicht den Namen, der mir im Session-Tab angezeigt wird? Das ist völlig unbrauchbar, wenn da einfach nur Hex-IDs stehen.“
Beobachtet mit Client 9ce5af67c: Bei 2 offenen Tabs zeigte die Liste 8 gleich aussehende Zeilen. Davon waren 6 verwaiste Sessions eines älteren Daemons, siehe #510. In allen 8 lief claude.
Beleg
Die Ursachenkette:
- Für normale Tabs sendet der Client beim Öffnen kein Verzeichnis:
cwdwird nur für verwaltete Starts gesetzt (app/src/workspace/view.rs:1703). - Der Daemon setzt
session.cwdnur beim Start der Shell (app/src/remote_server/server_model.rs:6044,6169) und aktualisiert es nie. Es gibt im Code keine Abfrage von aktuellem Verzeichnis oder Vordergrundprozess einer PTY. - Der Titel ist sowohl beim Daemon (
server_model.rs:6787-6809) als auch beim Client (app/src/remote_server/headless_connect.rs:201-215) leer. daemon_session_identityfällt deshalb aufworkspace-left-panel-ssh-manager-session-fallback= „Session · { $id }“ zurück (app/src/ssh_manager/panel.rs:236-252). Die Zeile bekommt keine Metadaten (panel.rs:3107,None).- Ein Provider-Titel wie „Claude · …“ entsteht erst durch
BindAgentPtyvon einem verbundenen Client-Pane. Getrennte Sessions bekommen ihn nie. - Dabei kennt der Client die Zuordnung für seine eigenen Tabs bereits.
daemon_pty_claimliefert für eine Daemon-PTY das besitzende Pane, und ein Klick fokussiert dieses vorhandene Pane (app/src/workspace/view.rs:13405-13431). Die Liste nutzt diese Information nicht für Titel und Status.
Die Spezifikation verlangt Host · Projekt-oder-Verzeichnis und den neutralen Fallback nur bei fehlenden Metadaten (specs/GH-160/PRODUCT.md:223-225). Der Fallback selbst ist also spezifikationskonform. Der Fehler ist, dass die Metadaten fehlen und vorhandenes Client-Wissen nicht genutzt wird.
Erwartung / Abnahme
- In diesem Fenster offene Sessions zeigen genau die Pane-/Tab-Identität (fix(ui): Pane-Identität aus Host und Verzeichnis, Tabtitel aus aktivem Pane #461) und sind als „hier offen“ erkennbar, ohne Statusprosa und ohne Layoutsprung, zum Beispiel über das vorhandene Zeilen-Glyph. Ein Klick fokussiert den Tab (unverändert).
- Nicht hier offene Sessions (getrennt, verwaist oder in einem anderen Fenster oder auf einem anderen Gerät offen) zeigen ein vom Daemon geliefertes aktuelles Verzeichnis bzw. Projekt und den Vordergrundbefehl, zum Beispiel
<host> · <projekt> · claude. Unter Linux kommt das aus/proc/<pid>/cwdund dem Vordergrundprozess der PTY. Dafür gibt es ein neues Proto-Feld hinter einem Capability-Flag. Alte Daemons fallen ehrlich auf den Fallback zurück. - Getrennte Sessions zeigen in einem stabilen, festen Metadaten-Slot, seit wann sie getrennt sind und wann sie ablaufen (fix(remote-server): Detached-GC zählt ab letztem Attach – lange offene Sessions sterben kurz nach Verbindungsabbruch #508, fix(remote): Nach App-Update werden Sessions des älteren Daemons nicht wieder angehängt #510).
- Sortierung: hier offene Sessions zuerst, danach getrennte nach letzter Aktivität.
- Die Hex-ID erscheint nur noch, wenn weder Client noch Daemon eine Identität liefern können, und auch dann nur in Tooltip oder Details.
- Layout-Regeln aus fix(ui): Sessionliste unter Verbindungen lesbar und responsiv darstellen #455 (Ellipse, feste Aktions-Slots) bleiben erfüllt.
- Nativer Nachweis: zwei offene Tabs und zwei getrennte Sessions auf einem Host sind in der Liste eindeutig unterscheidbar und den Tabs zuordenbar.
Regressionstests
connections_row_uses_pane_identity_for_locally_open_sessionconnections_row_marks_locally_open_sessiondetached_session_row_uses_daemon_live_cwd_and_foreground_commandold_daemon_without_live_metadata_falls_back_honestly
Bezug: #455 (Zeilenlayout), #461 (Pane-Identität), #160, #508 (Ablauf getrennter Sessions), #510 (verwaiste Sessions nach Daemon-Update). Zeilenangaben beziehen sich auf 9ce5af67c. Kein Build und kein Test ausgeführt.
Activity
fix(remote-server): Befehlsnamen ohne Argumentinhalte, Pipelines und …
Merge pull request #540 from byte5ai/fix/509-daemon-live-metadaten
iret77 commentedon Oct 9, 2026
Behoben und in
maingemergt, in zwei Teilen:000dff3e0): Sessions, die in diesem Fenster offen sind, zeigen den Pane-Titel und eine „offen“-Marke. Die Hex-ID steht nur noch im Tooltip.4e3ab3cf5): Sessions, die getrennt, verwaist oder woanders offen sind, zeigen „Host · Verzeichnis“ aus dem aktuellen Verzeichnis, das der Daemon live aus/procliest. Darunter steht der Vordergrundbefehl, nur der Programmname, nie Argumente. Das ist additiv im Protokoll und hinter der Capabilitysession-live-metadata-v1(Linux-Daemons). Ältere Daemons fallen ehrlich auf das Startverzeichnis zurück.Noch nicht verifiziert:
ci-batchaufmain.Nach dem geänderten Vorgehen gilt: gemergt heißt geschlossen. Tritt das Problem weiter auf, bitte das Issue wieder öffnen.