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-pathand--key-pathoptions for custom certificatesClient and server
--enable-tls/--disable-tlsflagsCertificates 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_DEBUGenvironment variableDetailed TLS connection logging
Authentication flow logging
See
DEBUG_LOGGING.mdfor details
Dependencies:
Added
cryptography>=41.0.0for TLS supportAdded
cffi>=1.15.0for 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-keymapperCLI tool for creating controller mapping filesInteractive 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
versionfield inpyproject.tomlto 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