Skip to content

Releases: romkazor/IncottHIDApp

v0.4.0

16 Apr 20:30

Choose a tag to compare

โœจ What's new

๐Ÿท๏ธ Project renamed to IncottHIDApp โ€” matching the GitHub repo name. Binary, tooltip, tray dialog, registry key, single-instance mutex, User-Agent and log prefix all now use IncottHIDApp consistently.

๐Ÿ”– Version in tray tooltip โ€” hover the tray icon to see the running version at a glance. Before device connect: IncottHIDApp v0.4.0. After connect: IncottHIDApp v0.4.0 โ€” G23V2 (or your model).

โš ๏ธ Upgrade notes

  • ๐Ÿ“ฆ The binary is now IncottHIDApp.exe (was IncottDriver.exe). Download the new file from this release and replace your existing IncottDriver.exe.
  • ๐Ÿงน Autostart migrates automatically. If you had autostart enabled in the old build, the legacy registry entry IncottDriver under HKCU\Software\Microsoft\Windows\CurrentVersion\Run is silently removed the first time you toggle autostart in the new build (or on every launch if autostart is enabled). No stale entries, no manual cleanup.
  • ๐Ÿ—‚๏ธ Your settings.json and incott.log are unchanged โ€” same filenames, same location next to the executable.

๐Ÿ”ง Under the hood

  • ๐Ÿ Single-instance mutex name changed to Global\IncottHIDApp-{GUID} (same GUID). During the brief upgrade window an old and a new instance could theoretically coexist; kill the old one before running the new one if both are open.
  • ๐Ÿ“ก Update-check User-Agent is now IncottHIDApp (visible in GitHub's API logs if you care about that kind of thing).
  • ๐Ÿ“˜ Go module renamed from incott-driver to incotthidapp. Internal only โ€” doesn't affect users.

๐Ÿ“ฆ Install

Download IncottHIDApp.exe below and run it. It will pick up your existing settings.json automatically. If you had autostart enabled, you can toggle it once from the tray menu to refresh the registry entry (or just leave it โ€” the legacy key is removed on every startup).

v0.3.0

15 Apr 17:01

Choose a tag to compare

โœจ What's new

๐Ÿ”’ Single-instance guard โ€” only one copy of IncottDriver can run at a time per machine. Launching a second copy now shows a friendly "already running" dialog and exits cleanly, without touching settings.json or incott.log.

Why it matters

Before this release, nothing stopped two (or more) copies from running simultaneously โ€” typically from autostart + manual launch, or a double-click on a pinned shortcut. Multiple instances would fight over the HID handle and cause:

  • ๐ŸŽ›๏ธ UI showing settings that didn't match the actual mouse state
  • โšก Race conditions when applying presets
  • ๐ŸŽฎ False auto-boost triggers from duplicate process scans
  • ๐ŸงŠ Duplicate tray icons

How it works

  • ๐Ÿ”‘ Named Windows kernel mutex with a fixed GUID: Global\IncottDriver-{b5a1c2f8-...}
  • ๐Ÿ The check runs as the very first statement in main(), before path resolution, config load, logger init, or any HID access
  • ๐Ÿงน Kernel auto-releases the mutex on every exit path โ€” clean shutdown, taskkill /F, BSOD, power loss โ€” so there's no stale lock file to worry about
  • ๐Ÿ›ก๏ธ Fail-open: if CreateMutexW itself fails for an unexpected reason, the app still starts so you're never locked out

๐Ÿ“ฆ Install

Download IncottDriver.exe below and run it โ€” no installer, just replaces the previous version in place. Your existing settings.json and autostart entry are preserved.

v0.2.1

12 Apr 17:02

Choose a tag to compare

What's Fixed

๐Ÿ” Security

  • openBrowser now uses rundll32 url.dll instead of cmd /c start to avoid shell metacharacter interpretation. Only https:// URLs are accepted.
  • promptForExe escapes single quotes before interpolating the saved target value into the PowerShell InputBox call, preventing PowerShell injection from a crafted settings.json.
  • isValidRepo now uses a regex allowlist to reject path traversal and URL manipulation characters in the update_repo config value.

๐Ÿ“ Paths (important for autostart)

  • settings.json and incott.log now always live next to the executable regardless of the process's current working directory. Previously, when launched from Windows autostart (CWD = System32), these files were created in the wrong location.

๐Ÿคผโ€โ™‚๏ธConcurrency

  • The mouse initialization sequence in mouseWorker now holds a mutex across all feature report reads, preventing concurrent SendFeatureReport calls from the UI goroutine on the same HID handle.
  • gameMonitorWorker no longer saves the stale default 1000 Hz as savedHz when the game is already running before the device has reported its actual polling rate.

๐Ÿชจ Robustness

  • readDeviceSetting now checks the SendFeatureReport error and returns immediately on failure (e.g. device disconnected mid-initialization).
  • saveConfig now logs errors when os.WriteFile fails instead of silently discarding them.

๐Ÿ“ Tests

  • Added TestEscapePowerShellSingleQuoted for the PowerShell escape helper
  • Expanded TestIsValidRepo with injection characters (../, ?, #, @, spaces)

Full changelog: v0.2.0...v0.2.1

v0.2.0

12 Apr 13:20

Choose a tag to compare

What's New

๐Ÿš€ Update checker

The app now checks GitHub Releases on startup and shows a menu item
when a new version is available. Click it to open the release page
in your browser. Configurable repository via update_repo setting
(useful for forks).

๐Ÿ“œ License

MIT License file added to the repo.

๐Ÿ“ Configuration example

Added settings.json.example with all available fields and default values.

๐Ÿ“– Documentation

  • Expanded README: features, build instructions, screenshots
  • Added note that the app was built by reverse-engineering the WebHID driver
  • Corrected clone URL and build flags

๐Ÿ› Fixes

  • Typo: "recomm" โ†’ "recommended" in Angle Snapping / Ripple Control menu labels

Supported mice: Ghero, G23, G24, G23V2, Zero 29, Zero 39 (auto-detected from HID product name)

Full changelog: v0.1.0...v0.2.0

v0.1.0

12 Apr 06:34

Choose a tag to compare