Skip to content

Releases: Ian-bug/RainingKeysPython

v1.3.10

25 Mar 12:44

Choose a tag to compare

[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

22 Mar 10:00

Choose a tag to compare

[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

11 Mar 15:06

Choose a tag to compare

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

  1. Download and extract the appropriate zip file
  2. Run RainingKeysPython.exe
  3. Use the settings window to configure your overlay
  4. 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

16 Feb 16:56

Choose a tag to compare

Bug Fixes

  • Fixed NameError: name 'layout' is not defined in LaneSettingsGroup
    • Moved self.setLayout(layout) from update_from_config() to init_ui() in core/ui/components.py:136

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_direction setting 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)

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

25 Jan 12:43

Choose a tag to compare

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 AppConfig dataclass 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

  1. Download RainingKeysPython.zip from the Assets section below.
  2. Extract the zip file to a folder of your choice.
  3. Run RainingKeysPython.exe to start the application.
  4. 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

24 Dec 06:35

Choose a tag to compare

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.py now handles encoding errors more gracefully.

🚀 How to Use

  1. Download RainingKeysPython.zip.
  2. Extract and run RainingKeysPython.exe.
  3. Open the Settings Window to enable the KeyViewer, change colors, and adjust transparency.
  4. Enjoy the rain!

Credits to AdofaiTweaks for inspiration!

v1.1.0: Dynamic Lanes & Interactive Config

23 Dec 08:16

Choose a tag to compare

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, Y position) 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.py script 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

  1. Download RainingKeysPython.zip.
  2. Extract and run RainingKeysPython.exe.
  3. Use the Config Window to set up your keys and position.
  4. 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

21 Dec 15:37

Choose a tag to compare

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.zip or RainingKeysPython-debug.zip).
  • Debug toggle: Easily switch between Console/Windowed mode via config.ini.

🚀 How to Use

  1. Download the release archive.
  2. Run RainingKeysPython.exe.
  3. The overlay and the settings window will open.
  4. Press A, S, L, ; (default keys) to see the visualization!