Skip to content

EquiTrail — Current Task & Status

Updated: 2026-06-09 19:31 — v3.5.9+59 | GPS bug fix deployed Always update this file when tasks change state.


Current Version

v3.5.9+59 — ✅ uploaded to Play Console internal track (build 59) Watch: versionCode 1059 (unchanged)


Completed This Session (2026-06-05 afternoon)

Builds shipped

Build Key features
v3.5.7+57 Bug fixes: feed shows own rides, friend name overflow, delete in ride detail, leaderboard avatars, freeMaxRides 3
v3.5.8+58 #322 App themes (8 skins), #323 Avatar companion (22 avatars, silhouettes, badge-unlocked), map marker choice, cloud sync for all settings

Route database — Phase 1 complete ✅

OSM horse routes collected from OpenStreetMap (ODbL licence):

Country Routes Km
🇳🇱 Netherlands 2,273 ~7,346 km
🇧🇪 Belgium 72 ~2,193 km
🇩🇪 Germany 786 ~9,817 km
🇫🇷 France 298 ~12,784 km
TOTAL 3,429 ~32,140 km

Files: scripts/osm_routes_nl.json, osm_routes_be.json, osm_routes_de.json, osm_routes_fr.json All routes: authorUid: 'EquiTrail', source: 'osm', isPublic: true

Other additions

  • Backlog: #322 themes, #323 avatars, #324 hazard confirmation (Waze-style)
  • Strategy docs: year1_forecast.md, market_analysis.md both complete
  • Desktop HTML: EquiTrail_Monetisation_Strategy.html — full strategy with market sizing

Session 2026-06-09 — #325 #326 Route database phase 2

✅ Completed

  • #333 GPS bug fix: Grey screen on permission request timeout. Added 30s timeout + retry button.
  • Website routes color: Changed to magenta #FF00FF for visibility, removed walk/trot/galop legend
  • Website deployed: All 55+ region pages live with new route colors
  • FTP tested: equitrail.horse connection working (other projects can use same credentials)
  • Overpass routes extracted: 188,711 horse routes from NL/BE/DE/FR with geometry
  • NL: 18,279 | BE: 15,942 | DE: 75,755 | FR: 78,735

⏳ In Progress

  • Region enrichment: Reverse-geocoding 5,656 existing routes via Nominatim
  • ETA: ~47 min (0.5s/route with rate limit)
  • Output: adds region (Bundesland/province/region) field to routes
  • Status: 5:50 in, ~12% complete

❌ Blocked / Issues

  • Firestore write 188k routes: gRPC DNS resolution error (not quota)
  • System DNS works, Overpass works, but Google Cloud client fails
  • Solution: Will retry from Oracle server or use alternative import
  • Only 5,656 routes currently in Firestore (pre-existing)

⚠️ CRITICAL: WEBSITE USING INLINE JS, NOT routes-region.js MODULE

ROOT CAUSE FOUND: Website HTML has INLINE JavaScript (not using routes-region.js at all) - Old inline code still has green #2D6A4F color - Color change to magenta was only in routes-region.js (never called) - Routes ARE in Firestore (9,100+ confirmed), but display broken

URGENT FIX REQUIRED: 1. Update all HTML files to use magenta #FF00FF in inline route rendering 2. Either: keep inline JS and update colors, OR refactor to use routes-region.js module 3. Test URLs after fix: https://equitrail.horse/routes/nederland/

