UI-Entwurf umgesetzt, Rocket.Chat-Tool, Deploymentcenter 2.4

Sicherungspunkt vor dem Aufraeumen. Buendelt die Arbeit, die seit dem
Abschluss der Avalonia-Portierung im Arbeitsverzeichnis lag.

Oberflaeche
- Entwurf aus Mockup/ umgesetzt: Theme.axaml (Farben je Thema, Barlow als
  mitgelieferte Schrift), Icons.axaml (Symbolgeometrien), Shell.axaml
  (eigene ControlThemes statt Fluent umzufaerben).
- Neue Steuerelemente StrokeIcon und BlueprintFrame, Seiten fuer
  Token-Verbrauch und Agenten-Chats, Werkzeug-Einstellungen als Seite
  statt eigenem Fenster, Texteditor-Fenster.
- ThemeManager mit hellem und dunklem Thema; die beiden Pinsel-Konverter
  entfallen, weil ein fester Farbwert den Themenwechsel nicht ueberlebt.

Rocket.Chat
- Neues Tool-Projekt (Client, Konfiguration, Workspace-Dateien) nach der
  Bauform des Telegram-Tools: rocketchat_poll als Tool-Job, geweckt wird
  nur, wenn wirklich etwas anliegt.
- send_file ist freigabepflichtig, send_message bewusst nicht: Der Raum
  ist Arbeitsraum, der Schutz sitzt an der Raum-Allowlist.
- Konzept-Doc um die Messung gegen die echte Instanz 8.7 ergaenzt; drei
  Annahmen waren falsch und sind korrigiert.

Deploymentcenter
- DC6 (Update anwenden) und DC7 (Erstinstallation ueber setup.json)
  erledigt, DC3 fuer win-x64/dev; deploy/publish.py als Release-Strecke.
- AppHost.DisposeAsync gegen doppeltes Herunterfahren gesperrt - sonst
  ueberschreibt eine zweite Abmeldung den Wartungszustand am Watchdog.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-08-23 12:16:05 +02:00
co-authored by Claude Opus 5
parent b5bf97ae74
commit 33d95a6c3f
88 changed files with 11665 additions and 1029 deletions
@@ -10,15 +10,21 @@ public partial class InstancePickerWindow : Window
{
InitializeComponent();
// Doppelklick auf eine Zeile startet — wie in der WinForms-Fassung. Das laesst
// sich nicht sinnvoll als Befehl binden, weil DataGrid kein DoubleTapped je
// Zeile anbietet; deshalb hier und nicht im Ansichtsmodell.
AddHandler(DoubleTappedEvent, OnDoubleTapped, handledEventsToo: false);
// Doppelklick auf eine Zeile bestaetigt — wie in der WinForms-Fassung.
//
// Der Behandler haengt an der Liste und nicht mehr am Fenster: Am Fenster loeste
// auch ein Doppelklick ins Namensfeld die Auswahl aus, was seit dem Umbau
// deutlich leichter passiert, weil das Feld gross und mittig steht.
InstanceList.AddHandler(DoubleTappedEvent, OnRowDoubleTapped, handledEventsToo: false);
}
private void OnDoubleTapped(object? sender, TappedEventArgs e)
private void OnRowDoubleTapped(object? sender, TappedEventArgs e)
{
if (DataContext is InstancePickerViewModel vm && vm.StartCommand.CanExecute(null))
vm.StartCommand.Execute(null);
if (DataContext is not InstancePickerViewModel vm) return;
// Getroffen wird irgendein Element in der Zeile; der Datenkontext ist derselbe.
if ((e.Source as Control)?.DataContext is not InstanceChoiceViewModel choice) return;
vm.ActivateCommand.Execute(choice);
}
}