Increase the hotkey and recoil loop sleep intervals to reduce CPU churn and smooth input handling. The hotkey loop now waits 15ms instead of 8ms, and the recoil loop waits 10ms instead of 2ms, which helps reduce jitter while keeping responsiveness stable. This also updates the packaged release artifact by replacing the older archive with Lithium-0.01.7z.
• Random Offset feature: Applies random X/Y offset values on each set activation (both mouse buttons pressed)
• Each axis gets independent random values within configurable range (e.g., 0.003 and 0.008)
• New random values generated on every activation
• Toggle to enable/disable the feature
🛠️ Fixed (Bugs resolved)
• Replaced jitter system (burst/cooldown) with simpler random offset system
📂 File-Level Changes Summary
• ConfigLoader.cs: Added randomOffsetEnabled, randomOffsetMin, randomOffsetMax settings
• RecoilEngine.cs: Implemented random offset logic with activation detection
• MainWindow.xaml: Replaced Jitter Settings with Random Offset Settings UI
• MainWindow.xaml.cs: Updated LoadSettingsToUI, GenerateConfigContent, ResetSettings_Click
• helper.cs: Added ParseDoubleFromAssignment helper method
• Custom Set Builder Testing Mode: The Custom Set Builder tab now functions as a live recoil testing tool. When toggled ON while the tab is active, the custom X/Y recoil values are applied instead of the selected operator's recoil, allowing real-time dial-in of recoil sets. Switching to any other tab automatically restores normal operator recoil.
📂 File-Level Changes Summary
• MainWindow.xaml: Named TabControl and added SelectionChanged handler for tab tracking.
• MainWindow.xaml.cs: Added UpdateCustomSetState() to sync custom recoil mode with RecoilEngine based on tab focus and toggle state.
• RecoilEngine.cs: Added CustomModeActive, CustomRecoilX, CustomRecoilY fields; HandleRecoilTick() checks custom mode first before falling back to mergedSets lookup.
• Quick Swap Feature:
• Users can now bind keyboard keys (both single keys and multi-key combinations, e.g., Alt+1 ) to switch to
specific operator sets.
• Auto-toggle capability: Pressing the hotkey switches to the target operator set (automatically changing side
if the operator is on standard Attackers/Defenders side). Pressing it again toggles back to the baseline
operator set.
• Added specificity filtering: Resolves overlapping hotkeys (e.g., pressing Alt+1 will only trigger the Alt+1
binding, successfully ignoring the individual 1 key binding).
• Added a dedicated Quick Swap Bindings editor inside the Settings panel to configure, save, and reload these
bindings visually.
## ⚙️ Updated (Refactoring & Architecture)
• Graceful Thread Shutdown: Updated RecoilEngine.cs to run with a CancellationToken linked to the main window
lifespan, matching HotkeyHandler.cs and preventing background thread leaks when exiting.
• State Management: Updated OperatorSets methods to protect the quick swap transition state, ensuring manual
adjustments (clicks or next/prev hotkeys) reset the quick-swap toggle baseline.
• Config Serialization: Updated MainWindow configuration generator to save new quick-swap parameters cleanly back
to init.config .
## 🛠️ Fixed (Bugs resolved)
• TabControl/Menu Text Colors: Fixed the styling on MainWindow.xaml tab headers. Unselected and hover states now
render in clear light greys, and active tabs in solid white, resolving dark-on-dark invisible text bugs.
• Dropdown Selection Visibility: Changed the text foreground color of TextColorComboBox in MainWindow.xaml from
black to white to make choices readable in dark mode.
• UI Console Text Color: Bound the console setting ( textColor ) to the actual WPF GUI log ( ConsoleOutput.
Foreground ), making the chosen color reflect in the application window.
──────
### 📂 File-Level Changes Summary
• helper.cs: Added helper.cs to safely parse combinations.
• ConfigLoader.cs: Added ConfigLoader.cs class and loading logic.
• OperatorSets.cs: Added OperatorSets.cs and state-tracking flags.
• HotkeyHandler.cs: Registered hotkey monitoring loops for multi-key patterns.
• RecoilEngine.cs: Integrated thread lifecycle cancellation.
• MainWindow.xaml: Styled menus, fixed dropdown contrast, and added Quick Swap bindings textbox.
• MainWindow.xaml.cs: Connected UI controls to backend quick-swap actions and applied dynamic log coloring.