# Changelog Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert. ## [0.0.11] - 2026-08-25 ### Hinzugefügt - Windows-Client erfolgreich mit Fyne-GUI gestartet. - Übertragung der konfigurierten `startup_bytes` an das zugeordnete Remote-Gerät beim Verbindungsaufbau getestet. ### Geändert - Windows-spezifische Behandlung virtueller serieller Ports angepasst. - Öffnen und Verwaltung virtueller serieller Schnittstellen unter Windows überarbeitet. ### Getestet - Minimaler Fyne-Test unter Windows erfolgreich gestartet. - `rs2322tcp-client` unter Windows erfolgreich mit Fyne-GUI gestartet. - Verbindung des Windows-Clients zum `rs2322tcp-server` erfolgreich aufgebaut. - Rotor-Startcode erfolgreich vom Windows-Client bis zum Server übertragen. ## [0.0.10] - 2026-08-21 ### Behoben - Linux-Portverwaltung nach der Windows-Client-Erweiterung korrigiert. - Doppelte Linux-Definitionen der virtuellen Portverwaltung entfernt. - Plattformübergreifende Trennung der virtuellen Port-Erzeugung korrigiert. - Dauerhafte Installations-Symlinks für virtuelle Linux-Ports bleiben beim Schließen eines Ports erhalten. - Gesamter Go-Testlauf unter Linux erfolgreich. ## [0.0.9] - 2026-08-21 ### Added - Windows-Unterstützung für den rs2322tcp-Client - Plattformabhängige Verwaltung virtueller serieller Schnittstellen - Windows-COM-Port-Unterstützung über `go.bug.st/serial` - Unterstützung des virtuellen Windows-Portbereichs COM100 bis COM199 - Windows-spezifische Portvalidierung und Portpfadverwaltung - Technischer Windows-Client unter `cmd/rs2322tcp-client-test` - Plattformabhängige Implementierungen für das Öffnen und Verwalten virtueller serieller Schnittstellen - Windows-spezifische Implementierung von `VirtualSerial` ### Changed - Virtuelle Portverwaltung für Linux und Windows auf eine gemeinsame Schnittstelle umgestellt - Clientseitige Portvalidierung für die unterschiedlichen Plattformen erweitert - Client-Konfiguration für den Windows-Betrieb angepasst ### Tests - Windows 11 / amd64 erfolgreich getestet - Windows-COM-Port COM100 über com0com erfolgreich geöffnet - com0com-Portpaar `COM10 ↔ COM100` erfolgreich getestet - Verbindung des Windows-Clients über Tailscale zum Raspberry-Pi-Server erfolgreich getestet - Bidirektionale Datenübertragung zwischen Windows-Client und Raspberry-Pi-Server erfolgreich getestet - Bidirektionale Datenübertragung mit einem realen SPID Rot2Prog erfolgreich getestet - Rot2Prog mit `P5 = 59` (SPID) und Function Mode `A` (Auto) erfolgreich betrieben - Tatsächliche Antwort des Rot2Prog erfolgreich über den vollständigen Datenweg übertragen: ```text 57 07 01 06 00 01 03 06 02 00 01 20 ``` - `go test ./internal/client` erfolgreich ### Status Der Windows-Client kann über einen virtuellen Windows-COM-Port mit dem rs2322tcp-Server auf einem Raspberry Pi kommunizieren. Der vollständige Datenweg wurde mit einem realen SPID Rot2Prog bidirektional erfolgreich getestet: ```text COM10 │ ▼ com0com │ ▼ COM100 │ ▼ rs2322tcp-client (Windows) │ ▼ TCP / Tailscale │ ▼ rs2322tcp-server (Raspberry Pi) │ ▼ RS232 / SPID Rot2Prog ``` Der technische Windows-Client bleibt als separates Testprogramm erhalten. Die grafische Fyne-Oberfläche des Windows-Clients ist noch nicht vollständig abgeschlossen. ## [0.0.8] - 2026-08-12 ### Added - Prüfung der lokal vorhandenen virtuellen Ports beim Client-Start - Abgleich der vorhandenen symbolischen Links mit den in `client.json` definierten virtuellen Schnittstellen - Erkennung von in `client.json` definierten, aber lokal nicht vorhandenen virtuellen Ports - Erkennung von lokal vorhandenen, aber nicht in `client.json` definierten virtuellen Ports - Verständlicher Fehlerdialog bei einer abweichenden virtuellen Portkonfiguration - Beenden des Clients nach Bestätigung einer fehlerhaften Portkonfiguration ### Changed - Virtuelle Ports werden entsprechend der in `client.json` festgelegten Portnummern gezielt geöffnet - Die Verwaltung virtueller Ports arbeitet weiterhin ohne Root-Rechte - Der Fehlerdialog verwendet einen einzelnen OK-Button - Allgemeine Schriftgröße der grafischen Benutzeroberfläche auf 22 erhöht - Hauptfenster des Clients auf 800 × 600 Pixel vergrößert ### Tests - Prüfung vorhandener und konfigurierter virtueller Ports erfolgreich getestet - Fehlender virtueller Port erfolgreich erkannt und im Fehlerdialog angezeigt - Zusätzlicher, nicht konfigurierter virtueller Port erfolgreich erkannt - Clientstart nach Korrektur der virtuellen Portkonfiguration erfolgreich getestet - Gerätezuordnung nach Neustart des Clients erfolgreich aus `client.json` geladen - `go test ./...` erfolgreich - `go test -race ./internal/client` erfolgreich - `go test -race ./internal/gui` erfolgreich - `git diff --check` erfolgreich ## [0.0.7] - 2026-08-12 ### Added - Pflege der Gerätezuordnung über die grafische Benutzeroberfläche - Zuordnung der vom Server angebotenen Geräte zu den konfigurierten virtuellen seriellen Schnittstellen - Unterstützung des Zustands „nicht verbunden“ - Freie virtuelle Schnittstellen werden bei der Gerätezuordnung automatisch neu angeboten - Verhinderung der gleichzeitigen Zuordnung einer virtuellen Schnittstelle zu mehreren Geräten - Bereits zugeordnete Geräte können nur auf ihre aktuelle Schnittstelle oder „nicht verbunden“ gesetzt werden - Ungespeicherte Änderungen werden beim Schließen des Hauptfensters erkannt und dem Anwender angezeigt - Änderungen werden beim Schließen des Gerätezuordnungsfensters in der Client-Konfiguration gespeichert - Virtuelle Schnittstellen bleiben auch ohne Gerätezuordnung in der Client-Konfiguration erhalten - Ein leerer Wert für `remote_device` kennzeichnet eine freie virtuelle Schnittstelle - `Application.SaveConfig()` zum zentralen Speichern der Client-Konfiguration ### Changed - Validierung der Client-Konfiguration erlaubt nun virtuelle Schnittstellen ohne aktuelle Gerätezuordnung - Die Gerätezuordnung arbeitet auf Basis der vorhandenen virtuellen Schnittstellen und verändert bei einer Trennung nur deren `remote_device`-Zuordnung ### Tests - Gerätezuordnung mit mehreren Server-Geräten praktisch getestet - Freigabe einer virtuellen Schnittstelle und anschließende erneute Auswahl erfolgreich getestet - Speicherung einer Gerätezuordnung über die GUI erfolgreich getestet - Speicherung einer getrennten Gerätezuordnung mit leerem `remote_device` erfolgreich getestet - `go test ./internal/config` erfolgreich - `go test ./internal/gui` erfolgreich - `go test -race ./internal/gui` erfolgreich - `git diff --check` erfolgreich ## [0.0.6] - 2026-08-10 ### Added - Clientseitige Runtime zur Verwaltung mehrerer virtueller serieller Ports - Verbindung konfigurierter virtueller Ports mit den vom Server bereitgestellten Remote-Geräten - Clientseitige TCP-Data-Connections zu den dynamischen Data-Ports des Servers - Bidirektionale Datenübertragung über eine `Bridge` - Verwaltung des Lebenszyklus von virtuellen Ports, Bridges und Client-Verbindung - Integrationstest für den vollständigen Datenweg zwischen virtuellem seriellen Port und Server - Tests für Verbindungsaufbau, Gerätezuordnung und Runtime-Lebenszyklus ### Tests - `go test ./...` erfolgreich - `go test -race ./...` erfolgreich - Bidirektionale Übertragung über Runtime, Bridge, TCP und PTY erfolgreich - Race Conditions in Client-Control-Verbindung, PTY und virtuellen Ports behoben ## [0.0.5] - 2026-08-10 ### Added - Konfigurierbarer Bereich für lokale virtuelle serielle Schnittstellen - Standardbereich für virtuelle Ports von `/dev/ttyUSB100` bis `/dev/ttyUSB199` - Abweichender Portbereich kann über `virtual_port_range` in der Client-Konfiguration festgelegt werden - Rückwärtskompatibilität für bestehende Client-Konfigurationen ohne `virtual_port_range` - Verwaltung virtueller Ports über `VirtualPortManager` - Automatische Auswahl des nächsten freien virtuellen Ports - Freigabe reservierter Ports bei deren Schließen - Linux-spezifische Verwaltung der virtuellen Port-Symlinks unter `~/.rs2322tcp/virtual/` - Verknüpfung der virtuellen `/dev/ttyUSBxxx`-Schnittstellen mit den vom Client erzeugten PTYs - Einführung von `VirtualPort` und `ManagedVirtualPort` - Umfangreiche Tests für Portauswahl, Portfreigabe, Symlink-Verwaltung und Linux-PTY-Integration ### Tests - `go test ./...` erfolgreich - `go test -race ./...` erfolgreich - Bidirektionale Kommunikation über `/dev/ttyUSB100` erfolgreich getestet - Externe Software kann ausschließlich `/dev/ttyUSB100` verwenden - Übertragung vom virtuellen `/dev/ttyUSB100` zum Client erfolgreich getestet - Übertragung vom Client zum virtuellen `/dev/ttyUSB100` erfolgreich getestet - Zweistufige Symlink-Kette von `/dev/ttyUSB100` über `~/.rs2322tcp/virtual/ttyUSB100` bis zum PTY erfolgreich getestet --- ## [0.0.4] - 2026-08-10 ### Added - Interaktiver Geräte-Simulator `rs2322tcp-device-sim` - Senden beliebiger Bytefolgen über eine interaktive Hex-Eingabe - Ausgabe empfangener Daten als Hex-Dump - Unterstützung von Hex-Eingaben mit und ohne Leerzeichen - Fehlerbehandlung für ungültige Hex-Eingaben - Automatisierte Tests für die Hex-Konvertierung - Erweiterte Dokumentation des Geräte-Simulators und des PTY-Testaufbaus - Möglichkeit, den Simulator als virtuelle serielle Gegenstelle für externe Software zu verwenden ### Tests - Byte-orientierte Übertragung mit beliebigen Binärdaten getestet - Übertragung aller Bytewerte `00` bis `FF` getestet - Übertragung vom PTY-Slave zum PTY-Master getestet - Übertragung vom PTY-Master zum PTY-Slave getestet - `go test ./...` erfolgreich - `go test -race ./...` erfolgreich --- ## [0.0.3] - 2026-08-10 ### Added - Linux-PTY-Unterstützung für die clientseitige virtuelle serielle Schnittstelle - Abstraktion der virtuellen seriellen Schnittstelle über `VirtualSerial` - Automatisierter bidirektionaler PTY-Test mit allen 256 möglichen Bytewerten - Eigenständiges Programm `rs2322tcp-device-sim` als Simulator für ein angeschlossenes serielles Gerät - Hexadezimale Darstellung der vom Geräte-Simulator empfangenen Rohdaten ### Tests - PTY-Slave und PTY-Master erfolgreich miteinander getestet - Bidirektionale Übertragung von Binärdaten getestet - Bytefolgen mit Werten von `00` bis `FF` erfolgreich übertragen - Empfang beliebiger Datenblöcke über den PTY-Master getestet --- ## [0.0.2] - 2026-08-09 ### Added - Implementierung der seriellen Schnittstellenschicht unter `internal/serial` - Verwendung von `go.bug.st/serial v1.7.1` für die Ansteuerung der seriellen Schnittstellen - Konfigurationsunterstützung für Baudrate, Datenbits, Parität und Stopbits - Serielle Geräte können über Konfiguration definiert werden - Server-Control-Verbindung - Session-Verwaltung - Dynamische Data-Ports pro Gerät - Serverseitiger Aufbau der TCP-Data-Verbindung - `DataConnection` für die bidirektionale Datenübertragung - `DataListener` zur Annahme von Data-Verbindungen - TCP → RS232 Datenübertragung - RS232 → TCP Datenübertragung - Client-Control-Verbindung unter `internal/client` - Clientseitige Verarbeitung von `HELLO` - Clientseitige Abfrage der konfigurierten Geräte über `GET_DEVICES` - Clientseitige Verarbeitung der vom Server gelieferten Geräteinformationen einschließlich dynamischem Data-Port - Clientseitiger Aufbau der TCP-Data-Verbindung - Integrationstest für die vollständige Client-/Server-Kommunikation - End-to-End-Test der TCP-/RS232-Datenübertragung in beide Richtungen ### Changed - Serial-Kommunikation vollständig über `go.bug.st/serial` - Server öffnet serielle Schnittstellen erst bei aktiver Data-Verbindung - Pro Gerät wird nur eine aktive Data-Verbindung zugelassen - Session- und Ressourcenverwaltung überarbeitet - Race Condition im `DataListener` behoben ### Tests - Unit-Tests für Serial - Unit-Tests für Session - Unit-Tests für DataConnection - Unit-Tests für DataListener - Integrationstest mit virtuellen seriellen Schnittstellen über `socat` - Tests für TCP → RS232 und RS232 → TCP - Tests für Session-Reconnect und Ressourcenverwaltung - Client-/Server-Integrationstest erfolgreich - Race-Test des Client-/Server-Integrationstests erfolgreich ### Status Die grundlegende TCP-/RS232-Datenübertragung ist serverseitig implementiert und der Client kann die Control-Verbindung sowie die zugehörige Data-Verbindung aufbauen. Der aktuelle Datenpfad ist: ```text Client │ ├── TCP-Control-Verbindung │ │ │ ▼ │ Session │ │ │ ▼ │ GET_DEVICES │ │ │ ▼ │ Geräteinformationen │ │ │ ▼ │ dynamischer Data-Port │ │ └── TCP-Data-Verbindung │ ▼ DataListener │ ▼ DataConnection │ ▼ internal/serial │ ▼ RS232-Gerät ``` Die Datenübertragung wurde bereits in beide Richtungen erfolgreich getestet: ```text TCP → RS232 RS232 → TCP ``` Die clientseitige Linux-PTY-Grundlage für eine virtuelle serielle Schnittstelle ist implementiert und durch automatisierte Tests abgesichert. Der Geräte-Simulator ist als eigenständiges Testprogramm vorhanden und kann eine serielle Schnittstelle öffnen und empfangene Rohdaten hexadezimal anzeigen. Die interaktive TX-Funktion des Geräte-Simulators sowie die vollständige Integration der virtuellen seriellen Schnittstelle in den produktiven Client-Datenpfad sind noch nicht abgeschlossen. --- ## [0.0.1] - 2026-08-09 ### Added - Initiale Projektstruktur - Go-Modul und Build-Grundlagen - Basis für Server und Client - Konfigurationsgrundlagen - Versionsverwaltung und Build-Metadaten - Erste Dokumentation