Skip to content

Releases: edemarest/RobloxGuard

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 06:17
v1.5.0: PID lockfile-based single-instance enforcement

Major improvements:
- Replaced unreliable Windows global Mutex with PID lockfile
- Automatic stale lockfile detection and cleanup
- Process PID validation ensures accuracy
- Fixes: duplicate monitor processes on startup
- Fixes: mutex permission errors on some systems
- More inspectable and portable

Testing results:
 Fresh install starts monitor
 Second launch detects existing monitor
 Only 1 process runs (not duplicates)
 Lockfile contains correct PID
 Stale lockfiles automatically cleaned

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 06:11
Improved process detection and monitor startup reliability

- Fixes: launcher and monitor PID confusion
- Fixes: mutex timeout issues on first run
- Fixes: process name collisions between launcher and monitor
- Adds: retry logic for mutex acquisition
- Adds: improved diagnostic logging

v1.3.9

Choose a tag to compare

@github-actions github-actions released this 26 Oct 05:48
Force launcher exit during uninstall for clean process termination

v1.3.7 - Improved Uninstall Process Termination

Choose a tag to compare

@edemarest edemarest released this 26 Oct 05:42

Fix: Better Uninstall Process Cleanup

Problem: Running --uninstall\ would remove AppData but the monitor process could still be running in the background.

Solution:

  • Triple-pass process termination (multiple kill attempts)
  • Final kill check before AppData deletion
  • Proper timeouts between kill attempts (500ms)
  • Clear user feedback on completion
  • All processes forcefully terminated with \Kill(true)\

Changes:

  • Multiple kill passes to ensure process termination
  • Final validation before cleaning AppData
  • User sees completion message
  • Better logging and error handling
  • 500ms delays between termination attempts

Files:

  • \RobloxGuard.exe\ - Single-file executable
  • \RobloxGuard.exe.sha256\ - SHA256 checksum

Usage

\
RobloxGuard.exe --uninstall
\\

Complete uninstall with no processes or files left behind.

v1.3.6 - Mutex Permission Handling

Choose a tag to compare

@edemarest edemarest released this 26 Oct 05:11

Fix: Handle Mutex Permission Issues

Problem: On some systems, the mutex existed but the current process couldn't access it (UnauthorizedAccessException). The app would say 'Monitor already running' even though no actual process was running.

Root Cause: Previously, any UnauthorizedAccessException was treated as 'someone else holds the mutex, so monitor is running'. But this could also indicate:

  • Permission issues
  • Different user session
  • Corrupted mutex from system restart

Solution: When UnauthorizedAccessException occurs:

  1. Fall back to checking actual RobloxGuard processes
  2. If processes exist Monitor is running (legitimate permission issue)
  3. If NO processes exist Allow new monitor (false positive from broken mutex)

Changes:

  • Gracefully handles UnauthorizedAccessException
  • Validates with Process.GetProcessesByName as fallback
  • Allows app to start when permission issues block mutex access
  • Prevents getting stuck on 'Monitor already running'

Files:

  • \RobloxGuard.exe\ - Single-file executable
  • \RobloxGuard.exe.sha256\ - SHA256 checksum

Installation

Download and run. Auto-installs on first launch.

v1.3.5 - Proper Mutex-Based Deduplication

Choose a tag to compare

@edemarest edemarest released this 26 Oct 05:06

Fix: Proper Mutex-Based Process Locking

Problem: The previous mutex-based check using Mutex.OpenExisting() could return false positives. In some scenarios, the mutex would be held but the check would fail, causing the app to try to start a new monitor even though one was running.

Solution: Changed to use Mutex.WaitOne(100ms) instead:

  • If we CAN acquire the mutex it's stale (no process holding it) allow new monitor
  • If we CAN'T acquire the mutex within 100ms another process is actively holding it monitor is running, deduplicate

This is a much more reliable way to detect actual process ownership of the mutex.

Changes:

  • Timeout-based mutex validation instead of just checking existence
  • Detailed logging in MonitorStateHelper for debugging
  • Double-checks with Process.GetProcessesByName for confidence
  • Works reliably across different executable copies
  • Properly detects and tolerates stale mutexes from crashed processes

Files:

  • \RobloxGuard.exe\ - Single-file, self-contained executable
  • \RobloxGuard.exe.sha256\ - SHA256 checksum

Installation

Download and run. Auto-installs on first launch.

v1.3.4 - Fix Stale Mutex Issue

Choose a tag to compare

@edemarest edemarest released this 26 Oct 04:55

Fix: Stale Mutex Blocking New Monitor Startup

Problem: When the monitor process crashed or was killed, the startup mutex remained held, preventing any future launches from starting a new monitor. The app would immediately exit.

Solution: MonitorStateHelper now validates that an actual RobloxGuard process is running before trusting the mutex. If the mutex exists but no process is running, a new monitor starts automatically.

Changes:

  • Validates RobloxGuard process existence before trusting mutex
  • Gracefully handles crashed/killed monitor processes
  • Works reliably across different executable copies
  • Prevents 'Monitor already running. Exiting.' false positives

Files:

  • \RobloxGuard.exe\ - Single-file, self-contained executable (146.4 MB)
  • \RobloxGuard.exe.sha256\ - SHA256 checksum for verification

Installation

Download \RobloxGuard.exe\ and run it. It will auto-install on first launch.

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 23 Oct 00:27
Alert window beep sound notifications

v1.3.2 - Simplified X Alert Icon

Choose a tag to compare

@edemarest edemarest released this 22 Oct 00:39

Simplified alert icon to clean X symbol. Removed custom brain drawing for better maintainability. SHA256: 92F7FA6DDB8451E741CFD83842247ED7D76269BEB9B80D703BF2BA2092A2A0EC

v1.2.0 - Comprehensive Debug Logging

Choose a tag to compare

@edemarest edemarest released this 21 Oct 04:42

v1.2.0 - Comprehensive Debug Logging

What's New

  • Detailed logging for troubleshooting: All game detection, blocking, and process termination events are now logged to %LOCALAPPDATA%\RobloxGuard\launcher.log
  • Monitor crash diagnostics: Complete stack traces and error information are captured, making it easy to debug why the monitor might stop unexpectedly
  • Robust AlertWindow handling: If the alert window fails to display, a fallback MessageBox appears with diagnostic information
  • Enhanced file logging: All WinExe operations are logged to file since console output is not visible in Windows GUI apps

Why This Matters

Previously, when the monitor stopped after detecting a blocked game, there was no way to know what went wrong. Now you can check the debug log to see:

  • Whether the game was detected (DETECTED GAME JOIN)
  • Whether it was marked as blocked (IS BLOCKED)
  • Whether the process was terminated successfully
  • Any errors that occurred (including full stack traces)

Testing Instructions

  1. Download RobloxGuard.exe from this release
  2. Run it to install (first run auto-starts the monitor)
  3. Try to join a blocked game
  4. Check %LOCALAPPDATA%\RobloxGuard\launcher.log for detailed diagnostics
  5. Report any issues with the log contents

Files

  • RobloxGuard.exe (146 MB) - The application
  • RobloxGuard.exe.sha256 - SHA256 checksum for verification

SHA256 Checksum

729611CD21553343D180E688E70E3C401447AFC27A9371331F13D81F01A3CB79