Cpu Cooling Master Register: Code Free
.mode-btn.active background: #2dd4bf; color: #0a0f1e; box-shadow: 0 0 10px #2dd4bf;
// manual slider override (user intervention) function handleManualFanChange(value) let percent = parseInt(value, 10); setFanSpeed(percent); // deactivate auto-mode? but we keep mode, but user overrides -> we temporarily log addLogEntry(`✋ manual register override · fan set to $percent% ($currentRPM RPM)`); // after manual, we don't change mode highlight, but we can still auto adjust later? // we will keep but next thermal cycle may adjust again if mode active - we keep consistent. // BUT to respect user, we will NOT override immediately. next control cycle will re-apply mode curve. // That's okay: shows dynamic interaction.
.fan-mode display: flex; justify-content: space-between; gap: 14px; margin-top: 18px; cpu cooling master register code free
// event binding fanSlider.addEventListener('input', (e) => let val = e.target.value; setFanSpeed(val); // if manual move, we temporary override but keep mode active, BUT we don't desync. // We still log manual event each slider drag (avoid too many? but fine) // To prevent log spam, we'll log only if major (debounce) if (Math.random() > 0.7) addLogEntry(`⚙️ manual PWM set → $val%`); );
// auto-adjust fan based on active mode (dynamic control) function applySmartFanControl() let targetPercent = currentFanPercent; if (activeMode === "silent") // silent: keep low, but still respond above 70C if (currentTemp < 62) targetPercent = 28; else if (currentTemp < 78) targetPercent = 42 + (currentTemp-62)*1.2; else targetPercent = 68; targetPercent = Math.min(75, targetPercent); else if (activeMode === "balanced") if (currentTemp < 55) targetPercent = 38; else if (currentTemp < 75) targetPercent = 45 + (currentTemp-55)*1.5; else targetPercent = 82; targetPercent = Math.min(92, targetPercent); else if (activeMode === "performance") if (currentTemp < 58) targetPercent = 55; else if (currentTemp < 80) targetPercent = 65 + (currentTemp-58)*1.2; else targetPercent = 94; targetPercent = Math.min(99, targetPercent); else if (activeMode === "full") targetPercent = 100; targetPercent = Math.min(100, Math.max(0, Math.floor(targetPercent))); if (Math.abs(targetPercent - currentFanPercent) > 2) setFanSpeed(targetPercent); // register cooling adjustment event (important for master log) addLogEntry(`🌀 fan profile [$activeMode.toUpperCase()] → $targetPercent% PWM · $currentRPM RPM`); else // just sync slider just in case if(fanSlider.value != currentFanPercent) fanSlider.value = currentFanPercent; // BUT to respect user, we will NOT override immediately
.fan-rpm font-size: 1.6rem; font-weight: 700; font-family: monospace; background: #00000050; padding: 4px 14px; border-radius: 60px; color: #5ee0cf;
.reset-btn background: #1e2a46; padding: 5px 12px; border-radius: 40px; font-size: 0.7rem; color: #b9e2ff; cursor: pointer; .fan-mode display: flex
h1 small font-size: 0.75rem; background: #1e2a3e; padding: 4px 10px; border-radius: 60px; color: #7dd3fc; font-weight: 400; background-clip: unset; -webkit-background-clip: unset; color: #7dd3fc;
/* METRIC GRID */ .sensor-grid display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 32px;