From 65198f6082596d71a6e30f610efdd575934eb422 Mon Sep 17 00:00:00 2001 From: Souvik Kumar Date: Wed, 12 Aug 2026 22:44:35 +0530 Subject: [PATCH] fix: add clipboard addon to docker container terminal The docker container terminal did not load xterm's ClipboardAddon, so pasting into it (e.g. a MariaDB shell) broke the cursor and left the pasted text uneditable. The web server terminal already loads this addon; this brings the container terminal in line with it. Also dispose the terminal on cleanup so its addons don't leak on remount. Fixes #5065 --- .../components/dashboard/docker/terminal/docker-terminal.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/dokploy/components/dashboard/docker/terminal/docker-terminal.tsx b/apps/dokploy/components/dashboard/docker/terminal/docker-terminal.tsx index d185e65b1..75ddecbe9 100644 --- a/apps/dokploy/components/dashboard/docker/terminal/docker-terminal.tsx +++ b/apps/dokploy/components/dashboard/docker/terminal/docker-terminal.tsx @@ -3,6 +3,7 @@ import React, { useEffect, useRef } from "react"; import { FitAddon } from "xterm-addon-fit"; import "@xterm/xterm/css/xterm.css"; import { AttachAddon } from "@xterm/addon-attach"; +import { ClipboardAddon } from "@xterm/addon-clipboard"; import { useTheme } from "next-themes"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { fixMacOsAltKeys } from "@/lib/terminal-keyboard"; @@ -46,6 +47,8 @@ export const DockerTerminal: React.FC = ({ const ws = new WebSocket(wsUrl); const addonAttach = new AttachAddon(ws); + const clipboardAddon = new ClipboardAddon(); + term.loadAddon(clipboardAddon); fixMacOsAltKeys(term); // @ts-ignore term.open(termRef.current); @@ -55,6 +58,7 @@ export const DockerTerminal: React.FC = ({ addonFit.fit(); return () => { ws.readyState === WebSocket.OPEN && ws.close(); + term.dispose(); }; }, [containerId, activeWay, id]);