Repository navigation
fix(ui): Pane-Identität aus Host und Verzeichnis, Tabtitel aus aktivem Pane #461
Description
Problem / Vertrag
Identische Hostnamen unterscheiden mehrere Sessions nicht. Der korrigierte Entwurf verwendet kurze, tatsächliche Identitäten und übernimmt die vorhandene native Titelpriorität.
Abnahme
- Terminal-Pane zeigt kurz Host · Projekt-/Verzeichnisname, z. B.
host-a · api,host-a · logs; vollständiger Host/Pfad bleibt per Tooltip/zugänglichem Namen erreichbar. - Verzeichnis/Projekt aus dem echten Pane-/Sessionkontext ableiten. Nicht für jede Session denselben globalen Projektwert verwenden. Fehlender CWD bekommt einen ehrlichen Host-/Session-Fallback.
- Erst bei tatsächlich kollidierender Kurzidentität dezent disambiguieren, ohne Session-ID abzuschneiden, Identitäten umzuhängen oder rohe UUIDs zur Standardüberschrift zu machen. Numerierung allein ist keine primäre Identität.
- Automatischer Tabtitel folgt der fokussierten Pane gemäß vorhandener
display_title()-Regel. Explizit benannter Tab hat Vorrang; Entfernen des Overrides stellt Automatik wieder her. - Kein automatisch erfundener Projekt-/Gruppenname und kein Pane-Zähler als Titelersatz. Konto-Pane behält seinen nativen Cockpit-Titel, keine fiktive Hostzuordnung.
- Maus-/Tastaturfokus, CWD-/Hostwechsel, Split, Schließen und Restore aktualisieren die Anzeige korrekt. Jeder Tab behält seinen eigenen Fokus, auch bei gleicher Kontoansicht in zwei Tabs.
- Schmaler Header reserviert stabile Aktionsplätze; Identität bekommt Restbreite. Kein Hover-Reflow, keine Separator-Ketten, keine doppelte Titel-/Providerzeile.
- Keine zweite „Pane schließen“-Aktion hinter
⋯, wenn bereits ein X dieselbe Aktion anbietet. Echte andere bestehende Headeraktionen nicht entfernen.
Einstieg / Tests
app/src/tab.rs (Tabtitel), app/src/pane_group/mod.rs (title, display_title, Custom-Title), app/src/pane_group/pane/terminal_pane.rs, app/src/pane_group/pane/view/header/, app/src/cockpit/pane.rs.
Fälle: zwei unterschiedliche CWDs auf einem Host; gleiche Basenames in unterschiedlichen Pfaden; zwei identische Kurzidentitäten; echter Hostwechsel; fehlende Metadata; Konto in zwei Tabs; explizites Override und dessen Rücknahme. Neue Darstellung darf Terminal-Titelereignisse nicht falsch als neue Session identifizieren.
Abgrenzung: Darstellung/Titelableitung hier; Fokus- und Layout-Lifecycle in #462, Hostkontext in #460.
Ausführung und Grenzen
Implementierungsagent: GPT-5.6 Sol. Teil des übergeordneten UI-Implementierungsplans #459. Keine neue globale Navigation und kein Ersatz vorhandener Session-/Pane-Funktionen. Bestehende WarpUI-Komponenten, Theme-Rollen, Lokalisierung und Action-Routing verwenden. Mockup-Verhalten ist ein Produktvertrag, kein Nachweis nativer Funktionsfähigkeit.
Vor Codeänderungen aktuellen Main-Stand und zugehörige Specs prüfen; bereits korrektes Verhalten mit Tests absichern, nicht neu bauen. Produkt-/Tech-/HTML-Spezifikation im selben PR mitziehen. Worktree + Feature-Branch, keine fremden Änderungen überschreiben. Keine Builds auf dem MacBook, kein Release und keine teure Build-/CI-Phase allein aufgrund dieses Issues. Verifikation gemäß Repo-/Buildregeln einschließlich cargo check über den freigegebenen CI-Weg; native Laufzeit-/Screenshot-Nachweise nicht durch HTML-Tests ersetzen.
Activity
fix: Shell-Rückkehr, Pane-Zustand und SQLite-Start absichern [skip ci]
iret77 commentedon Sep 28, 2026
Statusabgleich vom 28.09.2026:
status: blocked.Pane-/Tabtitel-Korrekturen sind über #465/#466 in #477 enthalten. Offen ist die native Titel-/Fokus-/Breitenprüfung mit kollidierenden Kurzidentitäten, CWD-Wechsel, Custom-Tabtitel und Restore.
Aktueller technischer Blocker: Der gemeinsame Abnahme-PR #477 ist Draft und enthält laut PR-Beschreibung die Änderungen dieses Issues. Sein aktueller HEAD
5c9c445ba961671583c09981450a7fb79b9c9cfdhat im vollständigen Prüflauf 36354992553 den Statusfailure: Die Schritte „Rust workspace coverage tests“ und „Export coverage and execution evidence“ sind fehlgeschlagen; die separate Nicht-Rust-Suite ist erfolgreich. Eine grüne vollständige Baseline ist damit weiterhin nicht belegt.Der letzte PR-Prüflauf 36353993130 auf dem Vorgänger
710faa3e8scheiterte an Linux-Clippy und „Native subscription Agent layout evidence“ auf macOS. Spätere Quellkorrekturen sind dokumentiert, ein grüner Ersatz für diese Pflichtprüfungen ist beim Statusabgleich nicht vorhanden. Das bedeutet nicht, dass jedes einzelne Issue den gemeinsamen Fehler verursacht.Nächster Schritt: Die fehlgeschlagenen gemeinsamen Prüfungen korrigieren und auf dem aktuellen Stand erfolgreich nachweisen; anschließend die oben genannte individuelle Restabnahme abschließen. Solange technische Gates fehlen, ist dies weder
readynoch ausschließlichneeds-user. Dieser Eintrag aktualisiert den Status; er startet keinen Build und schließt das Issue nicht.fix: Pane- und Tabtitel folgen dem echten cd (#461)
iret77 commentedon Oct 1, 2026
Mit #477 auf
maingemergt (Merge-Commitc0af4484e). Wartet auf Christians Freigabe des ersten Batch-Laufs (release-approve "ci-batch.yml --ref main") und danach auf die native bzw. Laufzeit-Abnahme. Der Fix aus3bae12909ist nur statisch geprüft; der native Panes-Test muss ihn bestätigen.iret77 commentedon Oct 1, 2026
Nativ bestätigt: Im
ci-batch-Lauf 36851973446 isttest_native_workspace_panes_evidencegrün. Pane- und Tabtitel folgen einem echtencd. Offen bleibt nur die Abnahme durch Christian in der App.iret77 commentedon Oct 4, 2026
Enthalten im Test-DMG aus Lauf 37208729131 (
9ce5af67c), wartet auf Christians Abnahme.iret77 commentedon Oct 6, 2026
Codebefund
9ce5af67c: zwei offene LückenLesender Abgleich, kein Build und kein Test ausgeführt. Die Grundregel
Host · Verzeichnismit Tabtitel aus der fokussierten Pane ist umgesetzt und in der Laufzeit bestätigt. Offen sind:SFTP: /pfad(fm-title-sftp, gesetzt inapp/src/sftp_manager/browser.rs:1316). Das gilt auch für lokale Panes. In einem Mehrhost-Tab lassen sich zwei Dateimanager-Panes so nicht unterscheiden. Das Mockup behälthost · verzeichnis. Kein Test deckt das ab.app/src/workspace/view.rs:11028,5222). Ein manuellessshoderexitin der Shell bindet es nicht neu, Ergebnis wäre zum Beispiel „Lokal · “. AC6 fordert das. Nativ noch zu prüfen.fix(ui): Pane-Identität im Dateimanager-Modus und bei Hostwechsel
fix(ui): Home-Verzeichnis im lokalen Dateimanager wie im Terminal als ~
iret77 commentedon Oct 9, 2026
Erledigt: Dateimanager-Identität und Hostwechsel
Gemergt mit #536 (Merge-Commit
dd867dd0b, Commitse04256ddeundb0e82de74). Beide offenen Lücken aus dem Codebefund vom 06.10. waren aufmainnoch vorhanden und sind behoben.1. Dateimanager-Modus nennt den Host. Pane und Tab zeigen
Host · VerzeichnisstattSFTP: /pfad, lokal alsLokal · Verzeichnis, remote mit demselben Hostlabel wie die Terminal-Pane auf diesem Host. Die Ableitung läuft über die zentraleterminal_identity; deren Signatur ist unverändert. Die Pane-Gruppe löst Kollisionen jetzt auch für Dateimanager-Panes auf: Nur eine echte Kollision zeigt den vollen Pfad. Das lokale Home-Verzeichnis steht wie im Terminal als~.2. Hostwechsel in der Shell bindet das Host-Label neu. Das von Zaplex gebundene Label gilt nur, solange die aktive Shell nachweislich die eigene Shell der Pane ist. Die Prüfung ist dieselbe wie bei der Verzeichnisübergabe des Dateimanagers. Ein manuelles
sshmit Shell-Integration zeigt den Host, den die neue Shell beim Bootstrap meldet.exitzeigt wiederLokalbzw. das gebundene Label, auch bei gleichem Verzeichnis.Grenzen (in
specs/GH-160/PRODUCT.mdundTECH.mddokumentiert):sshohne Shell-Integration auf dem Ziel meldet weder Host noch Verzeichnis. Die Pane zeigt dann ehrlichRemote-Session · TerminalstattLokal · <alter Ordner>. Erkannt wird das über die vorhandene Zaplexify-Erkennung (sshsamt Alias,gcloud compute ssh,eb ssh,doctl compute ssh).moshund weitere Sprünge innerhalb einer solchen Sitzung bleiben unsichtbar.Nicht verifiziert: Compile, Clippy und Tests sind nicht gelaufen. Sie folgen im nächsten gebündelten ci-batch auf
main. Die neuen Testspane_identity_follows_the_shell_across_a_manual_ssh_hop_and_exit,bound_host_names_only_the_panes_own_shellundfile_manager_mode_keeps_the_host_and_directory_identitysind dafür inpr-check.ymleingetragen. Review: eigenes Review und Codex-Zweitreview. Ein Finding wurde behoben, eines am Code widerlegt (Details in #536).