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¶
- TEST WEBSITE IMMEDIATELY — Don't wait for full import
- Debug route visibility with current 9,100 routes
- Region enrichment completes (~40 min more)
- Run with --firestore flag to commit region data
- 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 acceptFriendRequestparameter 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:
IapServicescaffold,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 |