* Add custom macOS-style title bar
Introduces a custom MacOSTitleBar component for macOS, updates the Electron window to use 'hiddenInset' titleBarStyle, and adjusts App.vue to conditionally render the new title bar and add appropriate padding. This improves the native look and feel on macOS platforms.
* Improve macOS Dock behavior and tray settings
fix(macOS): resolve tray-related issues and set tray minimization as default
1. Fix the problem where the app couldn't be reopened after clicking the window's close button (red light) when "minimize to tray" was enabled. Ensured proper window visibility control via `mainWindow.show()` on Dock activation.
2. Resolve the issue where the app couldn't be closed from the Dock when "minimize to tray" was enabled. Added explicit quit state handling (`appIsQuitting = true`) in `before-quit` to bypass tray minimization logic during Dock-initiated quits.
3. Set "minimize to tray" as the default configuration for macOS to align with platform conventions. Implemented platform-specific default values in state initialization.
These changes improve macOS compatibility by fixing critical tray interaction issues and aligning default behavior with native user expectations.
* Fix process detection and resource leaks
Critical bugs:
- Fix VRChat detection by removing .exe from process name
Performance:
- Use GetProcessesByName() to avoid scanning all processes
- Optimize IsSteamVRRunning to check exact matches first
Resource management:
- Add Process.Dispose() calls to prevent handle leaks
- Standardize on Dispose() instead of Close()
* Fix broken ExitCode check in StartGame
Remove ExitCode check that always threw an exception. You cannot access
Process.ExitCode on a process that is still running~ it throws
InvalidOperationException. Steam stays running after starting VRChat,
so this check always failed.
Simplified to return true when Process.Start() succeeds, since Steam
handles VRChat launch asynchronously and there's no way to verify
immediate success.
Also changed Close() to Dispose() for consistency.