mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-09-27 01:27:56 +00:00
geo_filter, node blacklist, and hidden-name-prefix were all applied to a page AFTER the SQL LIMIT already fixed its size, so a page that was genuinely full at the DB layer could come back shorter than requested. fetchAllNodes (public/app.js) treats "page shorter than requested" as "this was the last page" and stops — so a single filtered-out row anywhere in a page silently truncated everything after it. Found on stg.meshview.dk: the live map showed ~450 of ~1300 GPS-valid nodes because a hidden-name-prefix node happened to land in the first 500-row page. handleNodes now loops, re-fetching and re-filtering additional DB pages, until it has collected a full page of post-filter results or the DB itself runs dry (a raw page shorter than requested = genuine end of data) — restoring the "short page really means end of data" contract fetchAllNodes relies on. Regression test reproduces the exact scenario and fails against the old code (verified via git stash).