diff --git a/overclock_manager.py b/overclock_manager.py index 60a6c4b..5f5d3b0 100644 --- a/overclock_manager.py +++ b/overclock_manager.py @@ -40,6 +40,8 @@ DEFAULT_PROFILES: Dict[str, Dict[str, Any]] = { "lock_core_min": 0, "lock_core_max": 0, "lock_mem_mhz": 11501, + "fan_mode": "manual", + "fan_speed_pct": 60, }, "comfy": { "label": "ComfyUI — diffusion (core-compute bound)", @@ -49,6 +51,8 @@ DEFAULT_PROFILES: Dict[str, Dict[str, Any]] = { "lock_core_min": 2900, "lock_core_max": 3105, "lock_mem_mhz": 0, + "fan_mode": "manual", + "fan_speed_pct": 75, }, "balanced": { "label": "Balanced — stock boost, power unlocked", @@ -58,6 +62,8 @@ DEFAULT_PROFILES: Dict[str, Dict[str, Any]] = { "lock_core_min": 0, "lock_core_max": 0, "lock_mem_mhz": 0, + "fan_mode": "auto", + "fan_speed_pct": 0, }, } diff --git a/overclock_profiles.json b/overclock_profiles.json index 4c1e301..04e0bd8 100644 --- a/overclock_profiles.json +++ b/overclock_profiles.json @@ -3,12 +3,12 @@ "label": "Ollama \u2014 LLM decode (memory-bandwidth bound)", "power_limit_w": 370, "core_offset_mhz": 100, - "mem_offset_mhz": 500, + "mem_offset_mhz": 700, "lock_core_min": 0, "lock_core_max": 0, "lock_mem_mhz": 0, - "fan_mode": "auto", - "fan_speed_pct": 0 + "fan_mode": "manual", + "fan_speed_pct": 60 }, "comfy": { "label": "ComfyUI \u2014 diffusion (core-compute bound)", @@ -18,8 +18,8 @@ "lock_core_min": 2900, "lock_core_max": 3105, "lock_mem_mhz": 0, - "fan_mode": "auto", - "fan_speed_pct": 0 + "fan_mode": "manual", + "fan_speed_pct": 75 }, "balanced": { "label": "Balanced \u2014 stock boost, power unlocked", diff --git a/static/app.js b/static/app.js index bf9d63f..815b2e6 100644 --- a/static/app.js +++ b/static/app.js @@ -408,6 +408,8 @@ function pushOverclockSample(gpu, ram) { ocChart.update('none'); } +let initialOcLoaded = false; + async function fetchOverclockStatus() { try { const resp = await fetch('/api/overclock'); @@ -415,6 +417,14 @@ async function fetchOverclockStatus() { const data = await resp.json(); ocProfiles = data.profiles || {}; renderOverclockStatus(data); + if (!initialOcLoaded && data.active_profile) { + initialOcLoaded = true; + const editSel = document.getElementById('oc-edit-profile'); + if (editSel) { + editSel.value = data.active_profile; + loadOverclockForProfile(data.active_profile); + } + } } catch (err) { console.warn('Overclock fetch error:', err); } @@ -588,6 +598,11 @@ async function applyOverclock(profile) { if (!resp.ok) { alert(`Apply failed: ${result.detail || 'error'}`); } + const editSel = document.getElementById('oc-edit-profile'); + if (editSel) { + editSel.value = profile; + loadOverclockForProfile(profile); + } await fetchOverclockStatus(); } catch (err) { alert(`Error: ${err}`);