MotorSignal-App/website
Developer 6956e809a3 fix(website): truthful group-ride creation — no false success, no fabricated GPS (Phase 3)
Creating a ride from the hub had two integrity problems:
- The "Created … success" toast fired optimistically before the Firestore write, and a
  commit failure was only console.error'd — so a user could be told the ride was created
  when nothing persisted (the ride would then vanish on the next snapshot).
- Every created ride wrote a hardcoded meetingPoint at 34.5378, -83.9849 (Helen, GA)
  regardless of the typed location — fabricated GPS attached to real rides.

Fixes:
- Report success only after `batch.commit()` resolves; on failure, roll back the optimistic
  insert and show an error. When there is no authenticated session / Firestore, keep the
  local entry for responsiveness but make no cloud-success claim.
- Extract buildWebGroupRidePayload (pure): stores the rally point as displayName/address
  text and omits latitude/longitude (the web form has no map picker / geocoder, so we never
  fabricate coordinates). mapFirestoreRideToSummary already treats a missing coordinate as
  "not pinned yet".

Join-by-code, join/leave, edit, and delete flows were reviewed and persist/authorize
correctly; no changes needed there.

Tests: buildWebGroupRidePayload asserts no fabricated lat/lon, rally-point text/fallback,
authoritative organizer/access fields, scheduled-time handling, and club identity. Existing
group-ride UI tests remain green.

Known limitation: true address autocomplete and automatic route-distance calculation require
a geocoding/routing API that does not exist in this codebase; distance and rally point remain
free-text until that backend lands.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 12:49:16 -04:00
..
app feat(website): grounded FAQ and validated contact on Support Center (W2) 2026-10-14 12:11:20 -04:00
components fix(website): truthful group-ride creation — no false success, no fabricated GPS (Phase 3) 2026-10-14 12:49:16 -04:00
docs docs(website): device-connections backend contract for the full "build real" feed (W-devices) 2026-10-14 12:12:02 -04:00
lib fix(website): truthful group-ride creation — no false success, no fabricated GPS (Phase 3) 2026-10-14 12:49:16 -04:00
public/images fix: restore website visual assets and shell 2026-09-13 03:45:35 -04:00
test-support fix: resolve Android CI breakpoint overflow and address Codex PR #28 findings 2026-10-09 18:53:39 -04:00
tests fix(website): truthful group-ride creation — no false success, no fabricated GPS (Phase 3) 2026-10-14 12:49:16 -04:00
.env.example fix(website): isolate Firebase configuration for staging and enforce safety guards 2026-10-08 10:50:28 -04:00
.gitignore Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
AGENTS.md Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
CLAUDE.md Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
next-env.d.ts Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
next.config.ts feat(website): expose and verify deployed Git revision (#13) 2026-09-20 18:59:17 -04:00
package-lock.json feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
package.json feat(core): reconcile local development, hybrid design, sensor fusion, and docs 2026-10-09 05:12:01 -04:00
tsconfig.json Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00
vitest.config.ts fix(website): isolate Firebase configuration for staging and enforce safety guards 2026-10-08 10:50:28 -04:00