Skip to content

GConnect v2.2.2 - Bidirectional Audio Streaming, Self-Healing Docker & IDE Enhancements

Choose a tag to compare

@At-vy At-vy released this 31 Oct 05:28
· 3 commits to v2 since this release

GConnect v2.2.2

What's New in v2.2.2

🎙️ Client-to-Container Bidirectional Audio & Microphone Streaming

  • Ultra-Low Latency PCM Streaming: AudioWorklet-based fractional linear downsampling of client microphone input to 16,000 Hz 16-bit mono PCM, streamed over authenticated binary WebSocket (/ws/audio).
  • Container Audio Playback: Plays container sound output (TTS, voice agents, etc.) back through user's chosen client speakers/headphones via AudioContext targeting sinkId with overrun ceiling management.
  • Virtual ALSA Device in Docker: Configured /etc/asound.conf mapping default capture and playback to container overlayfs FIFOs (/tmp/.gconnect_audio/). Standard Python libraries (speech_recognition, sounddevice, pyaudio) detect and use the virtual audio bridge out-of-the-box without code changes.
  • Google Meet-Style Audio UI: Added [🎙️ Audio] top toolbar button and settings modal with microphone & speaker dropdowns, hardware mute toggles, live VU meter, and 1-click active mic cluster takeover.
  • Audio Protection & Network Resilience: 50ms pre-buffering circular jitter buffer (AudioRingBuffer) and software audio ducking gate (DuckingGate) applying -18dB attenuation during container playback to eliminate feedback loops.
  • Verification Tool: Included voice_test.py at workspace root supporting 3-second recording and dual-tone harmonic chime playback.

⚡ GPU Share Toggle Resilience & Token Persistence

  • Fixed 'Applying Configuration...' Freeze: frontend/js/share.js now awaits backend_info to ensure the sidecar has restarted and passed its health check before refreshing dashboard state, updating credentials cleanly.
  • Port 8000 Release Cooldown: In src-tauri/src/main.rs, added an 800ms cooldown before restarting the backend on mode changes, allowing the Windows socket stack to release port 8000.
  • Auth Token File Reuse: In backend/auth.py, get_token() now reuses the existing auth_token file if present rather than overwriting it, preserving credentials across sidecar restarts.

🔄 Self-Healing Docker Dynamic Reconnect

  • Dynamic Reconnect: GConnect automatically detects when Docker Desktop is launched after GConnect is already running without needing an app restart.
  • Graceful Disconnect Recovery: If Docker stops or restarts, GConnect safely transitions container state to offline and reconnects automatically upon the next health check.
  • Throttled Probing: Reconnection attempts are protected by thread locks and cooldown timers to prevent connection spamming.

🛡️ Physical NVIDIA GPU Validation before DeviceRequest

  • Hardware-Level Verification: Directly queries pynvml, torch.cuda, and nvidia-smi to verify an actual physical NVIDIA adapter exists before issuing Docker --gpus all / DeviceRequest.
  • Eliminates 500 Daemon Crashes: Prevents nvidia-container-cli: initialization error: nvml error: no adapters were found crashes on systems with NVIDIA toolkits/CDI specs installed but running on Intel/AMD GPUs or VMs, starting seamlessly in CPU mode.

🌐 Desktop WebView2 CORS Preflight Header Fix

  • Permit X-Client-Id: Added X-Client-Id to CORS_ALLOW_HEADERS and _tauri_cors_headers in backend/auth.py.
  • Eliminates Blocked APIs: Resolves preflight OPTIONS rejections for /api/files and /api/container/status inside the desktop app, preventing "Error loading files" and false "Docker is not running" warnings.

📱 Real-Time Connected Devices Tracker for GPU Sharing

  • Thread-Safe Connection Monitor: Added ConnectionTracker in backend/connection_tracker.py that tracks all connected client machines in real time.
  • Physical Device Grouping: Persistent gconnect_client_id prevents duplicate tab/terminal counts from inflating the connected device numbers.
  • Local vs Remote Classification: Accurately distinguishes This PC (Host) from Remote Teammates (LAN/Tailscale).
  • Client OS & Platform Detection: Automatically identifies client devices (e.g. Mac (Chrome), Windows PC (Edge), Linux (Firefox)).
  • Host Dashboard UI: Live "Connected Devices" card with device count badge (#shareBtnBadge), status bar indicator (#statusBarClients), and expandable client list.

🎨 High-Contrast Shell Command Echo & PS1 Prompt

  • Vibrant PS1 Shell Prompt: Bold Cyan host (\e[1;36m), Bold Green path (\e[1;32m), and Bold White command cursor (\e[1;37m).
  • Command & Output Differentiation: Active commands echo in Bold White with automatic debug trap resetting command outputs to crisp, readable gray.
  • Windows Host CMD & Bash Support: Fallback ANSI prompt configurations for Windows PTY and host bash.

✨ Monaco Editor Cursor Pulse & Fluid Caret

  • Enabled cursorBlinking: "blink" for clear cursor visibility.
  • Enabled cursorSmoothCaretAnimation: "on" for fluid caret navigation across lines and mouse positioning.

📂 Workspace File Import & Upload API

  • Added "Import File(s)" button with multi-file picker directly in the workspace explorer header.
  • Implemented POST /api/files/upload backend endpoint with path traversal defense and filename sanitization.

📐 VS Code-Style Bottom Status Bar (24px Elevation)

  • Integrated dedicated 24px bottom status bar (#appStatusBar) keeping terminal text cleanly elevated above the Windows taskbar.
  • Real-time line/column cursor tracker, file encoding, language mode, Docker sandbox state, and problems indicator.

🖱️ Smooth Terminal Scrollbar & Mouse Context Menu

  • Fluid terminal scrolling (smoothScrollDuration: 150) matching Monaco.
  • Right-click terminal context menu (Copy, Paste, Select All, Clear) + copy-on-select.

Verification & Checksums

  • Installer: GConnect_2.2.2_x64-setup.exe
  • SHA-256: EC7BE84363D155E681135EF47E4CB99FB5C7881C162E9893FBDF9F2B726B40A2
  • File Size: ~35.24 MiB (36,949,968 bytes)