Arbeitsstand gesichert: Deploymentcenter-Integration (D-0 bis D-5) und Einfenster-Shell

Sicherungscommit vor dem Aufraeumen des Repos, damit nachvollziehbar bleibt,
welcher Stand vor der Bereinigung galt. Build gruen, 476 Tests gruen.

Zwei Straenge, die sich ueber .csproj, Program.cs und appsettings.json
ueberschneiden und darum gemeinsam abgelegt werden:

Deploymentcenter-Integration (P3c, Plan D-0 bis D-5 code-seitig fertig):
- Deploymentcenter.Client 2.5.0 als lokales Paket, Source-Mapping erweitert
- DeploymentcenterOptions, DeploymentcenterErrorReporter, LicenseGate/LicenseCli
- WatchdogHeartbeatService auf die Deploymentcenter-API umgestellt
  (version, os, checks, metrics, status stopped)
- Security: MasterKeyResolver, SecretRedactor, FilePermissions
- Directory.Build.props mit zentraler Version 0.1.0 (Packager-Versionsdisziplin)
- deploy/: Packager-Vorlage und systemd-Unit; echte Zugangsdaten bleiben
  ueber .gitignore aussen vor
- setup.json fuer die Erstinstallation
- UMSETZUNGSPLAN-Deploymentcenter-Integration.md; ANALYSE-Linux-Portierung.md
  verweist auf den neuen Plan

Einfenster-Shell (UI-Redesign):
- ShellWindow + ShellNavModel als Seitenleisten-Shell
- WindowMenuBar und WindowMenuModel entfallen
- Modul- und Kernfenster auf die Shell-Einbettung angepasst

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-08-22 10:42:22 +02:00
co-authored by Claude Opus 5
parent ac5e16f0a6
commit dd8da3fd3f
58 changed files with 3932 additions and 650 deletions
@@ -1,21 +1,19 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:PolyTrader.App.Avalonia.Controls"
xmlns:shell="using:PolyTrader.App.Avalonia.Shell"
xmlns:vm="using:PolyTrader.App.Avalonia.ViewModels"
x:Class="PolyTrader.App.Avalonia.Views.LauncherWindow"
Title="PolyTrader"
Width="1600" Height="900"
WindowState="Maximized">
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="using:PolyTrader.App.Avalonia.Shell"
xmlns:vm="using:PolyTrader.App.Avalonia.ViewModels"
x:Class="PolyTrader.App.Avalonia.Views.LauncherWindow">
<!--
Startleiste" der Anwendung. Entspricht der bisherigen LauncherForm:
oben die gemeinsame Fenster-Menüleiste, darunter die Schnellaktionen (Trading-Modi),
dann die Fenster-Buttons, Account-Übersicht, Modul-KPIs und Live-Überblick-Widgets, unten die Statusleiste.
Startseite der Anwendung. Entspricht der bisherigen LauncherForm, ist seit der Umstellung
auf die Einfenster-Shell aber eine Seite unter vielen: oben die Schnellaktionen
(Trading-Modi), dann die Kacheln zu den übrigen Ansichten, Account-Übersicht, Modul-KPIs
und die Live-Überblick-Widgets.
Die frühere Statusleiste (Trading / Module / API) steht jetzt einmal zentral in
Views/ShellWindow.axaml und nicht mehr auf dieser Seite.
-->
<DockPanel>
<controls:WindowMenuBar Name="menuBar" DockPanel.Dock="Top" />
<Border Classes="toolbar" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal" Spacing="4">
<Button Name="btnLiveTrading" Content="LiveTrading (—)" MinWidth="170" />
@@ -23,17 +21,25 @@
</StackPanel>
</Border>
<Border Classes="statusbar" DockPanel.Dock="Bottom">
<StackPanel Orientation="Horizontal" Spacing="24">
<TextBlock Name="lblTrading" Text="Trading: —" />
<TextBlock Name="lblModules" Text="Module: —" />
<TextBlock Name="lblRatelimit" Text="API: —" />
</StackPanel>
<!--
D-4: Update-Hinweis. Verborgen, solange keine Prüfung lief oder keine neue Version
vorliegt - erscheint nur, wenn Deploymentcenter:UpdateCheckEnabled gesetzt ist UND
tatsächlich ein Update gefunden wurde. Installiert NIE automatisch (Leitentscheidung 4).
-->
<Border Name="pnlUpdateBanner" DockPanel.Dock="Top" IsVisible="False"
Background="{DynamicResource AppWarningBrush}" Padding="10,6">
<DockPanel>
<StackPanel Orientation="Horizontal" Spacing="10" DockPanel.Dock="Right">
<Button Name="btnInstallUpdate" Content="Jetzt installieren …" />
<Button Name="btnDismissUpdate" Content="Später" />
</StackPanel>
<TextBlock Name="lblUpdateInfo" Text="—" VerticalAlignment="Center" TextWrapping="Wrap" />
</DockPanel>
</Border>
<ScrollViewer>
<StackPanel Margin="12" Spacing="16">
<TextBlock Text="Fenster" FontSize="14" FontWeight="SemiBold" />
<StackPanel Margin="0,14,0,0" Spacing="16">
<TextBlock Text="ANSICHTEN" Classes="kicker" />
<ItemsControl Name="windowButtons">
<ItemsControl.ItemsPanel>
@@ -42,7 +48,7 @@
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="shell:WindowMenuEntry">
<DataTemplate x:DataType="shell:ViewTile">
<Button Command="{Binding Command}"
MinWidth="190" MinHeight="56"
Margin="0,0,8,8"
@@ -156,4 +162,4 @@
</ScrollViewer>
</DockPanel>
</Window>
</UserControl>