Fixed
- Charts drew a straight line through time when no data was collected. Points were spaced by their order rather than by their timestamp, so a two-hour hole looked exactly like a five-minute step and the graph read as normal. Charts now place every point at the time it was taken and break the line where the samples stop, so a gap looks like a gap. This affects every graph: device metrics, interface traffic, optical levels, BGP and the small sparklines beside each interface.
- The BGP availability strip called a range with no data "no downtime". It painted one block per sample, so time nobody measured simply did not exist. The strip is now drawn to scale, missing time is left blank, and the summary states how long the session was down and how long there were no samples at all.
- Hovering a chart over a stretch with no data now says so, instead of showing the reading from the other side of the gap.
Added
- A webhook for BGP sessions. Until now a BGP peer could sit down for hours and nothing would tell you — the history was recorded but nothing read it. Subscribe to BGP Session Down to be told when a peer that was up goes down, or when a session restarts between two samples (a short drop that the five-minute history would otherwise hide). A peer you disabled yourself never triggers it, and neither does one that was already down before mikr started.
- mikr now notices when its own history has holes. If a device stopped being sampled while it was up and online — a failed read backs collection off for half an hour — that is reported instead of quietly leaving a gap in the graphs. Devices that were offline or rebooted are not counted, and a recently added device is measured only over the time it has been watched.
- Both are visible to the MCP server as well: asking an assistant "what is wrong right now" now includes BGP sessions that are down or flapping, and devices whose history has gaps.