3 Commits

Author SHA1 Message Date
fc95cf8c1b Terminaaliin varoitus inferenssin aikana + yield ennen blokkia
Käyttäjälle näytetään '(selain voi hidastua)' kun inferenssi alkaa.
setTimeout yield varmistaa statusrivin piirtämisen ennen WASM-blokkia.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 19:31:25 +03:00
1ae1bf98e2 API timeout nostettu 120s → 600s: WASM-inferenssi on hidasta
Kvantisoidun 1.5B-mallin inferenssi on ~0.2 tok/s WASM:ssa.
Pipeline-tehtävät vaativat pidemmän odotusajan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 19:29:15 +03:00
f567fd3f8a Mallin automaattinen lataus poistettu — käyttäjä käynnistää kpn load:lla
Aiemmin localStorage muisti edellisen latauksen ja käynnisti mallin
automaattisesti sivulle tullessa. Nyt käyttäjä päättää itse milloin lataa.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:03:17 +03:00
2 changed files with 5 additions and 7 deletions

View File

@@ -1080,7 +1080,7 @@ async fn api_chat_completions(
} }
} }
let timeout = tokio::time::timeout(std::time::Duration::from_secs(120), async move { let timeout = tokio::time::timeout(std::time::Duration::from_secs(600), async move {
loop { loop {
let msg_str = match rx.recv().await { let msg_str = match rx.recv().await {
Ok(msg) => msg, Ok(msg) => msg,

View File

@@ -1773,9 +1773,11 @@
const statusDiv = document.createElement('div'); const statusDiv = document.createElement('div');
statusDiv.className = 'terminal-line'; statusDiv.className = 'terminal-line';
statusDiv.id = 'status-' + taskId; statusDiv.id = 'status-' + taskId;
statusDiv.innerHTML = ` <span style="color:#8b949e">→ <span style="color:#58a6ff">${model}</span> käsittelee...</span>`; statusDiv.innerHTML = ` <span style="color:#8b949e">→ <span style="color:#58a6ff">${model}</span> käsittelee... <span style="color:#d29922">(selain voi hidastua)</span></span>`;
termPanel.appendChild(statusDiv); termPanel.appendChild(statusDiv);
termPanel.scrollTop = termPanel.scrollHeight; termPanel.scrollTop = termPanel.scrollHeight;
// Yield jotta status-rivi ehditään piirtää ennen mahdollista blokkia
await new Promise(r => setTimeout(r, 50));
try { try {
const agent = Object.values(agentPrompts).find(a => a.model === model); const agent = Object.values(agentPrompts).find(a => a.model === model);
@@ -3306,11 +3308,7 @@ Write the corrected code.`;
} }
} }
// Automaattinen uudelleenkäynnistys: jos malli oli ladattu ennen refreshiä, ladataan se uudelleen cachesta // Mallia EI ladata automaattisesti — käyttäjä käynnistää itse: kpn load
if (localStorage.getItem('kpn-coder-loaded') === 'true') {
// Pieni viive jotta UI ehtii piirtyä
setTimeout(() => ensureCoderNode(), 500);
}
// Laskentasolmun käynnistys/pysäytys -nappi // Laskentasolmun käynnistys/pysäytys -nappi
let computeAbortController = null; let computeAbortController = null;