From 9dcfa7d9f588cecf5cc24ae821f0daf0ca9644f8 Mon Sep 17 00:00:00 2001 From: Jeuner <62662523+Jeuners@users.noreply.github.com> Date: Mon, 7 Sep 2026 16:12:23 +0200 Subject: [PATCH] fix: show uploaded images inline instead of just the filename MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bilder wurden bisher nur als Textzeile "Hochgeladen: X" bestätigt, nie tatsächlich angezeigt. Zeigt jetzt sofort beim Auswählen eine lokale Vorschau im Transkript (data:-URL, passt bereits in die bestehende img-src-CSP), bevor der Upload überhaupt beim Server ankommt. Verifiziert per echtem Playwright-Browsertest inkl. fake mic/WebRTC: Bild landet als im Transkript, keine Konsolenfehler. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01LVgSHNHdRx3UNTBodFmhRA --- web/app.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/web/app.js b/web/app.js index 425ce2e..6b955e4 100644 --- a/web/app.js +++ b/web/app.js @@ -61,6 +61,29 @@ function addUploadNote(filename) { $("messages").append(article); $("messages").scrollTop = $("messages").scrollHeight; } +function addUploadedImage(dataUrl, filename) { + $("messages").querySelector(".empty")?.remove(); + const article = document.createElement("article"); + article.className = "message user"; + const speaker = document.createElement("span"); + speaker.className = "speaker"; + speaker.textContent = "Du"; + const img = document.createElement("img"); + img.className = "generated-image"; + img.src = dataUrl; + img.alt = filename; + article.append(speaker, img); + $("messages").append(article); + $("messages").scrollTop = $("messages").scrollHeight; +} +function fileToDataURL(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(file); + }); +} function receive(event) { let message; try { message = JSON.parse(event.data); } catch { return; } @@ -76,6 +99,10 @@ function receive(event) { } async function uploadFile(file) { if (!pcId) return; + if (file.type.startsWith("image/")) { + try { addUploadedImage(await fileToDataURL(file), file.name); } + catch { /* preview failed to render; upload still proceeds below */ } + } const body = new FormData(); body.append("pc_id", pcId); body.append("file", file);