UI Slice 4: Launcher-Live-Widgets + VS-Re-Serialisierungs-Regressionen behoben

Slice 4 - Launcher-Live-Ueberblick (LauncherWidgetsPanel, isoliertes UserControl, rechts angedockt,
30s-Refresh; minimaler Eingriff ins von Richard bearbeitete Launcher-Designer):
- Modul-PnL/Winrate-Kacheln (je Modul + Gesamt: Heute/7T/30T, gruen/rot) via TradeAnalytics.
- Supervisor-KI-Kurzfassung (letzter sup_report).
- Warnungen & Fehler (heutige JSONL-Logs, Error/Warning).
- Auffaellige Trades (24h, nach |PnL| sortiert).

Regressionen aus VS-Re-Serialisierung behoben (VS liess hand-erstellte DataGridView-Spalten fallen
-> col* null -> NRE beim Oeffnen):
- DashboardView (dgvTrades): Spalten-Instanziierung + AutoGenerateColumns=false + Columns.AddRange
  + Spalten-Konfig wiederhergestellt.
- JobsView (dgvJobs): dito (nur Button-Spalte hatte ueberlebt).
- Smoke-UI dauerhaft um JobsView/TerminalView/SettingsView erweitert -> faengt diese Regressionsklasse
  kuenftig ab.

Enthaelt ausserdem Richards zwischenzeitliche UI-Arbeit (Launcher-Icons cross_reference/emotion_batman/
file_start_workflow, Designer-Re-Serialisierungen, .ico-Sammlung, Modul-Form-.resx). Persoenliche
Notizdatei bewusst NICHT committet.

Build 0 Fehler, 396 Tests gruen, --smoke-ui alle 9 Views/Forms gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-23 09:31:59 +02:00
co-authored by Claude Opus 4.8
parent 936144c318
commit 3c8ea3534e
52 changed files with 3860 additions and 2217 deletions
+9 -2
View File
@@ -76,6 +76,9 @@ namespace PolyTraderSharp.Ui
colAccOverall.DefaultCellStyle.Format = "N2";
dgv_accountlist.CellContentClick += AccountList_CellContentClick;
// Live-Überblick-Widgets (Modul-PnL/Winrate, Warnungen/Fehler, auffällige Trades, Supervisor-KI).
launcherWidgets.Initialize(_services);
_statusTimer.Tick += (_, _) => UpdateStatus();
_statusTimer.Start();
UpdateStatus();
@@ -152,8 +155,12 @@ namespace PolyTraderSharp.Ui
UpdateTradingToggles();
UpdateWindowButtonStates();
// Account-Übersicht alle 30 s aktualisieren (DB-Abfrage je Account nicht jede Sekunde).
if (_statusTicks++ % 30 == 0) LoadAccountOverview();
// Account-Übersicht + Widgets alle 30 s aktualisieren (DB-Abfragen nicht jede Sekunde).
if (_statusTicks++ % 30 == 0)
{
LoadAccountOverview();
launcherWidgets.RefreshData();
}
}
// ===== Account-Übersicht (dgv_accountlist) =====