Ruckfecta Changelog

What we have shipped in Ruckfecta — new features, improvements, and fixes — newest first. Subscribe via the RSS feed at /changelog.rss to be notified the moment something new lands.

July 4, 2026 — Share card landing page improvements + e2e share dialog tests

  • Public share landing page (`/s/recap/:token`) now shows a card-type label badge (Workout Card, Monthly Recap, etc.) and a Copy Link button so viewers can forward the URL without downloading.
  • Playwright e2e suite now covers all 4 share card endpoints (ruck, monthly, badge, challenge) — verifying the `X-Share-Token` header is returned and the `/api/share/public/:token` lookup returns the correct shape. UI tests verify the workout and monthly-recap share dialogs surface Facebook and X buttons that link to `/s/recap/` URLs.

June 10, 2026 — Teams and Chapters are now Squads and Clubs, under one hub

  • Chapters are now called Clubs and Teams are now Squads across the whole app. Everything works exactly as before — only the names changed (Captain stays Captain).
  • Clubs and Squads now live together under a single "Clubs" spot in the menu, with Discover, My Clubs, and My Squads in one place instead of two separate sections.
  • Old links to the previous Chapters and Teams pages now forward automatically to the new Clubs and Squads pages, so saved bookmarks and shared links keep working.

June 8, 2026 — Dismiss un-retryable Garmin sync failures

  • Operators can dismiss Garmin sync failures that can't be auto-retried, clearing them from the 24-hour "needs attention" count while keeping them visible as dismissed.

May 29, 2026 — Announcement salutes, member bans, and self-driving challenges

  • Members can now salute and comment on chapter and team announcements, turning one-way notices into a back-and-forth.
  • Chapter owners can ban a member to remove them and stop them rejoining.
  • Operators can retry dropped Garmin activities straight from the admin dashboard.
  • Community challenges now flip between upcoming, active, and finished automatically based on their date range.
  • Challenge leaderboards use explicit start and end dates, so the standings always cover the right window.

May 26, 2026 — Redesigned dashboard, tiered referral badges, and a tidier invite menu

  • Tiered referral badges (Bronze, Silver, Gold, Platinum) plus "welcomed by" credit, so the people who bring others in get recognized.
  • The dashboard got a top-to-bottom rework, starting with a responsive two-column layout that adapts from phone to desktop.
  • The Training Log and Activity Feed are now collapsible, so you can fold away whatever you are not using.
  • A single, tidier banner area shows one important thing at a time instead of stacking notices, alongside a tighter stat grid.
  • A month picker and a conditions filter on the Training Log make it quicker to find past rucks, and the conditions filter now applies to your CSV export too.

May 15, 2026 — Disaster recovery runbook

  • An internal 3 a.m. disaster-recovery runbook covering the seven scenarios most likely to take Ruckfecta down: deploy regression, Neon outage, accidental data deletion, Stripe webhook problems, Resend outage, compromised secret, and Replit region outage.
  • A "First 10 minutes" phone-screen checklist at the top of the runbook so the operator does not have to think when paged.
  • Quarterly Neon point-in-time-restore drill section with the exact branch-restore and smoke-SQL commands, plus a drill history log.
  • Drill history now includes the real production baseline numbers (active users, total workouts, active chapters, last-workout timestamp) so any future restore drill has concrete counts to match against.

May 13, 2026 — External uptime monitoring on BetterStack

  • BetterStack pings `/api/health` and `/` every three minutes from multiple regions and pages Rich by email plus mobile push when either endpoint goes red.
  • Our internal uptime-monitoring playbook captures the setup steps, alert routing, and the rationale for picking BetterStack over UptimeRobot and Cronitor.
  • The `/api/health` endpoint is now intentionally unauthenticated and exposes nothing secret, so external pingers can hit it without any credentials.

May 7, 2026 — Operating costs panel and config-warning banner in admin

  • New **Costs** tab on `/admin` fed by `GET /api/admin/costs`. Shows the monthly cost stack (Replit, Neon, Resend, PostHog, domain, Stripe fees), MRR, net, gross margin, breakeven League-chapter count, and cost-per-active-user this month.
  • Config-warning banner on the admin dashboard so missing operational config (for example `ADMIN_OVERVIEW_EMAIL` being unset) surfaces visibly instead of silently disabling the daily admin overview email.
  • Stripe fees on the Costs panel are computed live from active subscriptions (2.9 % plus 30 cents per charge) instead of being a hard-coded constant.
  • The daily admin overview scheduler now logs a one-time warning and records a `skipped` status when its email recipient is missing, so the admin Scheduler Health table makes the misconfiguration obvious.

Features Shipped

Every new capability that makes its way into Ruckfecta — from leaderboard filters and embeddable widgets to club tools, Garmin sync upgrades, and operational dashboards — is logged here under a New section so you always know what is available today.

Improvements and Polish

Performance work, copy clean-ups, scoring refinements, and quality-of-life upgrades to existing features land in the Improved section of each entry. We surface them so the product stays predictable and so paying clubs can spot the changes that matter to them.

Fixes and Security Hardening

Bugs squashed, billing edge cases handled, and security vulnerabilities patched show up under Fixed. We log security work publicly once it ships so clubs, captains, and individual ruckers know exactly when an issue was resolved.