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
+99 -27
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -117,4 +117,76 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStripJobs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
XYlhrDInAAAAAElFTkSuQmCC
</value>
</data>
</root>