Release v2.0.3: Native Linux Audio Architecture, Global Translations, and UX Overhaul
This release marks a large foundational shift for the Nearsec Together architecture. Version 2.0.3 moves us away from legacy fallbacks and hardcoded strings, introducing a robust, native audio pipeline for Linux and laying the groundwork for a globally accessible interface.
Alongside these core engine upgrades, this patch brings critical quality-of-life fixes to the web viewer and ensures maximum compatibility across diverse hardware setups.
Native PipeWire Audio & Routing
The Linux audio capture pipeline has been completely rewritten. We have stripped out the reliance on the Python OS-level audio fallback and fully integrated native PipeWire capture.
- Virtual Cable Generation: The host now reliably generates and targets
NearsecVirtualsinks, allowing hosts to isolate game audio from desktop notifications seamlessly. - Hardware Voice Routing: Viewer voice chat is now explicitly routed directly to the host's physical hardware sink. This bypasses the virtual cable loopback, entirely eliminating the stream echo that previously occurred when viewers spoke.
- Stream Amplification: The underlying Web Audio API gain nodes have been recalibrated, applying a clean 1.4x amplification to the desktop audio before it hits the WebRTC stream, ensuring viewers receive a full, loud signal.
Global Translations & i18n Support
Thanks to a community pull request, the entire frontend interface has been thoroughly decentralized from hardcoded English strings.
- Dynamic Translation Map: Both the Host and Viewer clients now utilize a bulletproof, asynchronous
I18N.t()translation map. - Language Support: This framework allows the interface to seamlessly swap languages without breaking UI layouts, officially introducing community-driven localization (starting with Portuguese) to the project.
UI & Mobile Experience Fixes
We have squashed several long-standing frontend quirks that degraded the experience for mobile viewers and desktop users alike.
- Mobile Sidebar Bug Resolved: The slide-out control bar no longer gets permanently "stuck" open on iOS and Android devices. Touchscreen interfaces now bypass legacy CSS hover states in favor of dedicated swipe and tap-away event listeners.
- Smart HUD Auto-Hide: The top status bar in the viewer client now operates on a smart timer. It will display for exactly 10 seconds when a stream connects, then fade away for maximum immersion. It can be summoned back for 3 seconds by aggressively moving the mouse upward, ensuring it never obstructs the gameplay canvas.
- Legacy Host Parity: Hardware H.265 encoding support has been successfully backported and exposed in the legacy Host UI drop-down menus.
Under the Hood
- Bulletproofed the JavaScript execution order to prevent cascading failures during WebSocket initializations.
- Fixed an async race condition where translation UI elements would attempt to render before the language JSON dictionaries finished fetching.
- Hardened the Headless Arcade Worker boot sequence to ensure it properly locks onto isolated virtual displays and handles automatic tunneling without manual intervention.