Repository navigation
v2.0.0-Windows
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.