From 65198f6082596d71a6e30f610efdd575934eb422 Mon Sep 17 00:00:00 2001 From: Souvik Kumar Date: Wed, 12 Aug 2026 22:44:35 +0530 Subject: [PATCH 1/3] 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]); From 26c871946ab7e0143f596345fcd87c34c8827413 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 19:03:06 +0000 Subject: [PATCH 2/3] [autofix.ci] apply automated fixes --- .../settings/servers/actions/toggle-docker-cleanup.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/servers/actions/toggle-docker-cleanup.tsx b/apps/dokploy/components/dashboard/settings/servers/actions/toggle-docker-cleanup.tsx index e12cd60e5..54165c8d1 100644 --- a/apps/dokploy/components/dashboard/settings/servers/actions/toggle-docker-cleanup.tsx +++ b/apps/dokploy/components/dashboard/settings/servers/actions/toggle-docker-cleanup.tsx @@ -70,9 +70,9 @@ export const ToggleDockerCleanup = ({ serverId }: Props) => {

Runs a full Docker cleanup daily, pruning stopped containers, - unused images, build cache, and system resources. This - may remove images built for Compose services that run on-demand - (backup runners, cron jobs, one-off tasks). + unused images, build cache, and system resources. This may remove + images built for Compose services that run on-demand (backup + runners, cron jobs, one-off tasks).

For custom cleanup strategies, use{" "} From 795f6f094e7dc332757b337240fb7414118527d8 Mon Sep 17 00:00:00 2001 From: Narciso Date: Wed, 12 Aug 2026 16:28:06 -0400 Subject: [PATCH 3/3] test: fix stale composeFile mock in domain enabled-filter test --- .../compose/domain/enabled-filter.test.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/apps/dokploy/__test__/compose/domain/enabled-filter.test.ts b/apps/dokploy/__test__/compose/domain/enabled-filter.test.ts index 1cb696e07..580a33d96 100644 --- a/apps/dokploy/__test__/compose/domain/enabled-filter.test.ts +++ b/apps/dokploy/__test__/compose/domain/enabled-filter.test.ts @@ -3,9 +3,9 @@ import type { Domain } from "@dokploy/server/services/domain"; import { addDomainToCompose } from "@dokploy/server/utils/docker/domain"; import { beforeEach, describe, expect, it, vi } from "vitest"; -// addDomainToCompose reads the compose file from disk through loadDockerCompose -// (existsSync + readFileSync). Mock node:fs so the function runs its real -// label-generation logic against an in-memory compose spec. +// With sourceType "raw", addDomainToCompose parses compose.composeFile +// directly instead of reading from disk, so baseCompose exposes it as a +// getter that always reflects the current composeYaml for each test case. const baseComposeYaml = ` services: frigate: @@ -13,15 +13,6 @@ services: `; let composeYaml = baseComposeYaml; -vi.mock("node:fs", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, - existsSync: vi.fn(() => true), - readFileSync: vi.fn(() => composeYaml), - }; -}); - const baseCompose = { appName: "test-app", composeType: "docker-compose", @@ -31,6 +22,9 @@ const baseCompose = { isolatedDeployment: false, randomize: false, suffix: "", + get composeFile() { + return composeYaml; + }, } as unknown as Compose; const baseDomain: Domain = {