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:
@@ -19,7 +19,7 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
/// die Diagramme jetzt aus <see cref="DashboardChartsModel"/> (LiveCharts2).
|
||||
/// Layout vollständig in DashboardWindow.axaml.
|
||||
/// </summary>
|
||||
public partial class DashboardWindow : Window
|
||||
public partial class DashboardWindow : UserControl
|
||||
{
|
||||
private readonly DashboardChartsModel _charts = new();
|
||||
private readonly ObservableCollection<DashboardTradeRow> _history = new();
|
||||
@@ -43,8 +43,6 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
public DashboardWindow(IModuleUiHost host, ITradeLogRepository tradeLog, TradingState state,
|
||||
IReadOnlyList<ModuleActivationInfo>? moduleInfos = null, string? settingsPath = null) : this()
|
||||
{
|
||||
this.FindControl<Controls.WindowMenuBar>("menuBar")!.Attach(host, "core.dashboard", this);
|
||||
|
||||
_tradeLog = tradeLog;
|
||||
_state = state;
|
||||
_moduleInfos = moduleInfos;
|
||||
@@ -75,9 +73,10 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
InitModulesTab();
|
||||
|
||||
// Die KPI-Farbe wird im Code gesetzt und wechselt daher nicht von selbst mit dem Thema.
|
||||
void OnTheme() => ApplyScope();
|
||||
Shell.ThemeManager.ThemeChanged += OnTheme;
|
||||
Closed += (_, _) => Shell.ThemeManager.ThemeChanged -= OnTheme;
|
||||
// Kein Abmelden mehr: Seiten werden in der Einfenster-Shell einmal erzeugt und leben
|
||||
// bis zum Programmende (siehe AvaloniaUiHost) – ein Gegenstück zu Window.Closed gibt es
|
||||
// hier nicht, und Unloaded würde bei jedem Seitenwechsel feuern.
|
||||
Shell.ThemeManager.ThemeChanged += ApplyScope;
|
||||
}
|
||||
|
||||
// ===== Daten laden / Scope =====
|
||||
|
||||
Reference in New Issue
Block a user