From e2e03be2dd67d04967f304d257effe8a131e7742 Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Thu, 12 Mar 2026 17:27:19 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20RDP=20frontend=20=E2=80=94=20Guacamole?= =?UTF-8?q?=20client=20with=20custom=20JSON=20WebSocket=20tunnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - useRdp.ts: JsonWsTunnel class extends Guacamole.Tunnel to bridge guacamole-common-js (expects raw protocol) with our JSON gateway (consistent with SSH/SFTP message envelope pattern). Parses length-prefixed Guacamole instructions, dispatches to Guacamole.Client. Handles mouse/keyboard input, clipboard send, and session lifecycle. - RdpCanvas.vue: full-size container that mounts the Guacamole display canvas. Calls useRdp().connectRdp() on mount, cleans up on unmount. Exposes sendClipboard() and disconnect() for toolbar integration. - RdpToolbar.vue: auto-hiding floating toolbar (3s idle timeout) with clipboard paste dialog, fullscreen toggle (HTML5 Fullscreen API), settings panel stub, and disconnect button. - SessionContainer.vue: renders RdpCanvas + RdpToolbar when session.protocol === 'rdp', replacing the Phase 3 placeholder. Co-Authored-By: Claude Opus 4.6 --- frontend/components/rdp/RdpCanvas.vue | 66 +++++ frontend/components/rdp/RdpToolbar.vue | 226 ++++++++++++++++ .../components/session/SessionContainer.vue | 37 ++- frontend/composables/useRdp.ts | 243 ++++++++++++++++++ 4 files changed, 569 insertions(+), 3 deletions(-) create mode 100644 frontend/components/rdp/RdpCanvas.vue create mode 100644 frontend/components/rdp/RdpToolbar.vue create mode 100644 frontend/composables/useRdp.ts diff --git a/frontend/components/rdp/RdpCanvas.vue b/frontend/components/rdp/RdpCanvas.vue new file mode 100644 index 0000000..0aa913b --- /dev/null +++ b/frontend/components/rdp/RdpCanvas.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/frontend/components/rdp/RdpToolbar.vue b/frontend/components/rdp/RdpToolbar.vue new file mode 100644 index 0000000..32b9f48 --- /dev/null +++ b/frontend/components/rdp/RdpToolbar.vue @@ -0,0 +1,226 @@ + + +