FindMyETH changelog

Every tag with its builds. iPhone installs: open the link in Safari on a registered iPhone. Generated 2026-10-10 20:48 UTC.

ios-free-scan-1

preview · iOS

iOS: free scan mode (pick a floor, tap where you are on the map)

v1.1.0

full · TestFlightlive on :8080

v1.1.0: routing v2 (Erxuan: access tiers, OSM outdoor network, vertical repair, golden suite, iOS router mirror) on top of v1.0.0

20 changes
  • tests: skip golden suite when tools/route-eval is absent (server-only API test container)
  • iOS NavGraph: mirror server router v2 exactly (shaft left-states by kind, space classes, exact component precheck, warnings, stairs up/down)
  • routing: ALT off by default (ROUTING_ALT=1 enables) until the real-graph gate has passed
  • routing: collapse 'left shaft' states to the kind (left stairs / left lift)
  • routing: ALT landmark heuristic, RouteResult (cost/reason/heuristic switch), staff room semantics on v2
  • venue-build v2: untagged edges inside a non-public unit carry that unit as room (endpoint-room rule applies)
  • web: routing v2 response support (access banner, unverified note, warning dedupe, OSM attribution)
  • docs: CONTRACT graph schema 2 (access, OSM outdoor kinds, vertical repair)
  • venue-build: tests for graph v2 (access rules, vertical repair, OSM snapping, determinism, stacking) + real-data acceptance
  • venue-build: write graph/<campus>.v2.json after the v1 graph (skip with --skip graph_v2)
  • venue-build graph: stacked connectors no longer skip a floor whose stop overlaps < 0.3 (stack_match weak stop)
  • venue-build v2: last-resort snaps onto small OSM components, isolated entrances keep straight fallback
  • routing: path/road/steps_out kinds, start_m on steps, confidence fields, snap warning at 15 m, v2 graph loading
  • iOS RoutingCoreTests: Linux XCTest runner for the NavGraph router core + Swift/Python parity harness
  • routing: exact fail-fast reachability via component ids per (profile, tier, step_free)
  • route API: profile field (student default), staff-space labels in warnings; access tier tests
  • route-eval: property checks + pytest golden wrapper with capability-based xfail
  • venue-build: graph v2 post-processing (WIP): OSM outdoor network, access tags, vertical repair
  • venue-build: OSM pedestrian snapshot + fetch_osm (Overpass refresh, filter)
  • routing: access field (schema 2) and student/staff profiles with three access tiers

ios-routing-v2

preview · iOS

Merge branch 'wip/iosroute' into feature/improve-routing-algorithm

v1.0.0

full · TestFlight

v1.0.0: beacon hunt, floor selector, AI tour feedback, admin Beacons/Paths/Tour feedback — HG scan campaign build

5 changes
  • improve accuracy: floor selector (GET /api/v2/coverage, missions/plan with to_level transitions) + fix-in-place tour feedback (AI/rule reviewer, in-place mission fixes, path_suggestions source tour_feedback, admin list); web + iOS UI
  • beacon hunt iOS: hunt screen (hot/cold, direction hints, sightings upload), AR/LiDAR place mode with door-plate anchors, leaderboard
  • beacon hunt: server (sightings, placements, confirmation, points, admin, anchors export), venue-build anchors + fleet, web hunt/leaderboard/map layer/admin
  • release: /changelog/ page (all tags with web + IPA links), versioned IPA install pages, permanent web snapshots for full tags
  • deploy: create data/ios before compose up (root-owned mount dir broke the -ipa install page)

ios-mainsync-check

preview · iOS

Merge origin/main (v0.6.0) into feature/improve-routing-algorithm

v0.6.0-ipa

full · IPA

v0.6.0-ipa: clean slate, everything on main staging :8080

3 changes
  • release: full -ipa tags publish the iPhone install page on main staging (:8080/ios/)
  • test: path review batch assertion follows BATCH
  • path review: batches of 6 + 300 s timeout for reasoning models (glm5.2 timed out at 120 s)

ios-posfilter-check

preview · iOS

docs: robust fusion layer, iOS wiring and simulation results

ios-smoothing-check

preview · iOS

web: smooth the me marker and follow camera at display rate

v0.5.0-ipa

full · IPA

v0.5.0-ipa: sensor fusion in iOS nav, AR walk + LiDAR + door-plate OCR, path reports + AI reviewer, admin Paths, PR #4

4 changes
  • paths: route problem reports, AI/rule path review, admin Paths workspace
  • sensors: fuse steps/heading/baro/GPS into iOS navigation, web walk uploads motion, server labels by steps/ARKit/OCR, AR walk
  • seed: demo users/friendships/groups/courses opt-in (SEED_DEMO_USERS); provisioning friendships only with --friends
  • ios: on-device door-plate OCR + Cyrillic homoglyph fold, from PR #2

ios-guidance-check

preview · iOS

ios: live route guidance (Start, follow camera, banner, floor change, reroute, arrival)

