diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e2cf1b..944bffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ This changelog records public product changes. For the authoritative description of current runtime behavior, see [`docs/CURRENT-STATE.md`](docs/CURRENT-STATE.md). +## [Unreleased] + +### Fixed + +- All three VIIRS sources now reach the Active Fires layer. Merging a source's + detections used argument spread, which exceeds the engine's argument limit on + the two largest sources and dropped them entirely — leaving roughly a third of + global detections while reporting each dropped source twice, once as + successful with its real count and once as failed. + ## [0.1.0] — 2026-08-31 — One-click install, keyless boot, Provider Settings ### Added diff --git a/vite.config.js b/vite.config.js index 7887498..7a7e6c0 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2086,7 +2086,10 @@ function firmsProxy() { try { const records = filterTrailing24h(await fetchSource(key, source), now); sources.push({ source, count: records.length, ok: true }); - fires.push(...records); + // NOT fires.push(...records): spread passes each record as an argument, + // and a world/2 VIIRS pull exceeds V8's argument limit (~125k) at + // ~131k records — RangeError, and the whole source is silently dropped. + for (const record of records) fires.push(record); } catch (err) { console.warn(`[firms-proxy] ${source} fetch failed:`, err?.message || err); sources.push({ source, count: 0, ok: false });