Commit Graph

17 Commits

Author SHA1 Message Date
Billie Ponder c1aa68ac43
feat(group-rides): secure club join moderation and discovery (Phase 3A) (#26)
* feat(clubs): enable admin group ride governance

* feat(clubs): add secure member ride discovery

* fix(clubs): protect meeting location in ride discovery

* feat(group-rides): secure club join moderation

* test(clubs): update ride discovery expectations

* test(founder-portal): update rides governance expectations

* fix(group-rides): resolve pre-merge findings on join moderation and discovery

- Block participant hard deletes for accepted status and organizer role for all callers

- Support atomic accessUids removal on invitation decline in firestore.rules

- Restrict mutual-block checks to approvals in GroupRideService, allowing decline of blocked requests

- Implement cursor-paginated candidate scanning with block filtering in website discovery API

- Add comprehensive emulator, vitest, and unit tests covering all 5 findings

* fix(discovery): page candidates until 30 eligible rides collected or query exhausted

- Remove artificial 150 candidate scan ceiling in club rides discovery route

- Continue cursor pagination until 30 unblocked eligible rides are collected or upcoming schedule query is exhausted

- Add test verifying pagination continues past 150 blocked rides to collect all 30 eligible rides

---------

Co-authored-by: Developer <dev@example.com>
2026-09-24 12:00:48 -04:00
Billie Ponder 68d4539f90
feat(group-rides): add club-affiliated rides (#10)
Add optional immutable Club affiliation, authorized Club Owner/Admin ride planning, privacy-preserving point access, and narrowly scoped Club admin ride controls.

Club-wide ride discovery remains deferred pending a privacy-preserving architecture.
2026-09-20 07:03:48 -04:00
Developer 4dc6e0526d fix(web): address clubs review findings
- Gate ranks-roles management route on canManageSettings with safe
  unauthorized state, matching sibling founder-management routes
- Enforce HTTPS image URL invariant for club logo/banner in the data
  layer (validateClubImageUrl) and in Firestore rules, preserving
  null/empty clearing
2026-09-20 02:35:37 -04:00
Developer 58193f6de4 feat: add founder club applications workflow 2026-09-09 08:37:34 -04:00
Developer d544292a3c feat: add founder club settings and governance lifecycle 2026-09-09 07:51:48 -04:00
Developer 2e76561f67 feat: add secure club membership lifecycle 2026-09-06 21:46:06 -04:00
Developer 0d8e26750f feat: add secure clubs foundation and membership architecture 2026-09-06 17:44:56 -04:00
Developer 2319222f22 fix: harden group ride privacy and live presence 2026-09-05 14:55:47 -04:00
Developer ae13dd81e1 fix: harden route security and persistence 2026-09-04 14:36:39 -04:00
Developer 23e63350b0 feat: add route planning and sharing 2026-09-04 12:28:21 -04:00
Developer 209987195b fix: harden live group ride runtime lifecycle 2026-09-04 00:54:46 -04:00
Developer 3d957fbf63 feat: add live group ride experience 2026-09-03 23:42:59 -04:00
Developer 173c99d450 fix: harden live group ride privacy architecture 2026-09-03 20:37:26 -04:00
Developer f464d52462 feat: add group rides and meeting locations 2026-09-03 20:19:51 -04:00
Developer 0c2e1a0cac fix: harden rider social privacy and security 2026-09-03 19:47:25 -04:00
Developer 885d562690 fix: harden account deletion lifecycle and cloud cleanup 2026-09-03 16:49:36 -04:00
bponders12-cell 07fc43c6a9 Add Firebase Emulator ownership tests 2026-09-01 21:04:11 -04:00