chain-studio/HANDOVER-2026-08-27.md
flemming-it 906290f445 docs: handover — workspace-switcher rebuild package from persona review
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-08-27 23:38:16 +02:00

68 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HANDOVER 2026-08-27 — Switcher-Paket (Bereichs-/Projekt-UX)
Ziel der nächsten Session: das per Persona-Check (Noten 4/3/2)
definierte Umbaupaket am Stück bauen. Details + Belege:
Memory `workspace-switcher-persona-2026-08-27` lesen.
## Reihenfolge (HOCH zuerst)
1. **Umschalt-Race schließen** (Datenschützer, HOCH): In
`lib/data/workspace.dart` (`switchToSealed`, ~Z. 169204) zeigt
der Client nach `HubService.reconnect` (Z. 188) schon auf den
Mandanten-Hub, bevor `_activeSealed` gesetzt/notifiziert ist —
2-s-Poller (`runs.dart:218`, `audit.dart:94`) können sealed-Daten
UNMARKIERT rendern. Fix: expliziter `switching`-Zustand VOR dem
Reconnect (Identity-Bar optimistisch „Wechsle in Bereich …",
Poller pausieren), Freigabe erst nach `healthy()`.
Wächter-Test (state_matrix-Stil): „Client-Endpoint ≠ angezeigter
Kontext" darf nie vorkommen.
2. **Filter-Restaurierung** (Poweruser, HOCH): `workspace.dart:202`
löscht den Projekt-Slug beim Bereichseintritt ohne Prefs-Write;
`switchToShared` (Z. 210222) restauriert nur `_sharedEndpoint`.
Analog den Slug merken + restaurieren.
3. **Globaler Anker**: Switcher EINMAL in die Shell (Sidebar links
oben, `main.dart`), die 4 Einzel-Einbindungen raus
(`flows.dart:227`, `runs.dart:329`, `audit.dart:295`,
`approvals.dart:376`). Kontext damit auf allen Seiten sichtbar.
4. **Bestätigungsdialog** vor Auto-Start gestoppter Bereiche
(`workspace.dart:169179`): „Bereich X' starten und verbinden?"
— laufende Bereiche weiter 1 Klick.
5. **Tooltip-Lüge fixen**: `app_de.arb:1836` / `app_en.arb:1875`
„filtert diese Ansicht" → wirkt global (Flows, Läufe, Audit,
Freigaben + Stempel neuer Läufe).
6. **Aggregat erklären**: Warum-Zeile an der „N abgeschottete
Bereiche"-Zeile (`chain_workspace_switcher.dart:334390`) +
Link auf den Settings-Schalter. Aggregation BLEIBT (bewusste
Vertraulichkeitsentscheidung, vom Datenschützer bestätigt).
7. **Poweruser-Komfort**: Cmd+K-Palette kennt Projekte/Bereiche
(`chain_search_palette.dart`), Kürzel für den Switcher, Häkchen
am aktiven Eintrag, Zuletzt-benutzt; Läufe-Leerzustand bei
aktivem Filter ehrlich („Keine Läufe in Projekt X" statt
`runsEmptyHint`, `runs.dart:357369`).
8. **Beispiel-Chip** (offen vom 23.08.): Hub liefert
`FlowSummary.sample` (Wire-Feld 6, gepusht in fai_chain
`4cd5122`); ERST Dart-Proto-Regen im Client-SDK
(`fai_chain_client_sdk_dart`), DANN Flows-Liste: „Beispiel"-Chip
+ Beispiele eingeklappt + „Beispiele importieren"-Aktion im
leeren sealed-Zustand. Alte Hubs ohne Feld → false → keine Chips
(ehrlich). Skew-Gate (`scripts/skew-smoke.sh`) laufen lassen.
## Prüfpflichten
Studio-Regeln: Selbstverifikation per Screenshot (hell+dunkel),
l10n DE+EN, kopierbare Fehler, Inline-Hilfe für neue Flächen
(doc_help_wiring_test), Canon-Wächter. Hub-Seite ist KOMPLETT
(sealed seedet nicht mehr, Prune live auf den echten Bereichen
verifiziert, Backfill für alte Instanz-Configs in `chain project
start`).
## Fallen
- Kundenbereichs-Slugs nie in Commit-Messages — der
Security-Hook blockt (richtig so).
- `!`-Befehle des Nutzers haben 2-min-Timeout; lange Gates selbst
puschen.
- Scratchpad überlebt nicht: der hermetische OpenAI-Wire-Fake
(fake_vllm.py, chunked-Encoding-Handling!) ist weg — bei Bedarf
neu aus der Beschreibung in fai_chain-Commit `ad6c772` bzw. den
llm.rs-Unit-Tests ableiten.