Skip to content

Releases: Wintersta7e/AiGameCompanion

v1.2.0 — Multi-Provider AI

04 Apr 19:30
3328ccb

Choose a tag to compare

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_delay config 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

14 Mar 17:58
8306af4

Choose a tag to compare

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:default capability 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() on canonicalize() replaced with error propagation

Diagnostics & UX

  • All eprintln! in overlay replaced with tracing::warn! (now visible in companion.log)
  • DwmGetWindowAttribute for accurate windowed-game screenshots (excludes shadow/chrome)
  • scan_on_startup setting now actually works
  • Settings save errors shown inline
  • Unimplemented settings labeled "coming soon"

Dependencies

  • Bumped: once_cell, image, tracing-subscriber, clap, svelte, svelte-check