Skip to content

feat(sidebar): KI-Sessions/KI-Konten trennen und Session-Baum nach B+ (#504, #505) - #529

Merged
iret77 merged 9 commits into
mainfrom
feat/sidebar-sessions-accounts
Oct 8, 2026
Merged

iret77 merged 9 commits into
mainfrom
feat/sidebar-sessions-accounts

Conversation

@iret77

@iret77 iret77 commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Inhalt

Setzt die beiden Owner-Entscheidungen zur Sidebar um, die bisher nie als Issue erfasst waren.

#504 – KI-Sessions und KI-Konten als eigene Sidebar-Ansichten

  • Neue Ansicht CockpitAccountsPanel (app/src/cockpit/accounts_panel.rs). Die Kontokarten, der Flottenwert-Button, der Rescan und die Kontoauswahl sind unverändert aus panel.rs verschoben.
  • Neuer Toolbelt-Eintrag „KI-Konten“ (ToolPanelView/LeftPanelAction/LeftPanelDisplayedTab::CockpitAccounts) direkt neben „KI-Sessions“, vor „Verbindungen“.
  • Beide Ansichten haben die volle Sidebarhöhe und einen eigenen Scrollbereich. Die 3/5-Höhenbegrenzung aus d2183ba1b entfällt.
  • Ist eine andere Ansicht aktiv und wartet ein Agent, trägt der Sessions-Eintrag eine statische amberne Marke. Der Tooltip nennt dann die Anzahl („KI-Sessions: 2 Agents warten auf Dich“), damit die Marke nicht nur über Farbe funktioniert.
  • Ein gespeichertes Cockpit stellt weiterhin den Baum her. Die w-Sprungtaste gilt auch in der Kontenansicht.

#505 – Session-Baum nach Darstellungsregel B+

  • Die reine Projektion project_tree_rows erzeugt die Zeilen; das Datenmodell Host → Projekt → PTY-Session → Agent bleibt.
  • Ein Projekt mit genau einer PTY-Session ist eine Zeile. Der Projektname führt und behält Vorrang; der eigene Titel der Session, etwa der Branch, folgt gedimmt mit Abstand und weicht zuerst (Entscheidung vom 08.10.).
  • Bei mehreren Sessions ist eine PTY-Session mit einem Agenten eine Zeile: Titel, darunter Provider-Icon, Provider und Modell. Ohne eigenen Titel ist der Agent die einzeilige Überschrift. Nur Mehr-Agenten-PTYs behalten Agentzeilen.
  • Titel bestehen aus Teilen (TreeLabel):
    • Ein Präfix, den ein Titel mit einem Geschwister teilt, wird gedimmt und gekürzt; mindestens acht unterscheidende Zeichen bleiben fest sichtbar. Identische Titel werden nie gekürzt.
    • Lange Titel behalten ihr kurzes letztes Segment und kürzen in der Mitte (feat/checkout-re…-step-2).
    • Jeder Titel, auch der Hosttitel, zeigt den vollen Wortlaut im Tooltip.
    • Der Sessiontitel wiederholt nie den Projektnamen; ein leeres Arbeitsverzeichnis ergibt keinen Titel.
  • Keine Trennzeichen: Titelteile, Provider und Modell trennen Abstand und Tonwert, keine Mittelpunkte.
  • Feste Chevron- und Symbolspalten. Titel ruhender Sessions sind gedämpft. Die Session der fokussierten Pane trägt eine stabile Akzent-Hinterlegung; verbirgt eine zugeklappte Gruppe (Host, Projekt oder Session) sie, trägt die Gruppenzeile sie. Eine zusammengelegte Zeile übernimmt den Tonwert ihrer Session. Gruppen trennen Abstände.
  • Sichtbare Entfernung: Baumzeilen öffnen beim Hover keine Aufgabenvorschau mehr (#spec A4, fix(cockpit): Session-Baum übersichtlich machen – weniger Ebenen, keine doppelten Labels #505 Regel 9). Die Vorschau bleibt in der Session-Tabelle der Konto-Pane.
  • Mehr-Agenten-Sessions tragen kein Sammelsymbol (TECH §2, „one fact, one mark“).

Spezifikation

  • PRODUCT §4/§42 und Nicht-Ziele, TECH §2/§5, cockpit-sidebar-connections.html (#spec C3, neu #spec T5–T7) und docs/ui/README.md sind nachgezogen.
  • Neue anonymisierte Referenz docs/ui/cockpit-sessions-tree.html mit den Regeln #spec V1–V3 und B1–B9 und zwei Referenzansichten.
  • Der 155-KB-Export premium-workspace.html ist bewusst nicht geändert. Die README erklärt den Vorrang der neuen Referenz (Kommentar in feat(sidebar): KI-Sessions und KI-Konten als eigene Sidebar-Ansichten trennen #504).

Prüfung

Prüfung Ergebnis
rustfmt --check (geänderte Dateien) sauber; ein bestehender Diff in workspace/view.rs:8713 stammt von main
git diff --check, check-persistent-hover-state, check-no-new-cjk ok
cockpit-parity-audit validate / self-test ok
check-v1-release-readiness --phase-a ok (nach #528)
check-compact-row-actions nicht lokal gelaufen (rg fehlt); die geschützten Bereiche sind unverändert, die Regex-Prüfungen wurden von Hand nachvollzogen
spec-check (Codex) 7 Läufe; alle Befunde behoben, zuletzt in 4adea5fe2 und 6ed741536 (Fokus auf zugeklappter Hostzeile, Host-Tooltip, leeres Arbeitsverzeichnis)
Unabhängiges Review (Compile/Clippy/Tests, nur lesend) keine Kompilier-, Clippy- oder Testfehler; Verhaltenspunkte umgesetzt
Compile, Clippy, Tests nicht gelaufen, keine lokalen Builds. Steht im nächsten ci-batch aus
Native Abnahme offen: beide Ansichten bei normaler und minimaler Breite, hell/dunkel, Wartemarke, Fokus-Hinterlegung, lange Titel

Tests der Projektion: single_untitled_session_merges_into_project_row, single_titled_session_merges_with_dimmed_title, single_multi_agent_session_merges_into_project_row, tree_never_repeats_parent_label_in_child_row, multiple_agents_in_one_pty_render_child_rows, single_agent_sessions_are_leaves_without_agent_rows, similar_session_names_show_distinguishing_suffix, prefix_dimming_ignores_unrelated_siblings, identical_titles_are_never_shortened, shared_prefix_keeps_at_least_eight_distinguishing_characters_fixed, long_titles_shorten_in_the_middle_and_keep_their_end, directory_title_never_repeats_the_project_name, session_name_repeating_the_project_falls_back_to_its_branch, empty_working_directory_never_becomes_a_title, merged_multi_agent_row_takes_the_session_tone, idle_session_title_uses_muted_role, focused_session_row_has_stable_highlight. Toolbelt: toolbelt_has_separate_sessions_and_accounts_views, waiting_signal_visible_on_sessions_entry_while_accounts_active, accounts_view_is_a_primary_view_without_back_target. Die Fleet-Total-Tests sind nach accounts_panel_tests.rs umgezogen; alle von der Parity-Matrix gepinnten Tests bleiben in panel_tests.rs.

Bewusste Ausnahmen

  • Ältere App-Versionen können LeftPanelDisplayedTab::CockpitAccounts nicht lesen. Nach einem Downgrade fällt nur der gespeicherte Sidebar-Zustand weg (sqlite.rs, .ok()).
  • Kein VERSION-Bump und kein Changelog-Eintrag. Das Repo setzt beides beim Release über script/set-version. Der Daemon wird nach VERSION getaggt; ein Bump würde auf allen Hosts einen neuen Daemon erzwingen, solange fix(remote): Nach App-Update werden Sessions des älteren Daemons nicht wieder angehängt #510 offen ist.

Refs #504, #505. Die Issues bleiben bis zur nativen Abnahme offen.

iret77 added 3 commits October 6, 2026 13:04
Die Kontokarten wandern aus dem Cockpit in eine eigene Toolbelt-Ansicht
„KI-Konten“ (CockpitAccountsPanel). Der Session-Baum „KI-Sessions“ und die
Konten haben jeweils die volle Sidebarhöhe und einen eigenen Scrollbereich;
eine lange Sessionliste verdrängt die Kontenübersicht nicht mehr.

- Neuer ToolPanelView/LeftPanelAction/LeftPanelDisplayedTab-Eintrag
  CockpitAccounts; ein gespeichertes „Cockpit“ stellt weiter den Baum her.
- Ist eine andere Ansicht aktiv und wartet ein Agent, trägt der
  Sessions-Eintrag eine statische amberne Marke.
- Die w-Sprungtaste gilt auch in der Kontenansicht.
- Die 3/5-Höhenbegrenzung entfällt; PRODUCT, TECH, HTML-Spec und README
  beschreiben die neue Aufteilung.

Refs #504
…chen

Der Baum zeigt dasselbe Modell (Host → Projekt → PTY-Session → Agent) ohne
leere Ebenen und doppelte Labels:

- Ein Projekt mit genau einer unbenannten Session ist eine Zeile mit ihrem
  Agenten.
- Eine PTY-Session mit einem Agenten ist eine Zeile: Titel, darunter
  Provider-Icon, Provider und Modell. Nur Mehr-Agenten-PTYs behalten
  Agentzeilen.
- Ein langer gemeinsamer Präfix gleichrangiger Titel wird gekürzt und
  gedimmt; der unterscheidende Rest bleibt sichtbar, der volle Titel steht
  im Tooltip.
- Feste Chevron- und Symbolspalten, gedämpfte Titel für ruhende Sessions,
  stabile Akzent-Hinterlegung für die Session der fokussierten Pane und
  Abstände statt Linien.
- Baumzeilen öffnen beim Hover keine Aufgabenvorschau mehr (#spec A4); die
  Vorschau bleibt in der Konto-Pane.

Die Regel steckt in der reinen Projektion project_tree_rows und ist ohne
Rendering getestet. PRODUCT, TECH, HTML-Spec und die neue Referenz
docs/ui/cockpit-sessions-tree.html beschreiben sie.

Refs #505
Befunde aus spec-check und unabhängigem Review:

- Ein Titel kürzt den Präfix, den er mit mindestens einem gleichrangigen
  Titel teilt (shared_prefix_cuts). Ein andersnamiger Nachbar wie „main“
  verhindert die Kürzung einer Gruppe ähnlicher Namen nicht mehr.
- PRODUCT/HTML-Spec nennen ausdrücklich, dass ein Sessiontitel, der nur den
  Projektnamen wiederholt, als unbenannt gilt (#505 Regel 2).
- Eine zugeklappte Projekt- oder Mehr-Agenten-Zeile, die die Session der
  fokussierten Pane verbirgt, trägt selbst die Akzent-Hinterlegung.
- Zusammengelegte Projektzeilen erhalten denselben Gruppenabstand.
- Baum und Toolbelt rendern nur neu, wenn sich das fokussierte Terminal
  dieses Fensters bzw. der Wartezustand der Flotte tatsächlich ändert.

Refs #505
iret77 added 6 commits October 8, 2026 12:58
…, keine Trennpunkte

Owner-Entscheidung zu #505:

- Ein Projekt mit genau einer PTY-Session ist immer eine Zeile. Der
  Projektname führt und behält Vorrang, der eigene Titel der Session
  (z. B. der Branch) folgt gedimmt mit Abstand und weicht zuerst.
- Lange Titel behalten ihr kurzes letztes Segment und kürzen in der Mitte
  (feat/checkout-re…-step-2) statt am Ende. Ist der sichtbare Titel
  kürzer, steht der volle im Tooltip.
- Titelteile, Provider und Modell trennen Abstand und Tonwert, keine
  Mittelpunkte mehr.
- Der Sessions-Eintrag im Toolbelt nennt bei der Wartemarke die Anzahl
  wartender Agenten im Tooltip (nicht nur Farbe).
- Eine Session ohne eigenen Titel in einem Projekt mit mehreren Sessions
  zeigt ihren Agenten einzeilig als Überschrift; PRODUCT und HTML-Spec
  sagen das jetzt ausdrücklich.

Refs #505
…itel

Befunde aus spec-check (Lauf 3):

- Ein Verzeichnis als Sessiontitel ist nur noch der Verzeichnisname. Bisher
  entstand „projekt — verzeichnis“ und in zusammengelegten Zeilen sogar
  „projekt projekt — verzeichnis“.
- Jeder Baumtitel trägt seinen vollen Text als Tooltip, Projektzeilen
  eingeschlossen; auch kurze Titel können in schmaler Sidebar abgeschnitten
  werden.
- TECH hält fest, dass verwaltete Agents (#168) im Baum weiter die kompakte
  ◆-Marke tragen; Details stehen in der Konto-Pane.

Refs #505
…erspringen

Befunde aus spec-check (Lauf 5):

- Endet ein Titel innerhalb des gemeinsamen Teils (auch bei identischen
  Titeln), bleibt nichts Unterscheidendes übrig; dann wird nicht gekürzt.
- Als Sessiontitel zählt die erste Quelle (Name, Branch, Worktree), die
  nicht nur den Projektnamen wiederholt. Eine Session, die wie das Projekt
  heißt, zeigt so ihren Branch.

Refs #505
…kürzung

Befunde aus spec-check (Lauf 6):

- Eine zusammengelegte Projektzeile mit mehreren Agenten übernimmt den
  Titel-Tonwert ihrer Session (laufend/wartend hell, ruhend gedämpft).
- Bei einem gekürzten gemeinsamen Präfix bleiben vom unterscheidenden Rest
  immer mindestens acht Zeichen fest stehen; nur dessen Mitte schrumpft.
- PRODUCT/TECH/HTML präzisieren: Die Zeile des Agenten der fokussierten
  Pane trägt die Hinterlegung, eine zugeklappte Zeile, die ihn verbirgt,
  an seiner Stelle.

Refs #505
…Titel

- Eine zugeklappte Hostgruppe, die den Agenten der fokussierten Pane
  verbirgt, trägt jetzt die Akzent-Hinterlegung (wie Projekt- und
  Session-Gruppen).
- Der Hosttitel zeigt den vollen Namen im Tooltip, auch wenn er
  gekürzt wird.
- Ein leeres oder nur aus Leerzeichen bestehendes Arbeitsverzeichnis
  ergibt keinen Sessiontitel mehr.

Refs #505
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant