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:
@@ -20,7 +20,7 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
/// Terminal-/Log-Ansicht. Live-Ausgabe des <see cref="TerminalLogger"/> plus Viewer für die
|
||||
/// JSONL-Tagesdateien. Layout vollständig in TerminalWindow.axaml.
|
||||
/// </summary>
|
||||
public partial class TerminalWindow : Window
|
||||
public partial class TerminalWindow : UserControl
|
||||
{
|
||||
/// <summary>
|
||||
/// Obergrenze der angezeigten Zeilen. Die WinForms-Fassung leerte bei Erreichen einer
|
||||
@@ -51,8 +51,6 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
|
||||
public TerminalWindow(IModuleUiHost host, TerminalLogger logger) : this()
|
||||
{
|
||||
this.FindControl<Controls.WindowMenuBar>("menuBar")!.Attach(host, "core.terminal", this);
|
||||
|
||||
_logger = logger;
|
||||
this.FindControl<ItemsControl>("logLines")!.ItemsSource = _lines;
|
||||
this.FindControl<DataGrid>("gridLogs")!.ItemsSource = _viewerRows;
|
||||
@@ -94,11 +92,10 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
_timer.Tick += (_, _) => ProcessQueue();
|
||||
_timer.Start();
|
||||
|
||||
Closed += (_, _) =>
|
||||
{
|
||||
_timer.Stop();
|
||||
if (_logger != null && _logHandler != null) _logger.OnLogMessage -= _logHandler;
|
||||
};
|
||||
// Kein Abmelden mehr: Die Seite wird in der Einfenster-Shell einmal erzeugt und läuft
|
||||
// bis zum Programmende weiter – genau wie früher ein offen gelassenes Fenster. Der
|
||||
// Takt bleibt deshalb absichtlich an, damit der Verlauf beim Zurückwechseln vollständig
|
||||
// ist und keine Meldungen fehlen.
|
||||
|
||||
ProcessQueue();
|
||||
}
|
||||
@@ -166,7 +163,9 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
var sb = new StringBuilder();
|
||||
foreach (var l in _lines) sb.AppendLine(l.Text);
|
||||
|
||||
var clipboard = GetTopLevel(this)?.Clipboard;
|
||||
// Seit der Umstellung auf Seiten ist „this" kein TopLevel mehr – die Zwischenablage
|
||||
// hängt am Shell-Fenster und wird über den Baum aufgelöst.
|
||||
var clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
|
||||
if (clipboard != null) await clipboard.SetTextAsync(sb.ToString());
|
||||
}
|
||||
catch
|
||||
|
||||
Reference in New Issue
Block a user