Releases: Ian-bug/RainingKeysPython
v1.3.10
[1.3.10] - 2026-03-25
🚀 Features
- Add application icon and update version to v1.3.10
🐛 Bug Fixes
- Add Pillow dependency for icon support
- Install dependencies from requirements.txt in CI workflow
📚 Documentation
- Add Ko-fi username for funding support
- Add Ko-Fi donation button to README
v1.3.9
[1.3.9] - 2026-03-22
🚀 Features
- (ci) Add local CI runner script
- (release) Add debug version to release
🐛 Bug Fixes
- (ci) Run all CI jobs on Windows containers
- (ci) Fix Windows CI workflow issues
- (ci) Resolve Windows CI workflow failures
- (ci) Use Python scripts instead of inline commands
- (ci) Remove emoji and fix Python path issues
- (lint) Remove unused imports to fix pyflakes errors
- (release) Update release workflow to use GitHub CLI
- (release) Fix YAML syntax error at line 78
- (release) Install git-cliff directly to avoid Docker build failure
- (release) Use Rust cargo to install git-cliff
- (release) Back to binary download, add executable permissions
- (release) Simplify shell script format
- (release) Simplify workflow for Python project with proper build
- (cliff) Fix TOML parse errors in cliff.toml
- (cliff) Remove duplicate [git.conventional_commits] section
- Resolve git-cliff TOML configuration errors
📚 Documentation
- Integrate all documentation into main README
- Refresh main README.md display
- Regenerate README.md following create-readme skill guidelines
- Remove .github/README.md to fix GitHub display issue
⚙️ Miscellaneous Tasks
- Add *.log pattern to .gitignore
- Bump version to 1.3.9
- Apply 35 code fixes and add GitHub Actions CI/CD pipeline
v1.3.7 - Code Quality & Cross-Platform Release
Major Code Quality Improvements
This release represents a significant leap in code quality, maintainability, and production readiness.
🎯 Key Improvements
Logging & Monitoring
- ✅ Comprehensive logging system with dual output (console + file)
- ✅ Configurable log levels (DEBUG/INFO)
- ✅ Persistent logs saved to
rainingkeys.log - ✅ Exception traces with full context
Code Safety & Type Safety
- ✅ Complete type hints throughout all core modules
- ✅ Fixed unsafe bar pool recycling with removed flag tracking
- ✅ Signal blocking context manager to prevent Qt resource leaks
- ✅ Thread-safety documentation for input monitoring
Cross-Platform Compatibility
- ✅ System font fallbacks for Consolas, Arial, and other fonts
- ✅ Font fallback chains for Windows, macOS, and Linux
- ✅ Better handling of missing system fonts
Configuration & Validation
- ✅ Configuration validation with automatic value clamping
- ✅ Color string parsing with detailed error messages
- ✅ Removed magic numbers - all constants in VisualSettings
- ✅ Fixed bar_color to use @Property decorator
Error Handling
- ✅ Robust error handling for all file I/O operations
- ✅ Graceful fallbacks when configuration fails
- ✅ User-friendly error messages
📦 Downloads
RainingKeysPython.zip- Release build (no console window)RainingKeysPython-debug.zip- Debug build (with console for troubleshooting)
🚀 Installation
- Download and extract the appropriate zip file
- Run
RainingKeysPython.exe - Use the settings window to configure your overlay
- Press keys to see them visualized in real-time
📝 Technical Details
Version: 1.3.7
Python: 3.12+
Dependencies: PySide6, pynput, pywin32
Full Changelog:
- Added
core/logging_config.py- Centralized logging infrastructure - Added
core/qt_utils.py- Qt utility functions and context managers - Updated all modules to use logging instead of print statements
- Fixed bar_color property access with @Property decorator
- Added thread-safety documentation to InputWorker class
- Implemented signals_blocked() context manager for safer Qt operations
- Added system font fallback methods (_get_mono_font, _get_sans_font)
- Moved display constants to VisualSettings dataclass
- Added configuration validation methods
- Fixed unsafe bar recycling with removed flag tracking
Previous Release: v1.3.5
Upgrade Instructions: Simply replace your existing executable with the new version. Your configuration will be preserved.
Bug Reports: Please report issues on GitHub with logs from rainingkeys.log
Release Notes - Version 1.3.5
Bug Fixes
- Fixed
NameError: name 'layout' is not definedin LaneSettingsGroup- Moved
self.setLayout(layout)fromupdate_from_config()toinit_ui()in core/ui/components.py:136
- Moved
UI Improvements
- Increased settings window default size to 400×670 (was 340×500)
Configuration Updates
- Updated default configuration to match current config.ini values:
- Added
fall_directionsetting with default value "up" - KeyViewer now enabled by default (was disabled)
- Default lane keys set to d, f, j, k
- SettingsManager now persists fall_direction setting
- Debug mode disabled by default (production-ready)
- Added
Technical Details
- Added
__post_init__method to AppConfig for default lane initialization - Improved settings persistence logic in SettingsManager
Files Changed
- core/configuration.py - Updated defaults and added post_init
- core/settings_manager.py - Added fall_direction load/save support
- core/gui.py - Increased window size
- core/ui/components.py - Fixed layout initialization bug
Build Artifacts
- RainingKeysPython.zip - Release build (no console)
- RainingKeysPython-debug.zip - Debug build (with console)
Release - v1.3.0
We are excited to release RainingKeys v1.3.0! This update brings a major architectural overhaul, a fresh dark theme, and improved configuration management.
🌟 New Features
Reset Configuration
- One-Click Reset: Added a "Reset Config to Defaults" button in the Settings window.
- Safety First: Quickly restore the application to its original state if settings become corrupted.
- Release Stability: Release builds now automatically reset configuration on first run (via build pipeline), ensuring a clean start for all users.
Dark Theme UI
- Modern Look: Implemented a consistent Dark Theme across the entire application.
- Better Usability: Added a Scroll Area to the settings window for better accessibility on small screens.
- Visual Hierarchy: Improved readability of settings controls with polished styling.
🛠 Internal Improvements
Architecture Overhaul
- Dependency Injection: Replaced global state with a robust
AppConfigdataclass system. - Modular Components: Refactored the UI into reusable components for better maintainability.
- Performance: Implemented geometry caching to reduce CPU usage during rendering.
Bug Fixes
- Fixed mutable state issues in key mapping configuration.
- Resolved UI styling inconsistencies.
🚀 How to Use
- Download
RainingKeysPython.zipfrom the Assets section below. - Extract the zip file to a folder of your choice.
- Run
RainingKeysPython.exeto start the application. - Configure your keys and visual settings via the Settings button.
Note: If you encounter any issues, try using the new "Reset Config" button in the settings.
Full Changelog: v1.2.0...v1.3.0
v1.2.0 - KeyViewer & Transparency
We are thrilled to introduce RainingKeys v1.2.0! This update focuses on visual customization, adding the KeyViewer panel and adjustable transparency.
🌟 New Features
⌨️ KeyViewer Panel
- Visual Keyboard: A new static panel that mirrors your configured lanes.
- Live Feedback: Keys light up when pressed.
- Hit Counters: Optional tracking of total key presses per lane.
- Smart Positioning: Place the panel Above or Below the rain. Changing the position automatically flips the fall direction (Down vs. Up).
👀 Enhanced Visuals
- Adjustable Transparency: Fine-tune the "Inactive Opacity" of the KeyViewer to make unpressed keys stand out or fade away.
- Custom Colors: Pick any RGBA color for your bars using the new color picker.
- Polished UI: Smoother, more consistent visual presentation.
⚙️ Improved Configuration
- Encoding Fixes: Resolved issues with UTF-8 BOM in config files, ensuring smoother upgrades and saving.
- Robust Build Script:
build.pynow handles encoding errors more gracefully.
🚀 How to Use
- Download RainingKeysPython.zip.
- Extract and run
RainingKeysPython.exe. - Open the Settings Window to enable the KeyViewer, change colors, and adjust transparency.
- Enjoy the rain!
Credits to AdofaiTweaks for inspiration!
v1.1.0: Dynamic Lanes & Interactive Config
RainingKeys v1.1.0 Release Notes
We are excited to announce the release of RainingKeys v1.1.0! This major update brings a fully interactive configuration GUI, dynamic lane customization, and a robust build system.
🌟 New Features
🛠️ Interactive Configuration GUI
- Live Adjustments: Move the overlay (
X,Yposition) and adjust visual settings (Scroll Speed,Fall Direction) in real-time. - User-Friendly Interface: No need to manually edit config files for basic adjustments.
🎹 Dynamic Lane System
- Custom Key Bindings: You are no longer limited to 4 keys! Bind any number of keys (e.g., 1, 4, 6, 10 lanes).
- Record & Play: Use the new "Record Lane Keys" button to easily define your lanes by pressing keys in order.
- Auto-Resizing: The overlay automatically adjusts its width to fit your custom lanes.
📦 Improved Build System
- One-Click Build: New
build.pyscript automates the entire process. - Dual Releases: Automatically generates both Release (windowed, no console) and Debug (console enabled) versions.
- Portable: Configuration is bundled with the executable.
🚀 How to Use
- Download
RainingKeysPython.zip. - Extract and run
RainingKeysPython.exe. - Use the Config Window to set up your keys and position.
- Enjoy!
🐞 Bug Fixes & Improvements
- Fixed issues with hardcoded lane mappings.
- Improved configuration persistence.
- Enhanced project structure for better maintainability.
Happy Playing!
v1.0.0 - Initial Release
RainingKeysPython is a high-performance, external rhythm game input visualizer. This is the first public release, featuring a fully functional "Rain-style" overlay that works on top of any game.
✨ Key Features
- External Overlay: Transparent, click-through window that stays on top of your game.
- Accurate Timing: Uses high-precision clocks for smooth, jitter-free falling animations.
- Live Configuration: Includes a GUI Control Panel to adjust settings in real-time.
- Change Scroll Speed.
- Switch Fall Direction (Up/Down).
- Move the overlay position.
- Zero Injection: Safe to use; does not inject into game memory or modify game files.
📦 Build & Distribution
- Automated Build System: Includes a build.py script to compile the project into a standalone
.exe. - Auto-Packaging: Automatically zips the build output (
RainingKeysPython.ziporRainingKeysPython-debug.zip). - Debug toggle: Easily switch between Console/Windowed mode via config.ini.
🚀 How to Use
- Download the release archive.
- Run
RainingKeysPython.exe. - The overlay and the settings window will open.
- Press
A,S,L,;(default keys) to see the visualization!