Releases: Wintersta7e/AiGameCompanion
Releases · Wintersta7e/AiGameCompanion
v1.2.0 — Multi-Provider AI
What's New
Multi-Provider AI
- Switch between Gemini, Claude, and OpenAI mid-game from a dropdown in the overlay
- Claude screenshot support — attach the current game frame for visual analysis
- No extra API keys — Claude and OpenAI use your existing CLI subscriptions
DX12 Stability
- Hardened command queue fallback (filters non-DIRECT queues, frequency tracking)
- New
hook_delayconfig for games with long DX12 init (e.g. Horizon Forbidden West) catch_unwind+ 5s retry on DX12 hook build
Performance
- Zero mutex locks on render hot path when overlay is hidden
- Atomic fast-paths for capture state, health check, and init status
- Static HTTP client (was per-request allocation)
Deep Review (26 fixes)
- Cancel now actually kills proxy subprocesses (was no-op due to generation race)
- Child process leak on error paths fixed
- Stale screenshot after cancel+resend race prevented
- Model name validation in proxy (prevents URL path traversal)
- SSE stream capped at 2MB (OOM protection)
- Unicode sanitizer for ImGui Latin-1 font (em dashes, smart quotes, TM/C/R symbols)
- Translation disabled by default (F10 conflicted with game keybindings)
Dependency Updates
- tokio 1.51.0, toml 1.0.7, TypeScript 6.0, Svelte 5.55, Vite 8.0.3
Full changelog: v1.1.0...v1.2.0
v1.1.0 — Code Review Release
What's New
Comprehensive code review addressing 28 issues across memory safety, performance, security, and correctness.
Critical Fixes
- No more frame hitches on screenshot — capture moved off the render thread
- Panic safety — tokio runtime failure degrades gracefully instead of crashing the game
- Reduced lock contention — AtomicBool for visibility, bounded message history (100 max), pre-captured data before async tasks
Security
- SSE stream size limit (2MB) prevents OOM from malicious proxies
- Model name validated to prevent URL path traversal
- Non-Steam exe paths validated before launch
- Removed overly broad
shell:defaultcapability from launcher - Backend duplicate-injection guard prevents double-inject on reload
Bug Fixes
- SSE byte buffer now drained after stream ends (final line no longer dropped)
- History trim correctly skips all leading Assistant messages (prevents API 400)
- Translation messages excluded from chat context (no more history pollution)
- Watch mode correctly tracks multiple PIDs per process name
- Vendored hudhook:
unwrap()oncanonicalize()replaced with error propagation
Diagnostics & UX
- All
eprintln!in overlay replaced withtracing::warn!(now visible in companion.log) DwmGetWindowAttributefor accurate windowed-game screenshots (excludes shadow/chrome)scan_on_startupsetting now actually works- Settings save errors shown inline
- Unimplemented settings labeled "coming soon"
Dependencies
- Bumped: once_cell, image, tracing-subscriber, clap, svelte, svelte-check