Loading debian/changelog +3 −2 Original line number Diff line number Diff line blogi (20260416+10) UNRELEASED; urgency=medium blogi (20260416+10+nmu1) UNRELEASED; urgency=medium * Revert SVG logo runic text back to blogi * Fix icon property in Main.qml * Fix stream issues with local LLM -- Jan Koester <jan.koester@tuxist.de> Thu, 16 Apr 2026 12:25:00 +0200 -- Jan Koester <jan.koester@intranet.tuxist.de@hel.intranet.tuxist.de> Thu, 16 Apr 2026 15:51:34 +0200 blogi (20260416+9) unstable; urgency=medium Loading editor/qml/AiTab.qml +22 −14 Original line number Diff line number Diff line Loading @@ -138,28 +138,36 @@ Item { xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.LOADING || xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { try { var lines = xhr.responseText.trim().split('\n'); var resultText = ""; for (var i = 0; i < lines.length; i++) { if (lines[i] === "") continue; var resp = JSON.parse(lines[i]); var line = lines[i].trim(); if (line === "" || line === "data: [DONE]") continue; if (line.startsWith("data: ")) { line = line.substring(6); } try { var resp = JSON.parse(line); if (resp.response) { resultText += resp.response; } else if (resp.message && resp.message.content) { resultText += resp.message.content; } else if (resp.choices && resp.choices[0] && resp.choices[0].delta && resp.choices[0].delta.content) { } else if (resp.choices && resp.choices[0]) { if (resp.choices[0].delta && resp.choices[0].delta.content) { resultText += resp.choices[0].delta.content; } else if (resp.choices && resp.choices[0] && resp.choices[0].message) { } else if (resp.choices[0].message && resp.choices[0].message.content) { resultText += resp.choices[0].message.content; } } } catch(e) { // Bei unvollständigen JSON-Chunks im Stream ignorieren wir den Fehler für diese Zeile } } if (resultText !== "") { promptOutputArea.text = resultText; } catch(e) { // Bei unvollständigen JSON-Chunks im Stream ignorieren wir den Fehler, // der nächste Chunk vervollständigt es. } } else if (xhr.readyState === XMLHttpRequest.DONE) { promptOutputArea.text = "Fehler: " + xhr.status + " " + xhr.statusText + "\n" + xhr.responseText; Loading Loading
debian/changelog +3 −2 Original line number Diff line number Diff line blogi (20260416+10) UNRELEASED; urgency=medium blogi (20260416+10+nmu1) UNRELEASED; urgency=medium * Revert SVG logo runic text back to blogi * Fix icon property in Main.qml * Fix stream issues with local LLM -- Jan Koester <jan.koester@tuxist.de> Thu, 16 Apr 2026 12:25:00 +0200 -- Jan Koester <jan.koester@intranet.tuxist.de@hel.intranet.tuxist.de> Thu, 16 Apr 2026 15:51:34 +0200 blogi (20260416+9) unstable; urgency=medium Loading
editor/qml/AiTab.qml +22 −14 Original line number Diff line number Diff line Loading @@ -138,28 +138,36 @@ Item { xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.LOADING || xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { try { var lines = xhr.responseText.trim().split('\n'); var resultText = ""; for (var i = 0; i < lines.length; i++) { if (lines[i] === "") continue; var resp = JSON.parse(lines[i]); var line = lines[i].trim(); if (line === "" || line === "data: [DONE]") continue; if (line.startsWith("data: ")) { line = line.substring(6); } try { var resp = JSON.parse(line); if (resp.response) { resultText += resp.response; } else if (resp.message && resp.message.content) { resultText += resp.message.content; } else if (resp.choices && resp.choices[0] && resp.choices[0].delta && resp.choices[0].delta.content) { } else if (resp.choices && resp.choices[0]) { if (resp.choices[0].delta && resp.choices[0].delta.content) { resultText += resp.choices[0].delta.content; } else if (resp.choices && resp.choices[0] && resp.choices[0].message) { } else if (resp.choices[0].message && resp.choices[0].message.content) { resultText += resp.choices[0].message.content; } } } catch(e) { // Bei unvollständigen JSON-Chunks im Stream ignorieren wir den Fehler für diese Zeile } } if (resultText !== "") { promptOutputArea.text = resultText; } catch(e) { // Bei unvollständigen JSON-Chunks im Stream ignorieren wir den Fehler, // der nächste Chunk vervollständigt es. } } else if (xhr.readyState === XMLHttpRequest.DONE) { promptOutputArea.text = "Fehler: " + xhr.status + " " + xhr.statusText + "\n" + xhr.responseText; Loading