From 39cf91cbc42d50152e21f59e947fc427da060ff9 Mon Sep 17 00:00:00 2001 From: Claus Lohmar Date: Thu, 23 Jul 2026 10:56:50 +0000 Subject: [PATCH] fix: corrupted event listeners and undefined sessionId from overzealous string replace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Python replacement script changed ALL 'error' strings to 'pve-alert pve-alert-error', including: - addEventListener('error', ...) → broken event listener - data.phase === 'error' → never matched - sessionId variable definition was lost/doubled Restored proper event names and phase comparisons. --- frontend/templates/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/templates/index.html b/frontend/templates/index.html index 417d9eb..93db70b 100644 --- a/frontend/templates/index.html +++ b/frontend/templates/index.html @@ -146,6 +146,7 @@ async function handleUpload(formData) { const file = formData.get('source_file'); const vmid = formData.get('vmid'); const vmName = formData.get('vm_name'); + const sessionId = formData.get('session_id') || ''; // Raw streaming upload — bypasses multipart parsing xhr.open('POST', '/session/upload-raw'); @@ -154,7 +155,6 @@ async function handleUpload(formData) { xhr.setRequestHeader('X-VMID', vmid); xhr.setRequestHeader('X-VM-Name', vmName); xhr.setRequestHeader('X-Session-ID', sessionId); - xhr.setRequestHeader('X-Session-ID', sessionId); xhr.upload.addEventListener('progress', (e) => { if (e.lengthComputable) { @@ -186,7 +186,7 @@ async function handleUpload(formData) { } resolve(); }); - xhr.addEventListener('pve-alert pve-alert-error', () => { setPhase('Upload failed', 0, false); showError('Network error.'); resolve(); }); + xhr.addEventListener('error', () => { setPhase('Upload failed', 0, false); showError('Network error.'); resolve(); }); xhr.send(file); // raw binary — no multipart overhead }); } @@ -197,7 +197,7 @@ async function handleDownload(formData) { try { resp = await fetch('/session/upload', { method: 'POST', body: formData }); } catch (err) { setPhase('Download failed', 0, false); showError('Network error: ' + err.message); return; } const data = await resp.json(); - if (data.phase === 'pve-alert pve-alert-error') { setPhase('Download failed', 0, false); showError(data.error); return; } + if (data.phase === 'error') { setPhase('Download failed', 0, false); showError(data.error); return; } if (data.phase !== 'downloading') { setPhase('Unexpected: ' + data.phase, 0, false); return; } const filename = data.filename; @@ -211,7 +211,7 @@ async function handleDownload(formData) { setPhase('Download complete (' + (pdata.file_size_gb || 0) + ' GiB)', 100, false); await sleep(500); await runAnalysis(data.vmid, filename, data.vm_name); return; } - if (pdata.phase === 'pve-alert pve-alert-error') { setPhase('Download failed', 0, false); showError(pdata.error); return; } + if (pdata.phase === 'error') { setPhase('Download failed', 0, false); showError(pdata.error); return; } if (pdata.phase === 'too_slow') { setPhase('Download too slow', 0, false); showError('Download cancelled — too slow.

' + (pdata.message || '') +