Releases: fredrikloch/PacePartner
Releases · fredrikloch/PacePartner
Release list
v.1.0.5
Summary
This release packages the latest staging work for production on main, focused on
strength-training support, lifecycle email reliability, and content updates.
Highlights
- Added Hevy API integration for strength session generation and sync.
- Added Liftosaur MCP provider support for strength planning workflows.
- Added Missed Workout Replanner guidance/design updates.
- Added a beta notice for strength apps in the product experience.
- Improved reliability by throttling Resend dispatches.
- Fixed Supabase user-linking conflict handling by deleting placeholders before linking.
v.1.0.2
Release Notes — PacePartner.app
What's New
New Features
- Taper Planner — Public-facing tool that imports races from Intervals.icu and generates exportable taper plans with LLM summaries. Includes abuse protection and SEO optimisation.
- HRV Decision Tool — New tool page that auto-fills metrics for logged-in users and gives a go/no-go training recommendation based on HRV data.
- Tools Page — Unified
/toolshub listing the Taper Planner, HRV tool, and links to blog posts. Accessible from the dashboard sidebar. - Configurable Daily Update Time & Timezone — Athletes can now choose their preferred timezone and the time of day they receive their daily Telegram briefing (default: 07:00 local time).
- Weekly Email Opt-Out Setting — Groundwork for weekly coaching summary emails with a user-facing opt-out toggle (hidden until SMTP is configured).
- Recent Activities in AI Context — The last 7 days of completed activities are now included in the LLM chat context for more relevant coaching responses.
- Daily Briefings in Web Chat History — Scheduled daily briefings sent via Telegram are now loaded into the web dashboard chat history.
- Dashboard Sidebar Tool Links — Quick links to the Tools page from the logged-in dashboard.
- Event-Type Differentiation — Notes and races are now visually differentiated from workouts in the dashboard event list.
UI & Design
- PacePartner.app Rebrand — Logo, branding, and colour scheme unified across landing page, dashboard, tools, and blog pages. Image-based logo restored on all pages.
- Refreshed Landing / Tools / Blog UI — Design spec aligned with the dashboard: consistent card styles, typography, and layout.
Bug Fixes & Reliability
- Auth Login Loop Fixed — Resolved multiple causes of the login redirect loop: token storage key mismatch, missing
auth_tokenfallback ingetToken(), and a CSP violation combined with a token race condition on page load. - Rate Limiting — Relaxed per-IP auth rate limiting to avoid legitimate users being locked out on shared IP addresses (e.g. office networks).
- Stripe Webhook Handling — Fixed user updates when checkout metadata was missing; added fallback to Stripe customer lookup and graceful handling when no user is linked to a customer.
- Telegram Error Handling — Markdown parse failures now fall back to plain text; a proper error handler is registered to prevent uncaught exceptions crashing the bot.
- Startup Config Check — Strict startup validation is relaxed in staging/development environments.
Blog
- "Why Self-Coached Athletes Need Structure" — New blog post.
- "When to Skip a Training Session" — New blog post.
v.1.0.1
This release ships a more reliable authentication flow, a new in-app support workflow, and several production safety fixes.
What’s new
- Added Google sign-up and sign-in via Supabase OAuth
- Improved auth callback and session handling for Google and magic-link flows
- Split Google and email login into clearer separate options in the auth modal
- Added in-app support requests from the dashboard and chat
- /help now links users directly to support
- Optional GitHub issue sync for support tickets
- Prevented daily Telegram sends to users without a valid Telegram chat
- Disabled Plausible analytics on non-production hosts
- Expanded CI to run on PRs to both staging and main
- Fixed boolean coercion issues when persisting user flags
- Reduced noisy logging for expected expired/invalid Supabase JWTs