Commit Graph

14 Commits

Author SHA1 Message Date
Developer 20da9ee27d feat(core): reconcile local development, hybrid design, sensor fusion, and docs
- Consolidate Hybrid v1 tokens, theme extensions, and core UI components (HybridCard, HybridMetricTile, HybridRidingActionBar, HybridStaticRecBadge)
2026-10-09 05:12:01 -04:00
Developer 368858670d feat(website): add club moderation, stats, and group rides management 2026-10-02 11:07:44 -04:00
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 54886753b7
feat(ops): add dual speedtest options, support ticket fixes, cms sync, and overview card redesign (#23)
Co-authored-by: Developer <dev@example.com>
2026-09-22 01:38:54 -04:00
Billie Ponder f20c1d13e6
fix(ops): align audit result constraints, action history parsing, and startup reconciliation (#21)
Co-authored-by: Developer <dev@example.com>
2026-09-21 21:28:53 -04:00
Billie Ponder fb67252bc8
feat(ops): add speedtest, cms persistence, support ticket db storage, and action resiliency (#18)
Co-authored-by: Developer <dev@example.com>
2026-09-21 10:46:09 -04:00
Billie Ponder cf7c99b210
feat(ops): implement deployment controls, service restarts, and action auditing (phase 2) (#17)
Co-authored-by: Developer <dev@example.com>
2026-09-21 02:56:58 -04:00
Billie Ponder 7efd29a214
feat(website): expose and verify deployed Git revision (#13)
* feat(website): embed deployment revision

* feat(website): expose deployment revision endpoint

* fix(website): normalize revision variable name

* fix(website): normalize revision variable name

* feat(deploy): verify exact website revision

* test(website): cover deployment revision contract

* ci(website): validate deployment revision contract

* fix(deploy): resolve package paths from repository root

* fix(deploy): reject dirty website sources before assigning deployment revision

- Check git status --porcelain on website/ and refuse deployment if uncommitted changes exist.

- Add assertions in deployment-revision.test.cjs to enforce dirty working tree rejection.

---------

Co-authored-by: Developer <dev@example.com>
2026-09-20 18:59:17 -04:00
Billie Ponder 9d99bfa4e4
feat(ops): implement production operations infrastructure dashboard (phase 1) (#14)
* feat(ops): implement production operations infrastructure dashboard (phase 1)

- Add backend read-only infrastructure metrics collector (CPU, RAM, swap, disk with 80%/90% thresholds, uptime, network cumulative totals, systemd service allowlist) using standard library only (no psutil).

- Register GET /api/v1/ops/infrastructure endpoint guarded by require_ops_roles('operator', 'owner').

- Add Next.js API proxy route /api/ops/infrastructure validating ops session cookie and forwarding to backend.

- Implement dark-surface OperationsInfrastructure component in website admin console with 30s visibility-gated polling and overlap prevention.

- Add comprehensive backend and frontend test suites (8 backend tests, 43 ops-experience tests).

* fix(ops): query internal website version endpoint defensively on verified port 3001

- Query internal website GET /api/version on verified production listener http://127.0.0.1:3001 (configurable via WEBSITE_INTERNAL_URL).

- Parse JSON defensively with a 4096-byte response bound and validate exact 40-char hex revision pattern.

- Add comprehensive tests for valid, missing, malformed, oversized, and unreachable version responses.

- Do not expose internal URLs or connection errors in API responses.

* fix(ops): map postgresql service to cluster unit postgresql@14-main and preserve health errors

- Map public logical service ID 'postgresql' to fixed systemd unit 'postgresql@14-main'.

- Reject direct systemd unit names and arbitrary service names.

- Preserve HTTP 5xx responses as degraded on /api/health before root fallback.

- Add regression tests for postgresql unit mapping, API response name stability, and health 5xx preservation.

---------

Co-authored-by: Developer <dev@example.com>
2026-09-20 17:14:21 -04:00
Developer d5dcc97495 feat(website): standardize dark glass design system, obsidian contrast buttons, and rider account management 2026-09-18 18:35:31 -04:00
Developer fa2fccd137 feat(ops): add incident management, user administration, support tickets, and website CMS 2026-09-18 18:35:12 -04:00
Developer 8681e6f259 feat: add Operations incident management 2026-09-10 14:48:08 -04:00
Developer 55b3a5908a feat: add isolated MotorSignal Operations console 2026-09-10 08:17:06 -04:00
Developer 912b4d2a45 Improve ride recording and telemetry workflows 2026-09-08 02:13:03 -04:00