Roadmap

Version 2026.1: (15% done)

  • Port the entire framework on WASM / Emscripten (done)
  • Use websocket and https for both native and web-broweser clients (done)
  • Implement WebGL in a new OpenGL component (wip)
  • Use OpenAL in a web-browser instead of OpenALSoft (done)
  • Port FFmpeg encoder / decoder on Linux
  • Implement hardware decoding on Linux with vaapi
  • Port NvENC encoder on Linux
  • Port AMF encoder on Linux
  • Screen capture with NvFBC
  • Handle multiple monitors on the same client
  • Virtual sessions on Linux
  • Multiple user sessions on Windows
  • Support gamepad

Version 2026.0: (100% done)

  • Implement file transfer channel (done)
  • Support cross-platform copy&paste of files (done)
  • Hardware encoding / decoding on MacOS (done)
  • Support screen capture on Wayland (done)
  • Support input injection on Wayland (done)
  • Support clipboard on Wayland (done)

Version 2025.1: (100% done)

  • Support MacOS (done)
  • Support Linux on ARM (done)
  • Support Wayland on TMD Viewer (done)
  • Implement cross-platform custom decoration (done)
  • Extend support to Windows Vista (done)
  • Introduce 32-bit build on Windows (done)
  • Fix crash on intel CPUs where AVX is not supported (done)
  • Fix validation errors on Vulkan (done)
  • Downgrade minimum Vulkan version from 1.2 to 1.0 (done)
  • Fix brightness and compatibility issues with via-software Vulkan (done)
  • Remove unused stuff from dependencies (done)

Version 2025.0: (100% done)

  • Create a dedicated website in this domain (done)
  • Support mpeg1video, vp9 and av1 codec with FFmpeg libraries (done)
  • Implement lossless codec (done)
  • Support quality updates (done)
  • Handle mouse cursor (done)
  • Implement Audio channel (done)
  • Increment Linux support (done)
  • Application settings in .conf file, environment variables and registry keys (done)
  • Implement server/agent splice to support session 0 and user sessions (done)
  • Create a windows service and manage console sessions (done)
  • Support encrypted connections with TLS / SSL (done)
  • Implement user and system authentication (done)
  • Implement hardware decoding on Windows / d3d11va (done)
  • Implement hardware encoding with nvenc (done)
  • Implement hardware encoding with amf (done)
  • Implement clipboard channel (done)
  • Improve viewer’s GUI (done)
  • Implement relative mouse (done)
  • Create installer on Windows (done)
  • Finalize messages and settings (done)
  • Server installer script for Linux (done)
  • Support virtual monitors with NvAPI (done)
  • Support virtual monitors with ADL (done)
  • Support multiple adapters (done)

Version 0.2 (beta): (100% done)

  • Write multi-stream TCP message transport with TBF objects (done)
  • Implement a simple client / server application with handshake (done)
  • Implement a first connection model with authentication for multiple clients (done)
  • Capture the screen on the server with GDI (done)
  • Implement a simple screen capture component with a slicer per client (done)
  • Compress the screen in jpeg with stb_image and send to the connected clients (done)
  • Implement a frames-in-transit logic to avoid accumulation (done)
  • Capture the screen on the server with Xlib on Linux (done)
  • Introduce main channel, display channel and input channel (done)
  • Capture mouse inputs on the client and send to the server (done)
  • Implement a strategy to translate between different keyboard models (done)
  • Capture keyboard input, send to the client and inject (done)
  • Create plugin with turbo-jpeg compression and decompression (done)
  • Implement screen capture with Desktop Duplication (done)
  • Optimize async pattern to reduce CPU usage on low-end machines (done)

Ideas for the future (probably 2026.2 or later):

  • Support touch screen
  • UDP transport on native viewer
  • Support Android
  • Support iOS
  • Develop TMD SDK