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
+19 -3
View File
@@ -10,7 +10,7 @@ using PolyTraderSharp.Services;
namespace PolyTrader.App.Avalonia.Shell
{
/// <summary>
/// Registriert die Fenster, die der Core selbst beisteuert (Dashboard, Einstellungen,
/// Registriert die Seiten, die der Core selbst beisteuert (Start, Dashboard, Einstellungen,
/// Terminal, Jobs). Gegenstück zur entsprechenden Registrierung im WinForms-Program.cs –
/// die View-IDs sind bewusst identisch, damit Symbole und Reihenfolge unverändert greifen.
/// </summary>
@@ -21,10 +21,25 @@ namespace PolyTrader.App.Avalonia.Shell
public static void Register(IModuleUiHost host, IServiceProvider services)
{
// Die Startseite ist seit der Einfenster-Shell eine View wie jede andere: sie steht in
// der Seitenleiste, wird über OpenView aufgerufen und beim Start als erste angezeigt.
// Sie heißt „Dashboard", weil sie genau das ist: Kennzahlen, Konten und Live-Überblick.
host.RegisterView(new ModuleView
{
Id = AvaloniaUiHost.StartViewId,
Title = "Dashboard",
Group = "Core",
Order = 0,
CreateView = () => new Views.LauncherWindow(host, services)
});
host.RegisterView(new ModuleView
{
Id = "core.dashboard",
Title = "Dashboard",
// Umbenannt: „Dashboard" heißt jetzt die Startseite; diese Auswertungsansicht
// (KPIs, Diagramme, Tradehistorie) läuft unter „Analytics". Die View-ID bleibt
// bewusst unverändert – daran hängen Symbole, Einstellungen und die Gruppierung.
Title = "Analytics",
Group = "Core",
Order = 10,
CreateView = () => new Views.DashboardWindow(
@@ -47,7 +62,8 @@ namespace PolyTrader.App.Avalonia.Shell
services.GetRequiredService<TradingState>(),
services.GetRequiredService<TerminalLogger>(),
services.GetService<WatchdogHeartbeatService>(),
services.GetService<MullvadVpnService>())
services.GetService<MullvadVpnService>(),
services.GetService<PolyTrader.Core.Configuration.DeploymentcenterOptions>())
});
host.RegisterView(new ModuleView