Commit Graph

3 Commits

Author SHA1 Message Date
Davide Scaini 966528a0bf feat: Phase 1 — FIT/GPX/TCX extraction via Pyodide in hidden WebView
- extraction/PyodideWebView.tsx: hidden WebView (1×1 px, off-screen) that
  bootstraps Pyodide v0.26.4 from jsDelivr CDN on app startup; loads lxml,
  pyyaml, micropip, fitdecode, gpxpy automatically; installs the bincio wheel
  lazily on the first extraction call via a blob URL (avoids startup delay)
- extraction/extractActivity.ts: typed bridge — extractFile(filename, base64,
  wheelUrl, onStatus) injects JS into the WebView, tracks pending promises by
  request ID, resolves with { id, detail, timeseries, geojson, sourceHash }
- app/_layout.tsx: mounts <PyodideWebView> outside SQLiteProvider at root so
  the runtime warms up as soon as the app opens
- app/(tabs)/import.tsx: replaces the placeholder alert with real extraction;
  reads files as base64, calls extractFile with a progress callback, stores
  detail_json + timeseries_json + geojson + real SHA-256 source_hash; resolves
  wheel URL via GET /api/wheel/version with fallback to /api/wheel/download;
  falls back to bincio.org if no instance is configured
2026-04-24 22:54:59 +02:00
Davide Scaini 79c572bf8b fix: align expo packages to SDK 54 expected versions
Expo's version checker reported mismatches; update to exact expected versions:
  expo-sqlite ~16.0.10, expo-document-picker ~14.0.8,
  expo-file-system ~19.0.21, expo-background-fetch ~14.0.9,
  expo-task-manager ~14.0.9, react-native-webview 13.15.0,
  typescript ~5.9.2

expo-file-system v19 moved the legacy API (documentDirectory, copyAsync,
makeDirectoryAsync) to 'expo-file-system/legacy' — update import in import.tsx.
2026-04-24 11:45:23 +02:00
Davide Scaini b37df88fe1 feat: Phase 0 mobile app scaffold — Expo 55, SQLite, Feed/Import/Settings screens 2026-04-24 10:39:06 +02:00