• v0.1.3 451376e497

    v0.1.3 — DeFlock via Overpass + per-source health UI

    .leviathan released this 2026-04-29 01:36:47 +00:00

    The cdn.deflock.me CDN is gated behind Cloudflare bot mitigation that
    mobile HTTP clients can't pass. The live deflock-app Flutter client
    abandoned that path; it POSTs Overpass-QL queries directly to
    overpass.deflock.org (with overpass-api.de as a fallback). Verified by
    hitting the same endpoint from curl — 22 ALPRs returned for the
    Springfield VA bbox, matching the user's screenshot of the working app.

    DeflockClient rewrite:

    • POST [out:json][timeout:25];(node[surveillance]type=ALPR;);out body;
    • 5 km half-width bbox around the user
    • 24h on-disk cache keyed by 0.05° grid cell (revisits don't refetch)
    • Returns sealed FetchResult: Success(points) | Failed(reason)

    DeflockScanner update:

    • Replaces 20° tile concept with distance-based refetch (1.5 km threshold)
    • Records SourceHealth on each fetch outcome

    Waze: reCAPTCHA gating confirmed. WazeClient.fetchPoliceNear now returns
    sealed FetchResult; WazeScanner records SourceHealth.FAILED with
    "Upstream blocked (HTTP 403)" so the user sees why no Waze data is
    flowing instead of silent zeros.

    New fusion/SourceHealth.kt — per-source MutableStateFlow registry,
    record(source, ok, message) + reset() called on service start/stop.

    UI: SourceRow in the bottom-sheet drill-down now shows the health
    message in orange when status = FAILED instead of "no detections".

    versionCode 3 → 4, versionName 0.1.2 → 0.1.3.

    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

    Downloads