Malli säilyy refreshin yli: automaattinen uudelleenlataus IndexedDB-cachesta
- coderSize tallennetaan localStorageen (valinta säilyy) - Kun malli on kerran ladattu, 'kpn-coder-loaded' lippu asetetaan - Sivulatauksessa: jos lippu on asetettu, ensureCoderNode() käynnistyy automaattisesti — painot tulevat IndexedDB-cachesta, ei verkosta - Radio-napit asetetaan oikeaan tilaan localStoragesta Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1491,12 +1491,19 @@
|
||||
let detectedWebGPU = false;
|
||||
let detectedGpuInfo = null;
|
||||
let wasmInitialized = false;
|
||||
let coderSize = '05b'; // '05b' tai '3b'
|
||||
let coderSize = localStorage.getItem('kpn-coder-size') || '05b';
|
||||
|
||||
// Mallivalinnan radio-napit
|
||||
// Mallivalinnan radio-napit — asetetaan oikea valinta localStoragesta
|
||||
const savedRadio = document.querySelector(`input[name="coder-size"][value="${coderSize}"]`);
|
||||
if (savedRadio) savedRadio.checked = true;
|
||||
if (coderSize === '3b') {
|
||||
document.getElementById('coder-opt-05b')?.style && (document.getElementById('coder-opt-05b').style.borderColor = 'var(--border-color)');
|
||||
document.getElementById('coder-opt-3b')?.style && (document.getElementById('coder-opt-3b').style.borderColor = 'var(--accent-color)');
|
||||
}
|
||||
document.querySelectorAll('input[name="coder-size"]').forEach(radio => {
|
||||
radio.addEventListener('change', (e) => {
|
||||
coderSize = e.target.value;
|
||||
localStorage.setItem('kpn-coder-size', coderSize);
|
||||
// Visuaalinen korostus
|
||||
document.getElementById('coder-opt-05b').style.borderColor = coderSize === '05b' ? 'var(--accent-color)' : 'var(--border-color)';
|
||||
document.getElementById('coder-opt-3b').style.borderColor = coderSize === '3b' ? 'var(--accent-color)' : 'var(--border-color)';
|
||||
@@ -1876,6 +1883,7 @@
|
||||
return;
|
||||
}
|
||||
coderSize = selected.coderSize;
|
||||
localStorage.setItem('kpn-coder-size', coderSize);
|
||||
termLog(` Alustetaan ${selected.name} (${selected.size})...`, '#d29922');
|
||||
if (btn) btn.click();
|
||||
else ensureCoderNode();
|
||||
@@ -2776,6 +2784,7 @@
|
||||
if (cd) cd.style.background = '#3fb950';
|
||||
if (cl) { cl.textContent = 'Qwen2.5-Coder'; cl.style.color = '#3fb950'; }
|
||||
if (btn) { btn.dataset.state = 'ready'; btn.textContent = '✓ Valmis'; btn.style.borderColor = '#3fb950'; btn.style.color = '#3fb950'; btn.style.cursor = 'default'; btn.title = 'Kielimalli ladattu — oma kone on valmis laskentaan'; }
|
||||
localStorage.setItem('kpn-coder-loaded', 'true');
|
||||
}
|
||||
if (msg.includes('[Coder]') && msg.includes('Syöte:')) {
|
||||
// Pipeline piiloon kun generointi alkaa
|
||||
@@ -2862,7 +2871,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Agents-sivun coder-node käynnistetään "Alusta laskentasolmu" -napista tai kpn load -komennolla
|
||||
// Automaattinen uudelleenkäynnistys: jos malli oli ladattu ennen refreshiä, ladataan se uudelleen cachesta
|
||||
if (localStorage.getItem('kpn-coder-loaded') === 'true') {
|
||||
// Pieni viive jotta UI ehtii piirtyä
|
||||
setTimeout(() => ensureCoderNode(), 500);
|
||||
}
|
||||
|
||||
// Laskentasolmun käynnistys/pysäytys -nappi
|
||||
let computeAbortController = null;
|
||||
|
||||
Reference in New Issue
Block a user