Skip to content

Releases: izolini/GameCompanion

2.9-Windows

Choose a tag to compare

@izolini izolini released this 21 Oct 16:22
7a15c6e

New feature:

Added the ability to drag and drop utilities or games (.lnk or .exe files).
When dropped to the main window, Game Companion will open the "new game" window with proper fields pre-filled.
When dropped to the "new utility" or "new game" window, Game Companion will fill the fields accordingly.

2.8-Windows

Choose a tag to compare

@izolini izolini released this 16 Oct 21:58
2dcda23

New Features:

  • Monitor utilities after game start. If an utility crashes and is marked as auto-restart, then it will be started again (up to three times).
    If it fails more than three times, GameCompanion will not try to start it again on the same gaming session.

  • Inserted a cancel button on all modals to allow user to cancel edits without having to scroll to top, because now modals can't be closed by simply clicking outside them as before.

v2.0.0-Windows

Choose a tag to compare

@izolini izolini released this 15 Jun 15:34
2dcda23

1. High-Performance Logging (Multi-Process Safe)

Persistent Handles: App now maintains a persistent file handle rather than opening/closing it for every line. This significantly reduces disk I/O overhead.

2. Efficient Process Monitoring & Detection

  • Tiered PID Check: The isPidAlive function now uses a faster tiered approach:
    -- It first tries OpenProcess with PROCESS_QUERY_LIMITED_INFORMATION. This is nearly instantaneous and doesn't require a system snapshot.
    -- It falls back to a system-wide snapshot ONLY if access is denied (typical for some Anti-Cheats).
  • Native Iteration: getProcessPID and checkProcessRunning now use the golang.org/x/sys/windows package more natively, improving stability and clarity.

3. Asset & UI Speedups

  • Fast Icon Extraction: Icon extraction was refactored to use direct pixel buffer manipulation. This makes icon extraction (e.g., when adding a new game without explicit image selection) much faster.
  • Smart Image Resizing: process and resize images now checks dimensions using image.DecodeConfig before fully decoding the image. If the image is already small enough, it returns immediately without using extra memory.
  • Non-Blocking Persistence: App now performs JSON marshalling outside of the file lock, ensuring that the app's internal locks are released as quickly as possible.

4. Modernization

  • Drag and drop implemented on all categories (no more clumsy arrows!!). Changing cards order in categories other than the ALL category will affect the order on the ALL category as well.
  • Scroll of main window now affects only the game cards.

5. Security and Compatibility

  • Replaced several manual syscall.LazyDLL calls with standard functions from golang.org/x/sys/windows (e.g., windows.ShellExecute, windows.CreateMutex, windows.FindWindow), trying to get better AV compatibility and less false positives. Enhanced concurrency security and explicit pointer closing at App's exiting.

2.7.1-Windows

Choose a tag to compare

@izolini izolini released this 16 Oct 16:59
012bccd

Performance enhancements: optimize runtime footprint and fix autoclose race condition (v2.7.1)

  • Fix data race on autoclose flag: replaced unguarded global bool with
    atomic.Bool field on App struct, eliminating concurrent read/write
    between the monitoring goroutine and AutoClose()
  • Cache exe directory via sync.Once (getExeDir): removed repeated
    os.Executable() syscalls from getCacheDir, setupLogging, ReadLogFile
    and NewApp — most notably from the asset server hot path, which was
    called on every image request from the WebView2 gallery
  • Cache GetAppInfo result via sync.Once: wails.json is embedded at
    compile time and never changes; json.Unmarshal now runs only once
  • Cache isAdmin result via sync.Once and promote IsUserAnAdmin to a
    package-level proc var, consistent with all other Win32 proc declarations
  • Eliminate redundant file open in processAndResizeImage: image is now
    opened once; io.Seek(0, SeekStart) rewinds the reader when a full
    decode is needed, removing a second syscall on every image cache write

2.7-Windows

Choose a tag to compare

@izolini izolini released this 02 Oct 22:01
087105c

New feature

Option to unlink start and stop sequence lists by game, allowing to put utilities in stop list that aren't started by the app (to deal with some games that start services/apps by themselves and doesn't properly close them at the end).

2.6-Windows

Choose a tag to compare

@izolini izolini released this 12 Sep 00:23
6223e50

New Feature:

Added ability to select different audio output and windows power scheme (by game) before starting the game, restoring previous settings after it ends.

v2.5-Windows

Choose a tag to compare

@izolini izolini released this 11 Sep 03:26
6223e50

v2.5 Windows

UI Enhancements:

  • scroll screen to top after saving utility;
  • drag and drop to sort utilities lists;

New features:

  • when registering a game, you can find it's executable file by using file selection or from a list of running processes (in this last case, the game must be running already, of course);
  • start minimized and use the system tray, calling games via menu by right clicking tray icon;
  • toast notifications
  • emergency panic key: now you can force kill game and utilities if the game freezes or you want to rage quit with style;
  • utilities preset lists, turning it easy to apply same utility sequences to several games;

v2.1.0.0 Windows

Choose a tag to compare

@izolini izolini released this 07 Sep 19:18
7ffbb52

Added option to minimize Game Companion's window upon game launch.
Skip time waits when utilities are already running.

v1.4.2.2 Windows

Choose a tag to compare

@izolini izolini released this 21 Mar 22:33
627bae0

Refactored Game Monitoring to Event-Driven System

Replace the previous polling mechanism with native Windows event-driven monitoring (WaitForSingleObject).

Key benefits of this architectural update:

  • 0% CPU Usage (Efficiency): The application no longer actively "polls" the system every few seconds to check if a game is running. Instead, it natively suspends the thread and is efficiently woken up by the Windows OS exactly when the process terminates, eliminating continuous CPU overhead.
  • Instantaneous Detection: Game closures are now detected in real-time. The delay associated with polling intervals has been completely removed, allowing the Game Companion app to react instantly.
  • Anti-Cheat Friendly: By requesting only SYNCHRONIZE rights (the lowest possible privilege level) when opening the game process handle, the app avoids triggering false positives in aggressive Anti-Cheat systems like Vanguard or Easy Anti-Cheat.
  • Improved Stability: Reduced overall system "noise" by avoiding constant, repetitive queries to the OS process lists, preventing potential conflicts with other system monitoring hooks or applications.

v1.4.2.1 Windows

Choose a tag to compare

@izolini izolini released this 05 Mar 12:50
627bae0

New release with better AV compatibility:

WebView2 cleaned flags (REMOVED):
"--disable-local-discovery "
"--disable-usb-bandwidth-monitoring "+
"--disable-background-networking "+
"--disable-background-timer-throttling "+
"--disable-backgrounding-occluded-windows "+
"--disable-renderer-backgrounding "+
"--disable-ipc-flooding-protection")

Reinstated code integrity (CHANGED)
WebviewDisableRendererCodeIntegrity: true, -> false

  • shouldn't affect child processes of runner.exe, as this flag was used before it's existence when the code was monolitic.

Runner
Replaced raw syscall.NewLazyDLL and proc.Call with the official golang.org/x/sys/windows package. This makes the binary structure look like a standard Windows utility rather than a custom-built injector.

Compiled runner without "-s-w" to maintain symbol tables included on final executable.