# Changelog

Alle nennenswerten Änderungen an ErControl werden hier festgehalten.
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).

## [ErControl 3.0.3] – 2026-09-09

Tickets: [Redmine, ErControl 3.0.3](https://redmine.ercontrol.de/versions/5)

### Neu

- **Trainingsgerät/Pulsmesser-Name im Verbindungsdialog** ([#18](https://redmine.ercontrol.de/issues/18)):
  Im Fenster „Verbindung zum Ergometer herstellen" wird jetzt angezeigt, mit welchem
  Trainingsgerät und ggf. mit welchem Pulsmesser gerade verbunden wird (Anzeigenamen aus der
  Geräteverwaltung) – beim Trainingsstart und bei den Ergometer-Verbindungstests.

### Behoben

- **Training schließen wirft Ausnahme nach mehreren Minuten** ([#21](https://redmine.ercontrol.de/issues/21)):
  Der 1-Sekunden-Tick des Trainingsfensters lief auf einem Threadpool-Thread und griff über den
  nicht thread-sicheren DbContext auf Einstellungen zu – kollidierte beim Schließen mit dem
  Speichern-Dialog-Handler auf dem UI-Thread. Der Tick läuft jetzt auf dem UI-Thread.
- **Trägheitsformel Fahrrad-Ergometer korrigiert** ([#20](https://redmine.ercontrol.de/issues/20)):
  Die trägheitsbehaftete Geschwindigkeitsanpassung rechnete Leistung wie Energie (dimensional
  falsche Formel) und erzeugte dadurch unrealistisch schnelle Beschleunigung bzw. Ausrollen.
  Korrekte Energiebilanz pro Tickschritt jetzt umgesetzt.
- **Ganganzeige bei Gangwechsel verzögert** ([#19](https://redmine.ercontrol.de/issues/19)):
  Anzeige des aktuellen Gangs hinkte bis zu 1 Sekunde hinterher, da der Gang nur einmal pro
  Sekunde per Timer-Tick gemeldet wurde. Gangwechsel werden jetzt sofort an die UI gemeldet statt
  auf den nächsten Tick zu warten.

## [ErControl 3.0.2] – 2026-09-06

Tickets: [Redmine, ErControl 3.0.2](https://redmine.ercontrol.de/versions/4)

### Neu

- **ANT+ FE-C Ergometer-Anbindung** ([#16](https://redmine.ercontrol.de/issues/16)):
  Ergometer mit ANT+ FE-C lassen sich jetzt als vollwertige Verbindungsart neben Seriell und
  BLE FTMS ansteuern. `AntInterface` (vormals AntPowerBridge) wurde zu einem x86-Hilfsprozess
  ausgebaut, der mehrere ANT+-Kanäle gleichzeitig bedient (Power-Broadcast, FE-C, Puls) und per
  Rollen-Flags (`--power-broadcast`, `--fec`, `--hr`) gesteuert wird. Die IPC zwischen ErControl
  und AntInterface läuft über ein gemeinsames JSON-Protokoll (`ErControl.AntProtocol`) mit
  Versionsprüfung, getrennten Named Pipes für Steuerbefehle/Status und Telemetrie/Fehler sowie
  einem Simulatormodus (`--simulate-fec`) für Tests ohne ANT-Stick.
- **Pulsmesser mit ANT+ Interface anbinden** ([#15](https://redmine.ercontrol.de/issues/15)):
  ANT+-HRM-Sensoren (Brustgurt, Sportuhr) lassen sich jetzt als Pulsquelle nutzen, empfangen über
  Kanal 2 der AntInterface (`AntHrDisplayRole`, Datenpage 0x20). Anders als bei BLE ist die
  Device Number fest an den eigenen Brustgurt gebunden statt Wildcard; ein erneuter Klick auf den
  Stern deaktiviert den Pulsmesser wieder.
- **BLE-Pulsmesser implementieren** ([#14](https://redmine.ercontrol.de/issues/14)):
  Die Registerkarte „Pulsmesser" wurde von einem reinen CRUD-Gerüst zu einer echten
  Verbindungsart erweitert: BLE-Scan über den Heart-Rate-Service (0x180D), Verbindungsaufbau und
  Live-Pulsempfang (Charakteristik 0x2A37) im Training, analog zum bestehenden
  Trainingsgeräte-BLE-Stack. Ein BLE-Verbindungstimeout bricht den Trainingsstart jetzt nicht
  mehr ab, sondern wird abgefangen.
- **Geräte-Verwaltung: mehrere Trainingsgeräte und Pulsmesser konfigurierbar** ([#13](https://redmine.ercontrol.de/issues/13)):
  Neuer Bereich „Geräte" im Menü mit zwei Reitern: Trainingsgeräte (Seriell/ANT+ FE-C/BLE FTMS)
  lassen sich jetzt als benannte Liste mit einem aktiven Gerät verwalten statt nur über eine
  globale Einstellung, Pulsmesser als neue Kategorie daneben. Bestehende Ergometer-Einstellungen
  werden beim ersten Start automatisch in die neue Geräte-Liste übernommen.

### Behoben

- **Leistungssteuerung „Nur PC" wirkungslos** ([#17](https://redmine.ercontrol.de/issues/17)):
  Bei aktivierter Option „Leistungssteuerung nur über PC" und ausgeschalteter Gangschaltung
  sollen die Gang-Tasten die Leistung in 5-Watt-Schritten regeln statt den Gang zu wechseln. Bei
  der Portierung von ErControl 2.5 ging dieser Teil in `FreiesTrainingWindowViewModel.HandleHotkey`
  verloren – die Tasten taten nichts mehr, Nutzer blieben auf fester Leistung hängen.
- **Fenstertitel der Trainingsarten falsch** ([#12](https://redmine.ercontrol.de/issues/12)):
  Das Trainingsfenster zeigte in allen vier Trainingsarten immer „Freies Training" als Titel.
  Der Titel richtet sich jetzt nach dem Profiltyp (Leistungs-/Puls-/Streckentraining).
- **Hinweis „Verbindungsart noch nicht aktiv" fälschlich auch bei BLE FTMS** ([#11](https://redmine.ercontrol.de/issues/11)):
  BLE FTMS ist vollständig implementiert und wird im Training auch verwendet, zeigte aber
  trotzdem den Hinweis, dass sich die Verbindungsart noch nicht auswirkt. Der Hinweis erscheint
  jetzt nur noch bei ANT+ FE-C.
- **Einstellung „Trainingsdaten automatisch speichern" ohne Wirkung** ([#10](https://redmine.ercontrol.de/issues/10)):
  `Prefs.AutomaticSave` war zwar in der UI gebunden, wurde aber nirgends ausgewertet – beim
  Trainingsende erschien immer die Ja/Nein-Abfrage zum Speichern. Bei aktivierter Option wird
  jetzt beim Trainingsende ohne Rückfrage automatisch gespeichert.

### Entfernt

- **Verwaiste Einstellung „Warnung über verpasste Timer-Events anzeigen"** ([#9](https://redmine.ercontrol.de/issues/9)):
  Stammte aus der alten, seriell-zentrierten Architektur und wurde nirgends mehr ausgewertet.
  Mit BLE FTMS (asynchrone Update-Rate, eigener Notification-Thread) ist „verpasstes
  Timer-Event" als Fehlerbedingung nicht mehr zutreffend – Option samt UI-Checkbox entfernt.

## [ErControl 3.0.1] – 2026-09-04

Tickets: [Redmine, ErControl 3.0.1](https://redmine.ercontrol.de/versions/1)

### Behoben

- **Widerstand bei virtueller Gangschaltung** ([#1](https://redmine.ercontrol.de/issues/1)):
  Steigungen wurden zwar in Geschwindigkeit und Streckenverlauf berücksichtigt, aber nicht mehr
  als Tretwiderstand ans Ergometer übertragen (Freies Training + Topographisches Profil, sowie
  „Nur PC-Steuerung"). Bei der Portierung ging die Übertragung der berechneten Leistung ans
  Ergometer verloren – sie landete nur noch in der Anzeige.
- **Geschwindigkeit wird bei Trittfrequenz 0 trotzdem berechnet** ([#2](https://redmine.ercontrol.de/issues/2)):
  Am Fahrradergometer ohne Gangschaltung zeigte das Freie Training (und Leistungs-/Puls-/
  topographisches Profil) bei Trittfrequenz 0 trotzdem eine Geschwindigkeit an (z. B. 26,5 km/h
  bei 100 W). Der Gate „keine Trittfrequenz → keine Geschwindigkeit" aus 2.5 fehlte in
  `ErgometerSpeedCalculator.CalculateNextBikeSpeed` seit der Portierung.
- **Zeit und Live-Diagramm laufen bei Trittfrequenz 0 weiter** ([#3](https://redmine.ercontrol.de/issues/3)):
  Trainingszeit-Anzeige und Live-Diagramm liefen bei Trittfrequenz 0 weiter, obwohl nicht getreten
  wurde – betrifft alle Trainingsarten am gemeinsamen Trainingsfenster. Die eigentliche
  Datenaufzeichnung war nicht betroffen.
- **AntPowerBridge: Pfad zur exe wurde nicht auf Existenz geprüft** ([#4](https://redmine.ercontrol.de/issues/4)):
  Beim Trainingsstart wurde nur geprüft, ob im Preferences-Textfeld überhaupt ein Pfad steht –
  nicht, ob die Datei tatsächlich existiert. Ein Tippfehler oder eine verschobene/gelöschte
  `AntPowerBridge.exe` führte nur zu einem still geloggten Warning, ohne Rückmeldung an den
  Nutzer; zudem ließ sich ein ungültiger Pfad klaglos speichern. Jetzt prüft
  `AntPowerBridgeReady` per `File.Exists`, und das Speichern in den Preferences wird mit
  sichtbarer Warnung blockiert, solange der Pfad nicht existiert.
- **AntPowerBridge: Konsolenfenster öffnete sich vor dem Trainingsfenster** ([#5](https://redmine.ercontrol.de/issues/5)):
  `AntPowerBridge.exe` ist ein Konsolen-Projekt und öffnete beim Trainingsstart automatisch ein
  sichtbares Konsolenfenster, das kurzzeitig den Fokus vor dem eigentlichen Trainingsfenster
  hatte. Die Konsolenausgabe dient nur der Live-Statusanzeige und wird zusätzlich in eine
  Log-Datei geschrieben, es geht also keine Information verloren. Das Konsolenfenster wird jetzt
  per `CreateNoWindow` unterdrückt.

### Geändert

- **Ergometer-Einstellungen (serielle Schnittstelle) jetzt benutzerabhängig** ([#8](https://redmine.ercontrol.de/issues/8)):
  Die Ergometer-Einstellungen für die serielle Schnittstelle werden jetzt benutzerabhängig
  statt global gespeichert. Jeder angemeldete Benutzer muss den seriellen Port ggf. erneut
  in den Einstellungen eintragen. Die Port-Auswahl im Verbindungsfenster entfällt dafür –
  der Port wird ausschließlich in den Einstellungen konfiguriert, dort mit einem
  Testen-Button zur Verbindungsprüfung.

### Neu

- **BLE-FTMS-Unterstützung: Ergometer über Bluetooth Low Energy ansteuern** ([#7](https://redmine.ercontrol.de/issues/7)):
  ErControl kann Ergometer jetzt zusätzlich zu ANT+ FE-C über Bluetooth LE (FTMS – Fitness
  Machine Service) ansprechen. Verbindungsart-Auswahl in den Preferences, BLE-FTMS-Gerätesuche
  inkl. Geräteauswahl und Testen-Button, sowie echte BLE-FTMS-Kommunikation als
  Ergometer-Datenquelle im Training. Einschränkung: über BLE FTMS wird kein Puls übertragen.
  Offen: Verhalten bei Verbindungsabbruch/Reconnect, Feldabdeckung des FTMS-Profils je nach
  Hersteller, Test mit realer Hardware verschiedener Anbieter.

## [AntFecTester 1.0.1] – 2026-09-04

Tickets: [Redmine, AntFecTester 1.0.1](https://redmine.ercontrol.de/versions/3)

### Behoben

- **Eingabe-Prompt für Zielleistung geht im Telemetrie-Strom unter** ([#6](https://redmine.ercontrol.de/issues/6)):
  Der Broadcast-Handler schrieb bei jedem eingehenden ANT+-Paket (~4 Hz) direkt per
  `Console.WriteLine` – das konkurrierte mit der interaktiven Eingabe der Zielleistung, zudem
  hatte AntFecTester noch nicht mal ein sichtbares Eingabe-Prompt. Live-Telemetrie bekommt jetzt
  eine feste, überschriebene Konsolenzeile statt zu scrollen, plus sichtbares `> `-Prompt –
  identisches Muster wie der gleichartige Fix in BleFtmsTester.
