Skip to content

Releases: fredrikloch/PacePartner

v.1.0.5

Choose a tag to compare

@fredrikloch fredrikloch released this 15 Mar 10:02

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

Choose a tag to compare

@fredrikloch fredrikloch released this 13 Mar 17:20

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 /tools hub 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_token fallback in getToken(), 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

Choose a tag to compare

@fredrikloch fredrikloch released this 08 Mar 17:09

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