fix: first /tmp file poll is baseline only, no longer overrides config

On page load the first poll counted as a change and applied the file
value, so a stale /tmp file could flip the mode set by the Plasma
config ~800ms after startup. Record the baseline silently; only real
changes toggle modes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
This commit is contained in:
vini 2026-07-19 10:18:53 -03:00
parent 39bc5d0794
commit f20d8adf4f

View file

@ -1996,7 +1996,8 @@ function setBaladaMode(on) {
function toggleBalada() { setBaladaMode(!balada); } function toggleBalada() { setBaladaMode(!balada); }
/* Polling de arquivos — só reage a MUDANÇAS no arquivo; um arquivo parado /* Polling de arquivos — só reage a MUDANÇAS no arquivo; um arquivo parado
em "1" não fica religando o modo e brigando com o outro toggle */ em "1" não fica religando o modo e brigando com o outro toggle.
A primeira leitura é só baseline: arquivo velho não sobrescreve a config. */
let baladaFileVal = null; let baladaFileVal = null;
(function pollBaladaFile() { (function pollBaladaFile() {
fetch('file:///tmp/skeledance-balada?t=' + Date.now()) fetch('file:///tmp/skeledance-balada?t=' + Date.now())
@ -2004,8 +2005,9 @@ let baladaFileVal = null;
.then(t => { .then(t => {
const v = t.trim(); const v = t.trim();
if (v === baladaFileVal) return; if (v === baladaFileVal) return;
const first = baladaFileVal === null;
baladaFileVal = v; baladaFileVal = v;
setBaladaMode(v === '1'); if (!first) setBaladaMode(v === '1');
}) })
.catch(() => {}) .catch(() => {})
.finally(() => setTimeout(pollBaladaFile, 800)); .finally(() => setTimeout(pollBaladaFile, 800));
@ -2141,8 +2143,9 @@ let chuvaFileVal = null;
.then(t => { .then(t => {
const v = t.trim(); const v = t.trim();
if (v === chuvaFileVal) return; if (v === chuvaFileVal) return;
const first = chuvaFileVal === null;
chuvaFileVal = v; chuvaFileVal = v;
setChuvaMode(v === '1'); if (!first) setChuvaMode(v === '1');
}) })
.catch(() => {}) .catch(() => {})
.finally(() => setTimeout(pollChuvaFile, 800)); .finally(() => setTimeout(pollChuvaFile, 800));