# Changelog Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert. ## [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