v1.4.0
Features
- Background task scheduler — periodic maintenance tasks now run on independent configurable intervals via a new
internal/backgroundpackage. Intervals are set per-task under thebackground:config key; all default to1h. - Route and neighbor reconfirmation — a new background task periodically prunes
known_routesandnode_neighborsrows that have become stale or ambiguous: routes where any hop has departednode_short_idsor whose prefix now resolves to multiple nodes, and neighbors under the same conditions.
Fixes
- Neighbor recording — neighbors are now only recorded when the resolved first-hop node is a repeater or room. Previously a prefix collision could cause a companion or other non-infrastructure node to be written as a neighbor. Thanks to @gadgethd for the contributing fix to IATA seeding that triggered this investigation.
- IATA seeding —
UpsertIATADetailsis now a true upsert, correctly updating existing records rather than silently doing nothing on conflict. Contributed by @gadgethd . - Graceful shutdown — added a timeout to the shutdown sequence to prevent possible hangs on exit.
Maintenance
- Switched to dedicated CodeQL action.
- Corrected route list handler cursor documentation.
- Fixed broken README API reference chart.
- Minor code cleanup: renamed
mustEnv→getEnv, fixed view refresh comment, added note on node type helper.
Contributors
Welcome and thank you to @gadgethd — first contribution to Beacon!