v0.4.0-ipa

full · IPA

v0.4.0-ipa: recoverable account key (friends' locations survive reinstalls), background live location on campus

1 changes
  • find-my: password split + recoverable account key (friends' locations survive reinstalls/new devices)

v0.3.8-ipa

full · IPA

v0.3.8-ipa: team IPA release

4 changes
  • release: guard for full tags (releaser allowlist, main only, TestFlight daily cap); docs/RELEASES.md system doc
  • preview: build web in a scratch copy with cached node_modules volume (no root-owned files in the runner workspace)
  • release: v*-ipa full tags (ad-hoc IPA instead of TestFlight); fix preview summary exit code
  • release: tag types full/client/ios/web; preview hosts sharing the staging backend; ad-hoc IPA install pages; full = TestFlight only

ios-demo

preview · iOS

ios-demo

web-demo

preview · web

web-demo

v0.3.7

full · TestFlight

v0.3.7: TestFlight + downloadable IPA

3 changes
  • testflight: also export the signed IPA to disk (kept as run artifact)
  • release: keep iOS archive (+IPA when present) as a per-tag run artifact (30 days)
  • docs: main is the integration branch; TestFlight on tags is live

v0.3.6

full · TestFlight

v0.3.6: automated TestFlight via localhost session

1 changes
  • testflight: run export via localhost SSH session (runner daemon has no login session)

v0.3.5

full · TestFlight

v0.3.5: automated TestFlight

1 changes
  • testflight: set TMPDIR for the LaunchDaemon runner (export 'Copy failed')

v0.3.4

full · TestFlight

v0.3.4: TestFlight with admin key

v0.3.3

full · TestFlight

v0.3.3: TestFlight cloud signing

1 changes
  • testflight: unsigned archive + cloud signing at export (no local private key on CI)

v0.3.2

full · TestFlight

v0.3.2: TestFlight keychain fix

1 changes
  • testflight: dedicated unlocked build keychain (runner has no login session)

v0.3.1

full · TestFlight

v0.3.1: first tag with TestFlight build

v0.3.0

full · TestFlight

v0.3.0: round 3 (routing, fusion, live share, socials, walk map, data, PWA)

20 changes
  • release: tag-driven rollout (self-hosted staging runner, TestFlight job behind TESTFLIGHT_ENABLED), collaboration model, to-do list
  • round 3: corridor routing (+eLink), sensor fusion (TS+Swift, web wired), live share <1 s, socials fixes, Improve accuracy map walk, data integrations wired, iOS-native web polish + PWA, gateway no-cache for SW
  • ios: TestFlight pipeline (scripts/testflight.sh + testflight.env.example + ExportOptions), production push for Release, NO_OPEN for headless make-project
  • compat: ALLOW_LEGACY_REGISTER keeps register-only iOS builds (zip 9810ccb) working in password mode without account takeover (+test)
  • fix: onboarding only once per account (server 'onboarded' flag; login skips opt-ins/avatar on web + iOS)
  • fix(web food): opening hours rendered as text (Food chip + recommendation crashed), dishes for the server's demo day, recommendation 'closed' = final, mobile sheet height
  • fix: admin pages match server shapes (walkability edge_id, coverage, builds, beacons, sessions/replay, overview, audit, sources, menus, missions); web contribute room objects + blocked reasons; 'missed it' skips no longer filed as blocked reports (+test)
  • fix: 401 → login challenge (web + iOS), user_id in user payloads (group names/avatars), design conventions (tint-fill selection, no red actions, skeletons, type scale, tokens, radii), 24h times, indoor label clutter
  • accounts: AUTH_MODE=password (scrypt, login/logout/change password), provisioning CLI (team = admins, judges befriend team), web + iOS login screens
  • web: fix blank map (zoom expression nested in line-width rejected the whole style); log map errors
  • web: fix map collapsing to 0 px height (maplibregl-map position override)
  • v0: FastAPI server (all endpoints incl. /api/v2 contribute + admin), workers, seeds, compose deploy (gateway, postgis, nats, centrifugo, meilisearch, risingwave profile)
  • v0: iOS SwiftUI app (tabs, dual map renderers, on-device routing/search/Spotlight, E2E find-my, OCR, Marauder's mode, build guide)
  • web: contribute chunks in v1 stream format (matches iOS + server processing)
  • v0: ETHPositioning Swift package (parity-tested on Linux), Improve accuracy flow, AR assist
  • v0: web app (mobile + desktop layouts, Socials/Navigate/Schedule/Profile, Android BLE, E2E find-my, Marauder's mode, 3D explorer, admin)
  • v0: venue-build (venue GeoJSON, graphs w/ reconstructed floor links, search index, HG localizer bundle) + positioning-ts with parity tests
  • contract: chain spec 2e638fc (search layout, no-lectures text, hidden Marauder's Map mode)
  • v0: build contract, CLAUDE.md stack note
  • Initialize FindMyETH with agent rules (human-gated main)