[pve-devel] [PATCH novnc 1/2] upgrade noVNC and patches to 1.6.0
Dominik Csapak
d.csapak at proxmox.com
Mon Mar 24 16:03:36 CET 2025
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 at 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 at proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at proxmox.com>
+Signed-off-by: Dominik Csapak <d.csapak at 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 at proxmox.com>
+Signed-off-by: Dominik Csapak <d.csapak at 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 at 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
More information about the pve-devel
mailing list