From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 0DA111FF18C for <inbox@lore.proxmox.com>; Mon, 24 Mar 2025 16:04:21 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 830C11F0DC; Mon, 24 Mar 2025 16:04:17 +0100 (CET) From: Dominik Csapak <d.csapak@proxmox.com> To: pve-devel@lists.proxmox.com Date: Mon, 24 Mar 2025 16:03:36 +0100 Message-Id: <20250324150337.3221726-2-d.csapak@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324150337.3221726-1-d.csapak@proxmox.com> References: <20250324150337.3221726-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.578 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes PROLO_LEO3 0.1 Meta Catches all Leo drug variations so far SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH novnc 1/2] upgrade noVNC and patches to 1.6.0 X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> since we cannot use the bundler to bundle to commonjs/iife anymore (see https://github.com/novnc/noVNC/issues/1943) we now bundle it into an es module and load that in a top level script tag as a module. also removes the rounded corners on panels, and removes a superfluous <hr> in the settings list. Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- .../0001-add-PVE-specific-JS-code.patch | 101 ++++++++-------- ...002-add-custom-fbresize-event-on-rfb.patch | 13 +- ...nge-scaling-when-toggling-fullscreen.patch | 9 +- debian/patches/0004-add-pve-style.patch | 31 ++--- debian/patches/0005-remove-vnc-logos.patch | 17 +-- ...rectory-for-fetching-images-js-files.patch | 113 +++++++++++------- .../patches/0007-add-pve-vnc-commands.patch | 9 +- ...add-replaceable-snippets-in-vnc.html.patch | 15 ++- .../0009-decrease-animation-time.patch | 98 ++++++++------- debian/patches/0010-use-only-app.js.patch | 71 +++++++++-- .../0011-add-localCursor-setting-to-rfb.patch | 45 ++++--- .../0012-pass-custom-command-to-vnc.patch | 3 + ...ove-the-default-value-of-wsProtocols.patch | 8 +- ...passing-deprecated-upgrade-parameter.patch | 4 + ...-create-own-class-for-hidden-buttons.patch | 11 +- ...-button-on-isFullscreen-get-variable.patch | 3 + debian/patches/0017-make-error-hideable.patch | 5 +- ...ow-start-button-on-not-running-vm-ct.patch | 13 +- .../patches/0019-show-clipboard-button.patch | 3 + debian/rules | 2 +- novnc | 2 +- 21 files changed, 362 insertions(+), 214 deletions(-) diff --git a/debian/patches/0001-add-PVE-specific-JS-code.patch b/debian/patches/0001-add-PVE-specific-JS-code.patch index 655a2cd..926f0c0 100644 --- a/debian/patches/0001-add-PVE-specific-JS-code.patch +++ b/debian/patches/0001-add-PVE-specific-JS-code.patch @@ -13,9 +13,9 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> --- app/pve.js | 428 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - app/ui.js | 62 ++++++-- - vnc.html | 10 +- - 3 files changed, 485 insertions(+), 15 deletions(-) + app/ui.js | 60 +++++++- + vnc.html | 12 +- + 3 files changed, 491 insertions(+), 9 deletions(-) create mode 100644 app/pve.js diff --git a/app/pve.js b/app/pve.js @@ -453,7 +453,7 @@ index 0000000..1a062ad + }, +}; diff --git a/app/ui.js b/app/ui.js -index f27dfe2..f2f194c 100644 +index 51e57bd..bd1561c 100644 --- a/app/ui.js +++ b/app/ui.js @@ -17,6 +17,7 @@ import keysyms from "../core/input/keysymdef.js"; @@ -464,16 +464,16 @@ index f27dfe2..f2f194c 100644 const PAGE_TITLE = "noVNC"; -@@ -57,6 +58,8 @@ const UI = { - // Render default UI and initialize settings menu - start() { +@@ -72,6 +73,8 @@ const UI = { + }); + } + UI.PVE = new PVEUI(UI); + UI.initSettings(); // Translate the DOM -@@ -108,6 +111,9 @@ const UI = { +@@ -121,6 +124,9 @@ const UI = { UI.addConnectionControlHandlers(); UI.addClipboardHandlers(); UI.addSettingsHandlers(); @@ -483,7 +483,7 @@ index f27dfe2..f2f194c 100644 document.getElementById("noVNC_status") .addEventListener('click', UI.hideStatus); -@@ -116,19 +122,15 @@ const UI = { +@@ -129,6 +135,8 @@ const UI = { UI.openControlbar(); @@ -492,37 +492,39 @@ index f27dfe2..f2f194c 100644 UI.updateVisualState('init'); document.documentElement.classList.remove("noVNC_loading"); - -- let autoconnect = WebUtil.getConfigVar('autoconnect', false); -- if (autoconnect === 'true' || autoconnect == '1') { -- autoconnect = true; +@@ -136,7 +144,9 @@ const UI = { + let autoconnect = UI.getSetting('autoconnect'); + if (autoconnect === 'true' || autoconnect == '1') { + autoconnect = true; - UI.connect(); -- } else { -- autoconnect = false; -- // Show the connect panel on first load unless autoconnecting -- UI.openConnectPanel(); -- } -+ UI.PVE.pveStart(function(password) { -+ UI.connect(undefined, password); -+ }); ++ UI.PVE.pveStart(function(password) { ++ UI.connect(undefined, password); ++ }); + } else { + autoconnect = false; + // Show the connect panel on first load unless autoconnecting +@@ -172,15 +182,16 @@ const UI = { + UI.setupSettingLabels(); - return Promise.resolve(UI.rfb); - }, -@@ -172,11 +174,12 @@ const UI = { /* Populate the controls if defaults are provided in the URL */ - UI.initSetting('host', window.location.hostname); - UI.initSetting('port', port); +- UI.initSetting('host', ''); +- UI.initSetting('port', 0); - UI.initSetting('encrypt', (window.location.protocol === "https:")); ++ UI.initSetting('host', window.location.hostname); ++ UI.initSetting('port', window.location.port); + UI.initSetting('encrypt', true); + UI.initSetting('password'); +- UI.initSetting('autoconnect', false); ++ UI.initSetting('autoconnect', true); UI.initSetting('view_clip', false); UI.initSetting('resize', 'off'); UI.initSetting('quality', 6); UI.initSetting('compression', 2); + UI.initSetting('autoresize', true); UI.initSetting('shared', true); + UI.initSetting('bell', 'on'); UI.initSetting('view_only', false); - UI.initSetting('show_dot', false); -@@ -357,6 +360,7 @@ const UI = { +@@ -360,6 +371,7 @@ const UI = { UI.addSettingChangeHandler('resize'); UI.addSettingChangeHandler('resize', UI.applyResizeMode); UI.addSettingChangeHandler('resize', UI.updateViewClip); @@ -530,7 +532,7 @@ index f27dfe2..f2f194c 100644 UI.addSettingChangeHandler('quality'); UI.addSettingChangeHandler('quality', UI.updateQuality); UI.addSettingChangeHandler('compression'); -@@ -411,6 +415,9 @@ const UI = { +@@ -414,6 +426,9 @@ const UI = { document.documentElement.classList.add("noVNC_connecting"); break; case 'connected': @@ -540,7 +542,7 @@ index f27dfe2..f2f194c 100644 document.documentElement.classList.add("noVNC_connected"); break; case 'disconnecting': -@@ -418,6 +425,11 @@ const UI = { +@@ -421,6 +436,11 @@ const UI = { document.documentElement.classList.add("noVNC_disconnecting"); break; case 'disconnected': @@ -552,7 +554,7 @@ index f27dfe2..f2f194c 100644 break; case 'reconnecting': transitionElem.textContent = _("Reconnecting..."); -@@ -843,6 +855,7 @@ const UI = { +@@ -867,6 +887,7 @@ const UI = { UI.closePowerPanel(); UI.closeClipboardPanel(); UI.closeExtraKeys(); @@ -560,7 +562,7 @@ index f27dfe2..f2f194c 100644 }, /* ------^------- -@@ -1697,9 +1710,36 @@ const UI = { +@@ -1729,9 +1750,36 @@ const UI = { /* ------^------- * /EXTRA KEYS * ============== @@ -599,37 +601,42 @@ index f27dfe2..f2f194c 100644 if (!UI.rfb) return; UI.rfb.viewOnly = UI.getSetting('view_only'); diff --git a/vnc.html b/vnc.html -index 24a118d..e8a982f 100644 +index 82cacd5..458f4d0 100644 --- a/vnc.html +++ b/vnc.html -@@ -154,7 +154,7 @@ +@@ -205,7 +205,7 @@ <img alt="" src="app/images/settings.svg"> Settings </div> <ul> - <li> + <li style="display:none;"> - <label><input id="noVNC_setting_shared" type="checkbox"> Shared Mode</label> - </li> - <li> -@@ -164,16 +164,18 @@ - <li> - <label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label> + <label> + <input id="noVNC_setting_shared" type="checkbox" + class="toggle"> +@@ -227,6 +227,13 @@ + Clip to window + </label> </li> + <li> -+ <label><input id="noVNC_setting_autoresize" type="checkbox" /> Autoresize Window</label> ++ <label> ++ <input id="noVNC_setting_autoresize" type="checkbox" ++ class="toggle"> ++ Autoresize Window ++ </label> + </li> <li> - <label for="noVNC_setting_resize">Scaling Mode:</label> + <label for="noVNC_setting_resize">Scaling mode:</label> <select id="noVNC_setting_resize" name="vncResize"> -- <option value="off">None</option> -+ <option value="off">Off</option> - <option value="scale">Local Scaling</option> -- <option value="remote">Remote Resizing</option> +@@ -235,8 +242,7 @@ + <option value="remote">Remote resizing</option> </select> </li> - <li><hr></li> +- <li><hr></li> - <li> + <li style="display:none;"> <div class="noVNC_expander">Advanced</div> <div><ul> <li> +-- +2.39.5 + diff --git a/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch b/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch index 286d665..2fd12b0 100644 --- a/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch +++ b/debian/patches/0002-add-custom-fbresize-event-on-rfb.patch @@ -13,10 +13,10 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> 2 files changed, 21 insertions(+) diff --git a/app/ui.js b/app/ui.js -index f2f194c..f32b67c 100644 +index bd1561c..3726c8c 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -1076,6 +1076,7 @@ const UI = { +@@ -1116,6 +1116,7 @@ const UI = { UI.rfb.addEventListener("clipboard", UI.clipboardReceive); UI.rfb.addEventListener("bell", UI.bell); UI.rfb.addEventListener("desktopname", UI.updateDesktopName); @@ -24,7 +24,7 @@ index f2f194c..f32b67c 100644 UI.rfb.clipViewport = UI.getSetting('view_clip'); UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; -@@ -1735,6 +1736,16 @@ const UI = { +@@ -1775,6 +1776,16 @@ const UI = { document.getElementById('pve_commands_button').classList.remove("noVNC_selected"); }, @@ -42,10 +42,10 @@ index f2f194c..f32b67c 100644 * /PVE * ============== diff --git a/core/rfb.js b/core/rfb.js -index f2deb0e..37ba099 100644 +index e3266cc..23b436c 100644 --- a/core/rfb.js +++ b/core/rfb.js -@@ -2873,6 +2873,16 @@ export default class RFB extends EventTargetMixin { +@@ -3014,6 +3014,16 @@ export default class RFB extends EventTargetMixin { this._updateClip(); this._updateScale(); @@ -62,3 +62,6 @@ index f2deb0e..37ba099 100644 this._updateContinuousUpdates(); // Keep this size until browser client size changes +-- +2.39.5 + diff --git a/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch b/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch index 5cf14e5..b51cddc 100644 --- a/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch +++ b/debian/patches/0003-change-scaling-when-toggling-fullscreen.patch @@ -12,10 +12,10 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> 1 file changed, 11 insertions(+) diff --git a/app/ui.js b/app/ui.js -index f32b67c..04a5a2a 100644 +index 3726c8c..5773ddf 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -1294,6 +1294,13 @@ const UI = { +@@ -1334,6 +1334,13 @@ const UI = { } else if (document.msExitFullscreen) { document.msExitFullscreen(); } @@ -29,7 +29,7 @@ index f32b67c..04a5a2a 100644 } else { if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); -@@ -1304,7 +1311,11 @@ const UI = { +@@ -1344,7 +1351,11 @@ const UI = { } else if (document.body.msRequestFullscreen) { document.body.msRequestFullscreen(); } @@ -41,3 +41,6 @@ index f32b67c..04a5a2a 100644 UI.updateFullscreenButton(); }, +-- +2.39.5 + diff --git a/debian/patches/0004-add-pve-style.patch b/debian/patches/0004-add-pve-style.patch index acdfab9..6aeeac1 100644 --- a/debian/patches/0004-add-pve-style.patch +++ b/debian/patches/0004-add-pve-style.patch @@ -10,17 +10,17 @@ and fix the z-index of the connect overlay Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- - app/styles/pve.css | 42 ++++++++++++++++++++++++++++++++++++++++++ - vnc.html | 5 +++-- - 2 files changed, 45 insertions(+), 2 deletions(-) + app/styles/pve.css | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + vnc.html | 1 + + 2 files changed, 47 insertions(+) create mode 100644 app/styles/pve.css diff --git a/app/styles/pve.css b/app/styles/pve.css new file mode 100644 -index 0000000..eaeb5cb +index 0000000..a312a95 --- /dev/null +++ b/app/styles/pve.css -@@ -0,0 +1,42 @@ +@@ -0,0 +1,46 @@ +/* + * noVNC black CSS + * Copyright (C) 2012 Joel Martin @@ -63,19 +63,22 @@ index 0000000..eaeb5cb + border-color: rgba(0, 0, 0, 0.4); + background: #5BA8DF; +} ++ ++input:not(.toggle), button, div:not(#noVNC_container) { ++ border-radius: unset !important; ++} diff --git a/vnc.html b/vnc.html -index e8a982f..b54fe41 100644 +index 458f4d0..2a50991 100644 --- a/vnc.html +++ b/vnc.html -@@ -36,8 +36,9 @@ - <link rel="apple-touch-icon" sizes="180x180" type="image/png" href="app/images/icons/novnc-ios-180.png"> - - <!-- Stylesheets --> -- <link rel="stylesheet" href="app/styles/base.css"> -- <link rel="stylesheet" href="app/styles/input.css"> -+ <link rel="stylesheet" href="app/styles/base.css" /> -+ <link rel="stylesheet" href="app/styles/input.css" /> +@@ -40,6 +40,7 @@ + <link rel="stylesheet" href="app/styles/constants.css"> + <link rel="stylesheet" href="app/styles/base.css"> + <link rel="stylesheet" href="app/styles/input.css"> + <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> <!-- Images that will later appear via CSS --> <link rel="preload" as="image" href="app/images/info.svg"> +-- +2.39.5 + diff --git a/debian/patches/0005-remove-vnc-logos.patch b/debian/patches/0005-remove-vnc-logos.patch index 9395183..98a4878 100644 --- a/debian/patches/0005-remove-vnc-logos.patch +++ b/debian/patches/0005-remove-vnc-logos.patch @@ -7,19 +7,19 @@ to show the pve icon instead Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- - vnc.html | 22 ++++------------------ - 1 file changed, 4 insertions(+), 18 deletions(-) + vnc.html | 21 +++------------------ + 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/vnc.html b/vnc.html -index b54fe41..5c5549d 100644 +index 2a50991..f5e4a81 100644 --- a/vnc.html +++ b/vnc.html -@@ -15,26 +15,12 @@ +@@ -15,27 +15,12 @@ --> <title>noVNC</title> - <link rel="icon" type="image/x-icon" href="app/images/icons/novnc.ico"> -+ <meta charset="utf-8"> + <meta name="theme-color" content="#313131"> <!-- Apple iOS Safari settings --> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> @@ -43,5 +43,8 @@ index b54fe41..5c5549d 100644 + <meta name="apple-mobile-web-app-capable" content="yes" /> + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <!-- Stylesheets --> - <link rel="stylesheet" href="app/styles/base.css" /> - <link rel="stylesheet" href="app/styles/input.css" /> + <link rel="stylesheet" href="app/styles/constants.css"> + <link rel="stylesheet" href="app/styles/base.css"> +-- +2.39.5 + diff --git a/debian/patches/0006-change-source-directory-for-fetching-images-js-files.patch b/debian/patches/0006-change-source-directory-for-fetching-images-js-files.patch index 17586d7..680f6ea 100644 --- a/debian/patches/0006-change-source-directory-for-fetching-images-js-files.patch +++ b/debian/patches/0006-change-source-directory-for-fetching-images-js-files.patch @@ -9,81 +9,105 @@ also change the directory in the build script Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- app/ui.js | 4 ++-- - vnc.html | 54 +++++++++++++++++++++++++++--------------------------- - 2 files changed, 29 insertions(+), 29 deletions(-) + vnc.html | 63 +++++++++++++++++++++++++++---------------------------- + 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/app/ui.js b/app/ui.js -index 04a5a2a..18bac4b 100644 +index 5773ddf..01c7c77 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -73,7 +73,7 @@ const UI = { +@@ -58,7 +58,7 @@ const UI = { + + // Set up translations + try { +- await l10n.setup(LINGUAS, "app/locale/"); ++ await l10n.setup(LINGUAS, "/novnc/app/locale/"); + } catch (err) { + Log.Error("Failed to load translations: " + err); } +@@ -89,7 +89,7 @@ const UI = { // Try to fetch version number -- fetch('./package.json') -+ fetch('/novnc/package.json') - .then((response) => { - if (!response.ok) { - throw Error("" + response.status + " " + response.statusText); -@@ -1833,7 +1833,7 @@ const UI = { - - // Set up translations - const LINGUAS = ["cs", "de", "el", "es", "fr", "it", "ja", "ko", "nl", "pl", "pt_BR", "ru", "sv", "tr", "zh_CN", "zh_TW"]; --l10n.setup(LINGUAS, "app/locale/") -+l10n.setup(LINGUAS, "/novnc/app/locale/") - .catch(err => Log.Error("Failed to load translations: " + err)) - .then(UI.prime); - + try { +- let response = await fetch('./package.json'); ++ let response = await fetch('/novnc/package.json'); + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } diff --git a/vnc.html b/vnc.html -index 5c5549d..f081aee 100644 +index f5e4a81..9f4fac0 100644 --- a/vnc.html +++ b/vnc.html -@@ -22,17 +22,17 @@ +@@ -22,21 +22,20 @@ <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <!-- Stylesheets --> -- <link rel="stylesheet" href="app/styles/base.css" /> -- <link rel="stylesheet" href="app/styles/input.css" /> -+ <link rel="stylesheet" href="/novnc/app/styles/base.css" /> -+ <link rel="stylesheet" href="/novnc/app/styles/input.css" /> +- <link rel="stylesheet" href="app/styles/constants.css"> +- <link rel="stylesheet" href="app/styles/base.css"> +- <link rel="stylesheet" href="app/styles/input.css"> ++ <link rel="stylesheet" href="/novnc/app/styles/constants.css"> ++ <link rel="stylesheet" href="/novnc/app/styles/base.css"> ++ <link rel="stylesheet" href="/novnc/app/styles/input.css"> <link rel="stylesheet" href="/novnc/app/styles/pve.css" /> <!-- Images that will later appear via CSS --> - <link rel="preload" as="image" href="app/images/info.svg"> - <link rel="preload" as="image" href="app/images/error.svg"> - <link rel="preload" as="image" href="app/images/warning.svg"> +- +- <script type="module" crossorigin="anonymous" src="app/error-handler.js"></script> + <link rel="preload" as="image" href="/novnc/app/images/info.svg"> + <link rel="preload" as="image" href="/novnc/app/images/error.svg"> + <link rel="preload" as="image" href="/novnc/app/images/warning.svg"> -- <script type="module" crossorigin="anonymous" src="app/error-handler.js"></script> -- <script type="module" crossorigin="anonymous" src="app/ui.js"></script> + <script type="module" crossorigin="anonymous" src="/novnc/app/error-handler.js"></script> -+ <script type="module" crossorigin="anonymous" src="/novnc/app/ui.js"></script> - </head> + <script type="module"> +- import UI from "./app/ui.js"; +- import * as Log from './core/util/logging.js'; ++ import UI from "/novnc/app/ui.js"; ++ import * as Log from '/novnc/core/util/logging.js'; + + let response; + +@@ -48,7 +47,7 @@ + // cannot change. + + try { +- response = await fetch('./defaults.json'); ++ response = await fetch('/novnc/defaults.json'); + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } +@@ -59,7 +58,7 @@ + } - <body> -@@ -58,51 +58,51 @@ + try { +- response = await fetch('./mandatory.json'); ++ response = await fetch('/novnc/mandatory.json'); + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } +@@ -108,51 +107,51 @@ <hr> <!-- Drag/Pan the viewport --> - <input type="image" alt="Drag" src="app/images/drag.svg" + <input type="image" alt="Drag" src="/novnc/app/images/drag.svg" id="noVNC_view_drag_button" class="noVNC_button noVNC_hidden" - title="Move/Drag Viewport"> + title="Move/Drag viewport"> - <!--noVNC Touch Device only buttons--> + <!--noVNC touch device only buttons--> <div id="noVNC_mobile_buttons"> - <input type="image" alt="Keyboard" src="app/images/keyboard.svg" + <input type="image" alt="Keyboard" src="/novnc/app/images/keyboard.svg" - id="noVNC_keyboard_button" class="noVNC_button" title="Show Keyboard"> + id="noVNC_keyboard_button" class="noVNC_button" title="Show keyboard"> </div> <!-- Extra manual keys --> - <input type="image" alt="Extra keys" src="app/images/toggleextrakeys.svg" + <input type="image" alt="Extra keys" src="/novnc/app/images/toggleextrakeys.svg" id="noVNC_toggle_extra_keys_button" class="noVNC_button" - title="Show Extra Keys"> + title="Show extra keys"> <div class="noVNC_vcenter"> <div id="noVNC_modifiers" class="noVNC_panel"> - <input type="image" alt="Ctrl" src="app/images/ctrl.svg" @@ -126,7 +150,7 @@ index 5c5549d..f081aee 100644 </div> <input type="button" id="noVNC_shutdown_button" value="Shutdown"> <input type="button" id="noVNC_reboot_button" value="Reboot"> -@@ -111,13 +111,13 @@ +@@ -161,13 +160,13 @@ </div> <!-- Clipboard --> @@ -142,14 +166,14 @@ index 5c5549d..f081aee 100644 </div> <p class="noVNC_subheading"> Edit clipboard content in the textarea below. -@@ -127,18 +127,18 @@ +@@ -177,18 +176,18 @@ </div> <!-- Toggle fullscreen --> -- <input type="image" alt="Full Screen" src="app/images/fullscreen.svg" -+ <input type="image" alt="Fullscreen" src="/novnc/app/images/fullscreen.svg" +- <input type="image" alt="Full screen" src="app/images/fullscreen.svg" ++ <input type="image" alt="Full screen" src="/novnc/app/images/fullscreen.svg" id="noVNC_fullscreen_button" class="noVNC_button noVNC_hidden" - title="Full Screen"> + title="Full screen"> <!-- Settings --> - <input type="image" alt="Settings" src="app/images/settings.svg" @@ -164,16 +188,16 @@ index 5c5549d..f081aee 100644 </div> <ul> <li style="display:none;"> -@@ -230,7 +230,7 @@ +@@ -308,7 +307,7 @@ </div> - <!-- Connection Controls --> + <!-- Connection controls --> - <input type="image" alt="Disconnect" src="app/images/disconnect.svg" + <input type="image" alt="Disconnect" src="/novnc/app/images/disconnect.svg" id="noVNC_disconnect_button" class="noVNC_button" title="Disconnect"> -@@ -253,7 +253,7 @@ +@@ -331,7 +330,7 @@ <p class="noVNC_logo" translate="no"><span>no</span>VNC</p> <div> <button id="noVNC_connect_button"> @@ -182,7 +206,7 @@ index 5c5549d..f081aee 100644 </button> </div> </div> -@@ -323,8 +323,8 @@ +@@ -401,8 +400,8 @@ </div> <audio id="noVNC_bell"> @@ -193,3 +217,6 @@ index 5c5549d..f081aee 100644 </audio> </body> </html> +-- +2.39.5 + diff --git a/debian/patches/0007-add-pve-vnc-commands.patch b/debian/patches/0007-add-pve-vnc-commands.patch index d8433aa..ea01382 100644 --- a/debian/patches/0007-add-pve-vnc-commands.patch +++ b/debian/patches/0007-add-pve-vnc-commands.patch @@ -9,10 +9,10 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> 1 file changed, 21 insertions(+) diff --git a/vnc.html b/vnc.html -index f081aee..9281009 100644 +index 9f4fac0..c9e166c 100644 --- a/vnc.html +++ b/vnc.html -@@ -229,6 +229,27 @@ +@@ -306,6 +306,27 @@ </div> </div> @@ -37,6 +37,9 @@ index f081aee..9281009 100644 + </div> + + - <!-- Connection Controls --> + <!-- Connection controls --> <input type="image" alt="Disconnect" src="/novnc/app/images/disconnect.svg" id="noVNC_disconnect_button" class="noVNC_button" +-- +2.39.5 + diff --git a/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch b/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch index dece882..0b171ff 100644 --- a/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch +++ b/debian/patches/0008-add-replaceable-snippets-in-vnc.html.patch @@ -11,7 +11,7 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vnc.html b/vnc.html -index 9281009..4ce107a 100644 +index c9e166c..3c40c49 100644 --- a/vnc.html +++ b/vnc.html @@ -13,7 +13,7 @@ @@ -21,9 +21,9 @@ index 9281009..4ce107a 100644 - <title>noVNC</title> + <title>[% nodename %] - Proxmox Console</title> - <meta charset="utf-8"> + <meta name="theme-color" content="#313131"> -@@ -32,6 +32,12 @@ +@@ -33,6 +33,12 @@ <link rel="preload" as="image" href="/novnc/app/images/warning.svg"> <script type="module" crossorigin="anonymous" src="/novnc/app/error-handler.js"></script> @@ -33,6 +33,9 @@ index 9281009..4ce107a 100644 + PVE.CSRFPreventionToken = '[% token %]'; + INCLUDE_URI='/novnc/include'; + </script> - <script type="module" crossorigin="anonymous" src="/novnc/app/ui.js"></script> - </head> - + <script type="module"> + import UI from "/novnc/app/ui.js"; + import * as Log from '/novnc/core/util/logging.js'; +-- +2.39.5 + diff --git a/debian/patches/0009-decrease-animation-time.patch b/debian/patches/0009-decrease-animation-time.patch index 5d76932..c5ad05a 100644 --- a/debian/patches/0009-decrease-animation-time.patch +++ b/debian/patches/0009-decrease-animation-time.patch @@ -7,64 +7,76 @@ because 0.5s is too long Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- - app/styles/base.css | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + app/styles/base.css | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/styles/base.css b/app/styles/base.css -index f83ad4b..fd1a66e 100644 +index 87bfb45..6e9b25d 100644 --- a/app/styles/base.css +++ b/app/styles/base.css -@@ -222,7 +222,7 @@ html { - position: fixed; - z-index: 10; +@@ -223,7 +223,7 @@ html { + position: fixed; + z-index: 10; -- transition: 0.5s ease-in-out; -+ transition: 0.1s ease-in-out; +- transition: 0.5s ease-in-out; ++ transition: 0.1s ease-in-out; - /* Edge misrenders animations wihthout this */ - transform: translateX(0); -@@ -239,7 +239,7 @@ html { - position: relative; - left: -100%; + /* Edge misrenders animations wihthout this */ + transform: translateX(0); +@@ -240,7 +240,7 @@ html { + position: relative; + left: -100%; -- transition: 0.5s ease-in-out; -+ transition: 0.1s ease-in-out; +- transition: 0.5s ease-in-out; ++ transition: 0.1s ease-in-out; - background-color: rgb(110, 132, 163); - border-radius: 0 10px 10px 0; -@@ -260,7 +260,7 @@ html { - height: 100%; - width: 30px; - left: -30px; -- transition: box-shadow 0.5s ease-in-out; -+ transition: box-shadow 0.1s ease-in-out; + background-color: var(--novnc-blue); + border-radius: 0 12px 12px 0; +@@ -261,7 +261,7 @@ html { + height: 100%; + width: 30px; + left: -30px; +- transition: box-shadow 0.5s ease-in-out; ++ transition: box-shadow 0.1s ease-in-out; } #noVNC_control_bar.noVNC_open::before { - box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5); -@@ -294,7 +294,7 @@ html { + box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5); +@@ -295,7 +295,7 @@ html { } #noVNC_control_bar_handle:after { - content: ""; -- transition: transform 0.5s ease-in-out; -+ transition: transform 0.1s ease-in-out; - background: url("../images/handle.svg"); - position: absolute; - top: 22px; /* (50px-6px)/2 */ -@@ -430,7 +430,7 @@ html { + content: ""; +- transition: transform 0.5s ease-in-out; ++ transition: transform 0.1s ease-in-out; + background: url("../images/handle.svg"); + position: absolute; + top: 22px; /* (50px-6px)/2 */ +@@ -407,7 +407,7 @@ html { .noVNC_panel { - transform: translateX(25px); + transform: translateX(25px); -- transition: 0.5s ease-in-out; -+ transition: 0.25s ease-in-out; +- transition: 0.5s ease-in-out; ++ transition: 0.25s ease-in-out; - box-sizing: border-box; /* so max-width don't have to care about padding */ - max-width: calc(100vw - 75px - 25px); /* minus left and right margins */ -@@ -649,7 +649,7 @@ html { + box-sizing: border-box; /* so max-width don't have to care about padding */ + max-width: calc(100vw - 75px - 25px); /* minus left and right margins */ +@@ -658,7 +658,7 @@ html { - cursor: pointer; + cursor: pointer; -- transition: 0.5s ease-in-out; -+ transition: 0.1s ease-in-out; +- transition: 0.5s ease-in-out; ++ transition: 0.1s ease-in-out; - visibility: hidden; - opacity: 0; + visibility: hidden; + opacity: 0; +@@ -817,7 +817,7 @@ html { + + /* Transition screen */ + #noVNC_transition { +- transition: 0.5s ease-in-out; ++ transition: 0.1s ease-in-out; + + display: flex; + opacity: 0; +-- +2.39.5 + diff --git a/debian/patches/0010-use-only-app.js.patch b/debian/patches/0010-use-only-app.js.patch index 5518914..5e64eb8 100644 --- a/debian/patches/0010-use-only-app.js.patch +++ b/debian/patches/0010-use-only-app.js.patch @@ -3,24 +3,75 @@ From: Dominik Csapak <d.csapak@proxmox.com> Date: Tue, 16 May 2017 10:36:15 +0200 Subject: [PATCH] use only app.js -As PVE now uses the commonjs version, there's only need to fetch the -generated app.js +Since we bundle the code into a single ES Module, use that only. +Also remove the default/mandatory settings loading code, as we do +that ourselves directly in the code. Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- - vnc.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + vnc.html | 49 ++----------------------------------------------- + 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/vnc.html b/vnc.html -index 4ce107a..eed474f 100644 +index 3c40c49..8ff6739 100644 --- a/vnc.html +++ b/vnc.html -@@ -38,7 +38,7 @@ - PVE.CSRFPreventionToken = '[% token %]'; +@@ -40,53 +40,8 @@ INCLUDE_URI='/novnc/include'; </script> -- <script type="module" crossorigin="anonymous" src="/novnc/app/ui.js"></script> -+ <script crossorigin=anonymous" src="/novnc/app.js"></script> + <script type="module"> +- import UI from "/novnc/app/ui.js"; +- import * as Log from '/novnc/core/util/logging.js'; +- +- let response; +- +- let defaults = {}; +- let mandatory = {}; +- +- // Default settings will be loaded from defaults.json. Mandatory +- // settings will be loaded from mandatory.json, which the user +- // cannot change. +- +- try { +- response = await fetch('/novnc/defaults.json'); +- if (!response.ok) { +- throw Error("" + response.status + " " + response.statusText); +- } +- +- defaults = await response.json(); +- } catch (err) { +- Log.Error("Couldn't fetch defaults.json: " + err); +- } +- +- try { +- response = await fetch('/novnc/mandatory.json'); +- if (!response.ok) { +- throw Error("" + response.status + " " + response.statusText); +- } +- +- mandatory = await response.json(); +- } catch (err) { +- Log.Error("Couldn't fetch mandatory.json: " + err); +- } +- +- // You can also override any defaults you need here: +- // +- // defaults['host'] = 'vnc.example.com'; +- +- // Or force a specific setting, preventing the user from +- // changing it: +- // +- // mandatory['view_only'] = true; +- +- // See docs/EMBEDDING.md for a list of possible settings. +- +- UI.start({ settings: { defaults: defaults, +- mandatory: mandatory } }); ++ import UI from "/novnc/app.js"; ++ UI.start({ settings: { defaults: {}, mandatory: {} } }); + </script> </head> - <body> +-- +2.39.5 + diff --git a/debian/patches/0011-add-localCursor-setting-to-rfb.patch b/debian/patches/0011-add-localCursor-setting-to-rfb.patch index c090169..62068c6 100644 --- a/debian/patches/0011-add-localCursor-setting-to-rfb.patch +++ b/debian/patches/0011-add-localCursor-setting-to-rfb.patch @@ -11,22 +11,22 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> app/ui.js | 10 ++++++++++ core/rfb.js | 10 ++++++++++ core/util/cursor.js | 15 ++++++++++++++- - vnc.html | 3 +++ - 4 files changed, 37 insertions(+), 1 deletion(-) + vnc.html | 7 +++++++ + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/ui.js b/app/ui.js -index 18bac4b..e70e922 100644 +index 01c7c77..0434fbc 100644 --- a/app/ui.js +++ b/app/ui.js -@@ -180,6 +180,7 @@ const UI = { +@@ -192,6 +192,7 @@ const UI = { UI.initSetting('quality', 6); UI.initSetting('compression', 2); UI.initSetting('autoresize', true); + UI.initSetting('local_cursor', true); UI.initSetting('shared', true); + UI.initSetting('bell', 'on'); UI.initSetting('view_only', false); - UI.initSetting('show_dot', false); -@@ -372,6 +373,8 @@ const UI = { +@@ -383,6 +384,8 @@ const UI = { UI.addSettingChangeHandler('view_only', UI.updateViewOnly); UI.addSettingChangeHandler('show_dot'); UI.addSettingChangeHandler('show_dot', UI.updateShowDotCursor); @@ -35,7 +35,7 @@ index 18bac4b..e70e922 100644 UI.addSettingChangeHandler('host'); UI.addSettingChangeHandler('port'); UI.addSettingChangeHandler('path'); -@@ -1078,6 +1081,7 @@ const UI = { +@@ -1118,6 +1121,7 @@ const UI = { UI.rfb.addEventListener("desktopname", UI.updateDesktopName); UI.rfb.addEventListener("fbresize", UI.updateSessionSize); UI.rfb.clipViewport = UI.getSetting('view_clip'); @@ -43,7 +43,7 @@ index 18bac4b..e70e922 100644 UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale'; UI.rfb.resizeSession = UI.getSetting('resize') === 'remote'; UI.rfb.qualityLevel = parseInt(UI.getSetting('quality')); -@@ -1762,6 +1766,12 @@ const UI = { +@@ -1802,6 +1806,12 @@ const UI = { * ============== * MISC * ------v------*/ @@ -57,10 +57,10 @@ index 18bac4b..e70e922 100644 if (!UI.rfb) return; UI.rfb.viewOnly = UI.getSetting('view_only'); diff --git a/core/rfb.js b/core/rfb.js -index 37ba099..0f31079 100644 +index 23b436c..8260929 100644 --- a/core/rfb.js +++ b/core/rfb.js -@@ -290,6 +290,7 @@ export default class RFB extends EventTargetMixin { +@@ -298,6 +298,7 @@ export default class RFB extends EventTargetMixin { this._clippingViewport = false; this._scaleViewport = false; this._resizeSession = false; @@ -68,7 +68,7 @@ index 37ba099..0f31079 100644 this._showDotCursor = false; if (options.showDotCursor !== undefined) { -@@ -360,6 +361,15 @@ export default class RFB extends EventTargetMixin { +@@ -368,6 +369,15 @@ export default class RFB extends EventTargetMixin { } } @@ -85,7 +85,7 @@ index 37ba099..0f31079 100644 set showDotCursor(show) { this._showDotCursor = show; diff --git a/core/util/cursor.js b/core/util/cursor.js -index 20e75f1..91763a5 100644 +index 6d689e7..4bb5547 100644 --- a/core/util/cursor.js +++ b/core/util/cursor.js @@ -12,6 +12,8 @@ export default class Cursor { @@ -137,16 +137,23 @@ index 20e75f1..91763a5 100644 + } diff --git a/vnc.html b/vnc.html -index eed474f..b80f3c5 100644 +index 8ff6739..f2c29af 100644 --- a/vnc.html +++ b/vnc.html -@@ -157,6 +157,9 @@ - <li> - <label><input id="noVNC_setting_view_clip" type="checkbox"> Clip to Window</label> +@@ -173,6 +173,13 @@ + Clip to window + </label> </li> + <li> -+ <label><input id="noVNC_setting_local_cursor" type="checkbox" /> Local Cursor</label> ++ <label> ++ <input id="noVNC_setting_local_cursor" type="checkbox" ++ class="toggle"> ++ Local Cursor ++ </label> + </li> <li> - <label><input id="noVNC_setting_autoresize" type="checkbox" /> Autoresize Window</label> - </li> + <label> + <input id="noVNC_setting_autoresize" type="checkbox" +-- +2.39.5 + diff --git a/debian/patches/0012-pass-custom-command-to-vnc.patch b/debian/patches/0012-pass-custom-command-to-vnc.patch index a0989d2..4c1a190 100644 --- a/debian/patches/0012-pass-custom-command-to-vnc.patch +++ b/debian/patches/0012-pass-custom-command-to-vnc.patch @@ -34,3 +34,6 @@ index 1a062ad..8ce258c 100644 break; default: throw 'implement me'; +-- +2.39.5 + diff --git a/debian/patches/0013-Revert-Remove-the-default-value-of-wsProtocols.patch b/debian/patches/0013-Revert-Remove-the-default-value-of-wsProtocols.patch index 0d82f09..57c6f74 100644 --- a/debian/patches/0013-Revert-Remove-the-default-value-of-wsProtocols.patch +++ b/debian/patches/0013-Revert-Remove-the-default-value-of-wsProtocols.patch @@ -9,16 +9,17 @@ We very-much depend on the WS protocol default of 'binary', for now lets just revert it here, albeit it could be externally set.. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> +Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- core/rfb.js | 3 ++- docs/API.md | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/rfb.js b/core/rfb.js -index 0f31079..22f2966 100644 +index 8260929..945829b 100644 --- a/core/rfb.js +++ b/core/rfb.js -@@ -116,7 +116,8 @@ export default class RFB extends EventTargetMixin { +@@ -118,7 +118,8 @@ export default class RFB extends EventTargetMixin { this._rfbCredentials = options.credentials || {}; this._shared = 'shared' in options ? !!options.shared : true; this._repeaterID = options.repeaterID || ''; @@ -42,3 +43,6 @@ index eb3ec33..6616048 100644 #### bell +-- +2.39.5 + diff --git a/debian/patches/0014-avoid-passing-deprecated-upgrade-parameter.patch b/debian/patches/0014-avoid-passing-deprecated-upgrade-parameter.patch index d9dc07d..5f708c4 100644 --- a/debian/patches/0014-avoid-passing-deprecated-upgrade-parameter.patch +++ b/debian/patches/0014-avoid-passing-deprecated-upgrade-parameter.patch @@ -4,6 +4,7 @@ Date: Fri, 4 Jun 2021 08:27:23 +0200 Subject: [PATCH] avoid passing deprecated 'upgrade' parameter Signed-off-by: Fabian Ebner <f.ebner@proxmox.com> +Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> --- app/pve.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -21,3 +22,6 @@ index 8ce258c..873c7b5 100644 title = 'System upgrade on node ' + this.nodename; break; case 'cmd': +-- +2.39.5 + diff --git a/debian/patches/0015-create-own-class-for-hidden-buttons.patch b/debian/patches/0015-create-own-class-for-hidden-buttons.patch index 333c074..f267237 100644 --- a/debian/patches/0015-create-own-class-for-hidden-buttons.patch +++ b/debian/patches/0015-create-own-class-for-hidden-buttons.patch @@ -45,14 +45,17 @@ index 873c7b5..f87f01b 100644 }); }, diff --git a/app/styles/pve.css b/app/styles/pve.css -index eaeb5cb..6376593 100644 +index a312a95..6762325 100644 --- a/app/styles/pve.css +++ b/app/styles/pve.css -@@ -40,3 +40,7 @@ - border-color: rgba(0, 0, 0, 0.4); - background: #5BA8DF; +@@ -44,3 +44,7 @@ + input:not(.toggle), button, div:not(#noVNC_container) { + border-radius: unset !important; } + +.noVNC_button.pve_hidden { + display: none !important; +} +-- +2.39.5 + diff --git a/debian/patches/0016-hide-fullscreen-button-on-isFullscreen-get-variable.patch b/debian/patches/0016-hide-fullscreen-button-on-isFullscreen-get-variable.patch index 27d745e..b1157d9 100644 --- a/debian/patches/0016-hide-fullscreen-button-on-isFullscreen-get-variable.patch +++ b/debian/patches/0016-hide-fullscreen-button-on-isFullscreen-get-variable.patch @@ -37,3 +37,6 @@ index f87f01b..368f23a 100644 // add command logic var commandArray = [ { cmd: 'start', kvm: 1, lxc: 1}, +-- +2.39.5 + diff --git a/debian/patches/0017-make-error-hideable.patch b/debian/patches/0017-make-error-hideable.patch index f45c568..946683b 100644 --- a/debian/patches/0017-make-error-hideable.patch +++ b/debian/patches/0017-make-error-hideable.patch @@ -11,7 +11,7 @@ Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/error-handler.js b/app/error-handler.js -index 67b6372..b842909 100644 +index 5f6ffb6..bb233e5 100644 --- a/app/error-handler.js +++ b/app/error-handler.js @@ -6,6 +6,19 @@ @@ -46,3 +46,6 @@ index 67b6372..b842909 100644 } catch (exc) { document.write("noVNC encountered an error."); +-- +2.39.5 + diff --git a/debian/patches/0018-show-start-button-on-not-running-vm-ct.patch b/debian/patches/0018-show-start-button-on-not-running-vm-ct.patch index 34c0090..883e6bd 100644 --- a/debian/patches/0018-show-start-button-on-not-running-vm-ct.patch +++ b/debian/patches/0018-show-start-button-on-not-running-vm-ct.patch @@ -110,10 +110,10 @@ index 368f23a..d7fbdd3 100644 var me = this; try { diff --git a/app/styles/pve.css b/app/styles/pve.css -index 6376593..1a0caad 100644 +index 6762325..0ce4ebe 100644 --- a/app/styles/pve.css +++ b/app/styles/pve.css -@@ -44,3 +44,61 @@ +@@ -48,3 +48,61 @@ input:not(.toggle), button, div:not(#noVNC_container) { .noVNC_button.pve_hidden { display: none !important; } @@ -176,10 +176,10 @@ index 6376593..1a0caad 100644 + padding: 0 5px 2px 0; +} diff --git a/vnc.html b/vnc.html -index b80f3c5..ca69f03 100644 +index f2c29af..4ecb6e0 100644 --- a/vnc.html +++ b/vnc.html -@@ -313,6 +313,15 @@ +@@ -349,6 +349,15 @@ </form></div> </div> @@ -192,6 +192,9 @@ index b80f3c5..ca69f03 100644 + </div> + </div> + - <!-- Password Dialog --> + <!-- Password dialog --> <div class="noVNC_center noVNC_connect_layer"> <div id="noVNC_credentials_dlg" class="noVNC_panel"><form> +-- +2.39.5 + diff --git a/debian/patches/0019-show-clipboard-button.patch b/debian/patches/0019-show-clipboard-button.patch index f7db533..3a746b1 100644 --- a/debian/patches/0019-show-clipboard-button.patch +++ b/debian/patches/0019-show-clipboard-button.patch @@ -26,3 +26,6 @@ index d7fbdd3..6e69fb6 100644 }, failure: function(msg, code) { if (code === 403) { +-- +2.39.5 + diff --git a/debian/rules b/debian/rules index 486a68e..14a4795 100755 --- a/debian/rules +++ b/debian/rules @@ -11,7 +11,7 @@ export DEB_BUILD_HARDENING=1 dh ${@} override_dh_auto_build: - esbuild --bundle app/ui.js > app.js + esbuild --bundle --format=esm app/ui.js > app.js dh_auto_build override_dh_install: diff --git a/novnc b/novnc index 7fcf9dc..a8dfd6a 160000 --- a/novnc +++ b/novnc @@ -1 +1 @@ -Subproject commit 7fcf9dcfe0cc5b14e3841a4429dc091a6ffca861 +Subproject commit a8dfd6a3ea3c74244f5ebdaa5a7f1023007a7820 -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel