86b497bdbf8c4043036699a897fd9375d20a2f91
Umsetzung von #567. Entscheidung Richard, 13.09.2026: Geheimnisse verwalten wir ausschliesslich im Desktop, und selbst dort erst nach zusaetzlicher Passwortabfrage. Bisher sah und aenderte jeder, der die Desktop-Oberflaeche offen vor sich hatte: - Polymarket-Konten mit ApiKey, ApiSecret, ApiPassphrase und PrivateKey - Master-Key, OpenRouter-Key, Watchdog-Token und Lizenzschluessel - Mullvad-Account und Polygon-RPC-URL mit Alchemy-Key, offen im Editor - das WebUI-Token, per "Anzeigen" lesbar Jetzt gesperrt, bis entsperrt: - Tab "Polymarket Accounts": Gesperrt stehen die Konten gar nicht im visuellen Baum. Das Raster bleibt leer, der Editor mit den Private Keys ebenfalls; nichts ist nur verdeckt. - Master-Key erzeugen, OpenRouter-, Watchdog- und Lizenzschluessel setzen. - Mullvad-Account und Polygon-RPC-URL: mit [SensitiveSetting] markiert und im Editor ausgeblendet. - WebUI-Zugang: Gesperrt steht das Token nicht einmal maskiert im Feld. Speichern ist mitgesperrt, weil es den Feldinhalt als Token schreibt; gesperrt und leer haette es das Token geloescht. - Frei bleiben Lizenzpruefung und Test-Heartbeat, weil sie keinen Schluessel zeigen. Kern im Core (PolyTrader.Core.Security), weil nur dort testbar: - SettingsPasswordStore: PBKDF2-HMAC-SHA256, 600 000 Iterationen, Salt, eigene Datei settings-password.json neben master.key, atomar geschrieben und nur fuer den Besitzer lesbar. Nicht in server_settings.xml, die seit #561 das WebUI mitschreibt. Ein vorhandenes Passwort wird nie ueberschrieben. - SettingsLock: - erstes Festlegen mit Wiederholung und mindestens 10 Zeichen - zwei freie Fehlversuche, danach 5 s bis 5 min Wartezeit, in der auch das richtige Passwort nicht geprueft wird - Sperre nach 5 Minuten ohne geschuetzte Aktion und beim Verlassen der Einstellungen - eine unlesbare Passwortdatei entsperrt nie und gilt auch nicht still als "kein Passwort" - Protokoll ohne eingegebene Werte Oberflaeche: PasswordDialog deklarativ in .axaml, Sperr-Leiste ueber den Tabs. Die PBKDF2-Pruefung dauert etwa eine halbe Sekunde und laeuft nicht im UI-Thread. Grenzen: - Die Sperre schuetzt gegen jemanden an einer entsperrten Desktop-Sitzung. Wer Dateizugriff hat, liest master.key selbst. Deshalb gibt es kein "Passwort vergessen": Wer settings-password.json loeschen kann, braucht keins. - Die Wartezeit nach Fehlversuchen beginnt nach einem Neustart von vorn. - "Datenbankeinstellungen": Eine Ansicht dafuer gibt es im Desktop nicht; die Verbindungszeichenfolge steht nur in appsettings.Local.json. Entsteht eine, gehoert sie hinter dieselbe Sperre. Tests: 20 fuer Passwortdatei und Sperre (Festlegen, Fehlversuche, Wartezeit, Leerlauf, unlesbare Datei, Aendern, Iterationszahl aus der Datei, Dateirechte) und 5 fuer die Markierung der Geheimnisfelder. Die Oberflaeche selbst wird auf der VM abgenommen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Doku (Predictalytics / PolyTraderSharp)
Zentrale Ablage für Roadmap, Leitfäden, Fach- und Business-Dokumente. Code-gekoppelte Pläne bleiben bewusst in diesem Repo (statt in einem separaten Docs-Repo), damit „Plan → umsetzende Commits" nachvollziehbar bleibt.
Wo anfangen?
| ROADMAP.md | Das Steuerungsdokument. Alle Vorhaben, Status, Reihenfolge — was als Nächstes zu tun ist und was bewusst liegen bleibt |
| PROJEKTSTAND.md | Der Ist-Zustand: Architektur, Kennzahlen, Modul-Stand |
Kurzformel: PROJEKTSTAND = was ist. ROADMAP = was kommt.
Leitfäden (vor der Arbeit lesen)
- LEITFADEN-Avalonia-Portierung.md — Arbeitsregeln für die Oberfläche. Vor jeder UI-Arbeit lesen: Layout ist deklarativ, keine festen Farben, Module bleiben frei von Avalonia.
- LEITFADEN-CI.md — was die CI prüft und wie der Gitea-Runner eingerichtet wird.
.agents/rules/clob.md— verbindlich für alles, was Geld bewegt.
Struktur
archiv/— die Umsetzungspläne und Konzepte, aus denen die Roadmap zusammengeführt wurde. Nicht tot: weiterhin die Bauanleitungen mit Code-Bezügen, Akzeptanzkriterien und Begründungen. Nur der Status darin ist eingefroren — dafür gilt ausschließlich die Roadmap. Details inarchiv/README.md.sicherheit/— Sicherheitskonzept und die wiederkehrende Audit-Checkliste. Die offenen Kästchen in Abschnitt 6 sind eine Vorlage für jedes Release, kein Rückstand.steuer/— Steuer-/Buchhaltungs-Fachdokumente und Vorlagen, auch zum Weitergeben an Berater.Accounting-US-Tax-Questionnaire.md— Fragebogen (EN) für die US-Steuerberaterin (Florida LLC).
pruefplaene/— Prüf-/Validierungspläne zum Abarbeiten.PRUEFPLAN-Linux-Betrieb.md— erster Lauf auf einer Linux-VM (Roadmap A4a).PREDICTALYTICS-PRUEFPLAN-Master-Auswahl.md— Master-Trader-Auswahl (separates Predictalytics-Projekt).
ideen/— frühe Ideen, bevor sie zu einem Konzept reifen.- UI-SPEZIFIKATION-WinForms.md — Beschreibung der abgelösten Oberfläche. Vergleichsvorlage für die Abnahme A5.
- IDEENSAMMLUNG-Feldtest-2026-08.md — Beobachtungen aus dem laufenden Einsatz. Nur sammeln, Umsetzung später.
Konventionen
- Eine Statusquelle. Fortschritt wird ausschließlich in der Roadmap gepflegt, nirgends sonst. Bis zum 22.08.2026 stand der Status in einem Dutzend Dokumenten — mehrere davon waren wochenlang falsch.
- Plandokument und Code wandern im selben Commit. Wer etwas abhakt, committet die Roadmap mit.
- Neue Detailpläne:
UMSETZUNGSPLAN-*.md→archiv/umsetzungsplaene/, und in der Roadmap verlinken. Neue Konzepte analog nacharchiv/konzepte/. - Übergreifende, an Externe weitergebbare Dokumente können später in ein eigenes
Predictalytics-Docs-Repo ausgelagert werden (Ordner rausziehen genügt) — für jetzt bewusst hier gebündelt.
Languages
C#
87%
JavaScript
6.5%
HTML
4.6%
CSS
1.3%
PowerShell
0.6%