Broken files: - website/routes/nederland/index.html (inline loadTrails function) - All other website/routes/*/.html files (same pattern)

Verification: - Python query: works ✅ (9,100+ NL routes found) - HTML inline JS: color still green ❌ (L.polyline color:'#2D6A4F') - JS module: never called ❌ (routes-region.js not imported in HTML)

📋 Next Steps

  1. TEST WEBSITE IMMEDIATELY — Don't wait for full import
  2. Debug route visibility with current 9,100 routes
  3. Region enrichment completes (~40 min more)
  4. Run with --firestore flag to commit region data
  5. Test website region filters once regions are populated

✅ Firestore import COMPLETE (Phase 1)

3,429 OSM horse routes are now in Firestore community_trails collection. Import used --from-json flag (bypassed Overpass 504 errors via pre-collected JSON files).


Completed This Session (2026-06-09)

  • Nav bar preferences now reactive via navOrderProvider — changes take effect immediately
  • acceptFriendRequest parameter swap fixed — Google auth users can now accept friend requests
  • Feed tap opens full ride detail card (stats, gait bar, photos)
  • Long-press like count → bottom sheet showing who liked
  • PRO upgrade sheet: removed website pricing (policy compliance), wired IAP products
  • Pre-ride free-limit warning dialog (warns before starting, not after)
  • Retroactive ride save after PRO upgrade in same session
  • 84 Google Play Billing: IapService scaffold, in_app_purchase: ^3.2.0

  • Firestore import: 3,429 OSM routes written to community_trails
  • Overpass retry: exponential backoff, 180s timeout, 4 retries
  • Website route pages: all 51 region pages now show official routes (from Firestore) + community rides on map with toggle switches
  • Shared module: website/js/routes-region.js
  • Generator: scripts/update_region_pages.py
  • Website country index pages: all 4 country index pages (NL/BE/DE/FR) now show official route counts + km in hero; per-province trail counts on province cards; toggle switches on map
  • Generator: scripts/update_index_pages.py

Session Complete (2026-06-09)

All tasks merged + routes live: - Routes pages unified: official OSM circuits + community rides in one "routes" layer - Live Overpass query adds individual bridleways/horse paths as background network - Bbox filter fixed (anyInBbox) — cross-border routes now show correctly - Firestore community_trails rule changed to allow read: if true for public website access - All 55 website pages deployed (4 country indexes + 51 region pages) - FTP deploy fixed: now uses active mode (Oracle blocks passive data connections) - Deployed routes-region.js with unified layer logic - Backlog: added #325 (auto-name rides), #326 (more data sources)

Data sources research (#326): - ✅ Toerisme Vlaanderen WFS available (free, no key) — horse routes for Flanders - ✅ OSM Overpass — individual bridleways/paths queryable live per bbox - ✅ Staatsbosbeheer GPX — can be scraped per route - ⏳ Routedatabank.nl — requires email request to jrietman@wandelnet.nl for WFS access - ✗ Wikiloc — no public API exists - ✗ RouteYou — no public API exists


TODO — Next Session (priority order)

🔴 Bug fixes still open (needs device testing)

  • #298 Grey screen on track after PRO unlock (needs device)
  • #300 Friend name display (on-device)
  • Verify feed shows own rides end-to-end

🔴 Revenue

  • #138 Mollie payment integration
  • #242 Brevo setup (newsletter)
  • #276 Firebase spend alerts

🟡 App store

  • Apple Developer enrollment (still pending)
  • Play Store screenshots + store listing (#56/#57)

🟠 Next features

  • #316 Free tier redesign (unlimited tracking, 90-day history limit in code)
  • #317 Conversion triggers (6 contextual PRO prompts)
  • #312/#313 Safety: fall detection + no-movement alert
  • #318 Parent Safety / Family PRO

🟢 Route database Phase 2

  • Email KNHS for official Ruiterlabel route data
  • Email Hart van Limburg for partnership
  • PDOK WFS endpoint — fix URL (returned 0 routes, endpoint may have changed)
  • #304 Cloud Function for weekly OSM sync

⚙️ Infrastructure

  • Firestore daily export → GCS backup
  • Keystore → 1Password offline backup
  • DR test due: 2026-09-01
  • Import Uptime Kuma monitors: 192.168.1.111:3001

Known Issues

Issue Status
Grey screen on track after PRO unlock Open #298 — needs device
Friend name overflow Open #300 — needs device
PDOK WFS returned 0 routes Endpoint URL may have changed — investigate
Belgian province detection mixed with NL/DE in output Province bbox overlap in detection algo