Changelog
=========
All notable changes to this project are documented here.
The format is based on `Keep a Changelog `_,
and this project adheres to `Semantic Versioning `_.
Version 1.1.0 (2025-11-06)
--------------------------
Added
~~~~~
**TLS/SSL Support:**
* Optional TLS/SSL encryption for TCP connections
* Automatic self-signed certificate generation
* Certificate expiration warnings
* TLS 1.2+ minimum version requirement
* Server ``--cert-path`` and ``--key-path`` options for custom certificates
* Client and server ``--enable-tls`` / ``--disable-tls`` flags
* Certificates stored in ``~/.padrelay/certs/`` directory
**Password Strength Warnings:**
* Non-enforcing password strength checking with recommendations
* Automatic password strength analysis on startup
* Detailed recommendations for improving weak passwords
* Warnings for very weak or commonly used passwords
**Security Enhancements:**
* Log sanitization to prevent log injection attacks
* Config file permission warnings for world-readable files
* 55 new security-focused tests
**Debug Logging:**
* Comprehensive debug mode via ``PADRELAY_DEBUG`` environment variable
* Detailed TLS connection logging
* Authentication flow logging
* See ``DEBUG_LOGGING.md`` for details
**Dependencies:**
* Added ``cryptography>=41.0.0`` for TLS support
* Added ``cffi>=1.15.0`` for cryptography backend
Changed
~~~~~~~
* TLS/SSL is now **enabled by default** for TCP connections (disable with ``--disable-tls``)
* Enhanced security warnings throughout the application
* Improved error messages for security-related issues
* Updated documentation with TLS setup guides
Fixed
~~~~~
* All 123 tests now pass (previously 10 async integration tests were failing)
* pytest-asyncio configuration issues resolved
* Various minor bug fixes
Security
~~~~~~~~
* Addresses **VULN-001** (No Network Encryption) - TLS/SSL now available
* Addresses **VULN-002** (Weak Password Enforcement) - password strength warnings implemented
* Addresses **VULN-003** (Passwords in Config Files) - file permission warnings added
* Addresses **VULN-004** (Log Injection Potential) - log sanitization implemented
Version 1.0.4 (2025-06-15)
--------------------------
Added
~~~~~
* ``padrelay-keymapper`` CLI tool for creating controller mapping files
* Interactive button and axis mapping
* Support for Xbox 360 and DualShock 4 virtual gamepad types
* Generated configuration files compatible with server and client
Version 1.0.3 (2025-06-14)
--------------------------
Fixed
~~~~~
* Synced GitHub release and PyPI version numbers to avoid mismatch
* Ensured correct artifacts attached to GitHub Releases
Version 1.0.2 (2025-06-14)
--------------------------
Fixed
~~~~~
* Corrected ``version`` field in ``pyproject.toml`` to match intended release
Version 1.0.1 (2025-06-14)
--------------------------
Added
~~~~~
**CI/CD:**
* GitHub Actions workflow for testing with pytest (``python-tests.yml``)
* GitHub Actions workflow for building and publishing releases on tag push (``release.yml``)
* Automated PyPI publishing on version tags
Version 1.0.0 (2025-06-14)
--------------------------
Initial release of PadRelay.
Features
~~~~~~~~
* **Client-server architecture** for transmitting gamepad input over network
* **Cross-platform client** supporting any OS with Python and pygame
* **Windows server** using vgamepad and ViGEmBus for virtual gamepads
* **TCP and UDP protocols** for different latency/reliability tradeoffs
* **Challenge-response authentication** for TCP connections
* **Token-based authentication** for UDP connections
* **PBKDF2 password hashing** for secure password storage
* **Rate limiting** to prevent denial-of-service attacks
* **Heartbeat mechanism** for connection keepalive (TCP)
* **Automatic reconnection** when connection drops
* **Configurable button and axis mappings**
* **Support for Xbox 360 and DualShock 4** virtual gamepads
* **Comprehensive logging** with automatic log rotation
* **Command-line tools:** ``padrelay-server``, ``padrelay-client``
Documentation
~~~~~~~~~~~~~
* README with installation and usage instructions
* Configuration reference (CONFIGURATION.md)
* Example configuration files
* MIT License
Links
-----
* `GitHub Repository `_
* `PyPI Package `_
* `Issue Tracker `_
* `Latest Release `_