—
Signed-in account and API access
Paste this on other devices (e.g. iPad) if the login flow can't reach the Worker.
Drift Analysis dashboard release history
⏳ N pending sync chip in the action bar shows the queue depth; tap it to see each pending action with Retry and Remove buttons. Conflict rule is last-write-wins — the boat is authoritative for what happened in the water.navigator.onLine. Hover for a tooltip.dtHours > 0, so two ingestion calls that landed in the same Unix second (Myriota timestamps are second-resolution, and satellite passes can deliver multiple packets per second) slipped through. Caught by re-running the Darwin smoke test: both calls got the same fixed_at and the jump was marked clean again.distance > 500 m guard stops small jitter cases from ever tripping the rule, no matter what the implied speed says.id column, so assessQuality saw undefined for last_lat / last_lon / last_fix_at and silently skipped the distance check. Caught by a smoke test that posted a Fitzroy → Darwin jump (~1900 km in 44 s) and got quality: "clean" back. The lookup now selects the denorm columns, and the null-guard uses != null so future callers can't recreate the bug with an undefined field.schema/0004_reset_test_pollution.sql — DRIFT-051's denorm state was polluted with Darwin coordinates during the v3.7 test run. Paste this in the D1 Console to reset before re-testing.POST /api/ingest/myriota endpoint that speaks Device Manager's actual webhook shape. Parses the escaped Data JSON string, decodes each 20-byte hex payload using the DriftSpawn binary format, and delegates into the same code path as the idealised /api/ingest. Point Myriota's custom destination at this URL when you register the first live module.config.h now includes the exact DriftSpawn_message_t struct definition at the top, so firmware and decoder can never drift out of sync. Layout: seq (u16), lat_e7 (i32), lon_e7 (i32), fixed_at (u32), sst_c100 (i16), batt_mv (u16), mode_sats (u8), hdop_x10 (u8) — 20 bytes exactly, matching Myriota's per-message maximum.dedup: true flag so you can tell it happened.quality: "suspect" in the track_points table. Suspect fixes are stored but do NOT update the drifter's last_lat / last_lon, so the map stays anchored to the last clean position rather than teleporting on a garbage lock. Requires a one-time schema change — see schema/0003_track_point_quality.sql.msg_per_month, so spawn-cadence and long-term profiles use their own appropriate cutoffs.@media (hover: hover) and (pointer: fine), so an iPad with a paired trackpad or mouse does get hover behaviour._headers file for Pages caching — HTML entry points now serve with no-cache, must-revalidate, and vendor assets with a one-year immutable cache. Fixes the "I deployed but it did not update" issue at the source: every future deploy is visible on refresh, no hard reload needed.config_DRIFT-###.h header (copy or download) that drops straight into the Myriota SDK build tree — one #define per parameter, so nothing gets typed twice and every flashed unit carries its identity, sponsor, area, profile, and cadence constants baked into the firmware.simulate_ingest.sh.POST /api/ingest on the Worker, ready to receive real fixes from a Myriota webhook. Accepts one point or a batch, resolves drifters by ID or module serial, auto-links each fix to the open deployment, updates the drifter's last-known position (skipping out-of-order deliveries).INGEST_TOKEN secret rather than the admin key, so a leaked webhook URL cannot pivot into the fleet management API.POST /api/ingest/simulate generates a plausible fix near a drifter's last known position and pushes it through the real ingestion path, so you can smoke-test the whole pipeline without hardware.track_points reads is scheduled for v3.5.track_points reads once v3.3's Myriota webhook lands.position: fixed was never applied). Now correctly covers the whole viewport so you can log in on any device without scrolling past the map to find the fields.?api= in URLs — the Worker URL is now baked into the frontend as a default. Bookmark the plain drift-analysis.pages.dev URL and login works out of the box.?api=<url> for local dev, ?api= (empty) for same-origin once a route is set.deploy.sh now auto-installs wrangler if it's missing (fixes the Cloud Shell wipe-on-session issue) and treats a failed D1 backup as a warning rather than a hard-stop, so schema/worker/pages steps always run.wrangler secret put ADMIN_PASSWORD.POST /api/login worker endpoint validating ADMIN_EMAIL / ADMIN_PASSWORD secrets and returning the FLEET_API_KEY.drift-analysis project.Recording at currently-selected playback speed
Preparing…