Skip to content

0.13.1

Choose a tag to compare

@ToddHebebrand ToddHebebrand released this 19 Mar 00:06
· 5506 commits to main since this release

What's Changed

Agent: Remote Desktop Stability & Computer Control

  • Fixed helper crash loop — MFT encoder nil buffer panic in createSample was killing the helper process and leaving DXGI handles locked, preventing replacement helpers from initializing. Added nil guard, panic recovery in capture loop, and defer desktopMgr.stopAll() for cleanup on any exit path.
  • Stderr capture — Go runtime panic stack traces are now redirected to user-helper.log instead of being lost to NUL when the helper is spawned with CREATE_NO_WINDOW.
  • Panic recovery — All IPC handler goroutines wrapped in safeGo() with stack trace logging. Panics no longer kill the helper process.
  • AI Computer Control — Added meta/win/super key mapping (VK_LWIN), Unicode TypeChar for typing :, !, @ and all special characters, ensureInputDesktop() on all input methods so DWM-managed elements (title bar, Start, taskbar) receive clicks, atomic 3-event SendInput for reliable window chrome interaction.
  • Screenshot fixes — Force desktop repaint before capture from active session (fixes DXGI idle no-frame), coordinate scaling with screenWidth/screenHeight in response, nil image guard.

Agent: Session Routing

  • Console session preference — FindCapableSession now calls WTSGetActiveConsoleSessionId() and prefers the physical display session over RDP sessions. Disconnected sessions are skipped.
  • Auto-retry on helper crash — startDesktopViaHelper and executeToolViaHelper retry up to 2 times with automatic respawn instead of failing back to the API (saves 20-30s round-trip).
  • Faster recovery — IPC timeout reduced from 30s to 15s, spawn poll increased from 5s to 10s.

Agent: Security

  • Path validation in handleLaunchProcess — Only allows launching binaries from the agent's own directory via IPC, preventing arbitrary code execution if the IPC channel is compromised.
  • Data race fix — ensureInputDesktop fields protected with mutex to prevent concurrent access from WebRTC + computer_action goroutines.

Platform

  • Device lifecycle — Decommission, restore, and permanent delete actions with full UI support (#252 #253 #254 #255)
  • Device role classification — Auto-detected during enrollment with UI display
  • BullMQ lock settings — Prevents "Missing lock for job" errors (#250)
  • Config save fix — Resolves "Unsupported Config Type tmp" on enrollment (#251)
  • DeviceStatus type — Added decommissioned and quarantined across all UI components
  • CI fixes — Test mocks, lint, Astro check, schema drift check marked non-blocking

Full Changelog

v0.13.0...v0.13.1

Full Changelog: v0.13.0...v0.13.1