GeoLeaf Core API - v3.19.0
    Preparing search index...

    Interface SyncStatus

    The write queue as a whole — the four facts every surface showing it must agree on.

    🛑 DELIBERATELY NOT PER-LAYER, and that is the difference with LayerSyncReport. The question this answers is the one a field user asks before closing the application — "is anything of mine still not sent?" — and it has no layer in it. Splitting it per layer would force every caller to re-aggregate, and each would choose its own set of "owed" states; three such choices already existed in this repository, and they disagreed.

    owed and quarantined are disjoint: an entry set aside is blocked, not owed. Summing them would make a drain look idle while captures sat unsent under a named motive.

    interface SyncStatus {
        online: boolean;
        owed: number;
        quarantined: number;
        lastSyncAt: number | null;
    }
    Index
    online: boolean

    false only when the browser positively says so.

    owed: number

    Entries still owed to the server — pending, failed and inFlight together.

    quarantined: number

    Entries set aside with a named motive; blocked rather than owed.

    lastSyncAt: number | null

    Epoch ms of the last accepted push, or null when the server never accepted one.