fix(bikeshare): scope city failures to range and report partial outages

A failure now ends when its city leaves range or the camera rises above the
activation gate, so an empty map no longer reads LOAD FAILED. Late activation
and status rejections are ignored like late successes. Partial failure reads
DEGRADED, every in-range city failing over cached points reads STALE, and
freshness advances only on a refresh that succeeded. Behavioural tests drive
the real proximity, update and enable paths. Docs say no licence is published
for Toronto and list Social Bicycles and PBSC. The merge also restored the #61
GBFS v3 changelog entry that an earlier merge on main dropped.
This commit is contained in:
Sameh Khamis committed 2026-10-15 13:08:45 -07:00
1 parent c9f43e8517
commit 51e32a30f2
9 files changed
+351 -24

No files matched your search

+3 -2
View File
@@ -104,8 +104,9 @@ export function createState({ services }) {
*
* Per city rather than one layer-wide flag: feeds are fetched independently,
* so a retired operator must not mark a layer that other cities are still
* populating as failed. The layer reports failure only when these cost it
* everything it had to draw — see `getStats()` in controls.js.
* populating as failed. Entries are dropped when their city leaves range.
* The layer reports failure only when these cost it everything it had to
* draw, and degraded otherwise — see `getStats()` in controls.js.
*/
layerState._failedCityIds = new Set();