v1.35.0
MinorNov 2, 2026New
- —Season calendar feed (`lib/calendar/*`, `app/api/v1/me/calendar`, `app/api/calendar/feed/[token]`, migration 0036): a rider subscribes to their season in Apple Calendar or any calendar app. Race days plus known entry open and close dates, stable event ids, skipped races and awaiting editions left out.
- —The feed link is a 32-byte token stored only as its hash; `POST` creates or rotates it, `DELETE` revokes it, an unknown or revoked link answers 404. API v1 answers carry `X-PainPlan-Api: 1`.
Changed
- —The site-wide no-store header skips `/api/calendar/feed/`, so the feed keeps `private, max-age=900` and its 404 keeps `no-store`.