| Hello Uknown |
/tools/gain-map-inspector.html.Tests the complete flow: Toast → Click → Modal → mailto:
Missing ID Error: Simulates save without ID → Toast with "View Details" button → Modal with technical details → Email option
Manual test for "session expired". Nothing here may block the GUI: typing and saving must keep working the whole time, and the app must never reload itself.
Simulates WebSocket disconnect and encryption failure errors
View and manage sync error logs stored in localStorage
Send BC Message: Broadcasts a fake record-list-changed event to other tabs
Simulate Active Record: Fires active-record-changed event → toast with action buttons (open in new tab, copy URL)
Simulate Shared View: Renders the toast another device's stream menu → Broadcast raises here (open in new tab, copy URL)
Shows which IndexedDB implementation is currently active and other startup parameters
Tests SharedWorker DB connection and CRUD operations (check console for logs)
Fills the local DB with ~100 repeating-but-unique demo records (links, tables, svg, text) so views aren't empty and search always finds several matches. Idempotent (tops up to ~100) and only ever touches demo-marked records — never your real data. After filling, open /time/list to see them.
🔄 Reseed (force) clears demo records and re-seeds a fresh batch even when the DB already holds real records (Fill skips then, to protect real data). It still only ever touches demo-marked records — your real data is left untouched. Every demo record carries a real gps journey (created ≠ updated place, see the 📍 line in its content) — open any of them and try Meta ▸ Place ▸ Sum.
Availability: local dev & Cloudflare branch previews only — this section is hidden on production (xrec.app).
The update toast fires ONCE per new build, comparing against the build this browser last saw — so on a first visit it stays silent by design, and you cannot see it again without deploying twice. These buttons rewind that "last seen" marker and re-run the check, so the notification appears exactly as it would after a real deploy.
🚀 Everything announces every change the build carries (the "I was away for ten releases" case). 🚀 Last 3 announces just the three newest (one skipped deploy).
Non-destructive: the check re-writes the marker to the current build as it finishes, so afterwards you are back to normal. Your records are never touched.
The same list lives permanently in /settings → Application → What's new.
Clears the downloaded copy of the app (Cache Storage) and loads it again from the server. It is a separate document, served network-only by the service worker, so it opens even when the copy of the app is exactly what is broken.
It never opens IndexedDB. Your records are not part of this — only the app's own files are.
The same door sits in /settings → Application → Repair.