Back to Developer Logs

Build Log — February 26, 2026

Build Log — February 26, 2026

What We Shipped

Today was a cleanup sprint on mobile — a lot of small things that were broken or just felt rough in the hand.

  • View Workout opens correctly on mobile — Tapping a workout with recorded data was quietly navigating away from the app instead of opening a details sheet. Root cause: router.push('/workout/:id') works fine on desktop, but on mobile it's a hard page nav that drops you back at root. Now always opens ActivityStatsModal in-place on mobile.

  • Race/goal events in calendar — The mobile calendar had zero awareness of events. Added event rendering to the day detail panel: a flagged amber card appears above workouts for any events on that day, tapping it opens the full event detail.

  • Metric labels that teach — CTL, ATL, and TSB are second nature to data-heads but opaque to new athletes. Renamed labels everywhere to "Fitness (CTL)", "Fatigue (ATL)", "Form (TSB)" and added one-line definitions ("42-day avg", "7-day avg", "fitness minus fatigue") to the Training Load card on the home tab.

  • Profile sheet now scrolls — The settings menu was getting clipped. Turned out overflow-hidden on the root div was the culprit. Removed it and added proper bottom padding before Sign Out.

  • Sticky coach input bar — Input field now sticks above the nav bar and lifts with the keyboard, so it doesn't get covered mid-conversation.

  • Home header name fallback — Email-prefix names like ggan93 were showing before the real name loaded. Changed the fallback to "Athlete" so there's never a jarring flash of account data.

  • Post-workout detail page — New dedicated /workout/:id page with a Strava-like layout for reviewing completed activity data on desktop.

  • Coach conversation history — Added a sheet to browse and switch between past AI coach conversations on mobile.

What We Learned

Mobile has a fundamentally different routing model — router.push is great on desktop but destructive on mobile SPAs. Any time you want to "open details" on mobile, it needs to be a modal/sheet, not a page nav.

What's Next

  • Verify the day's fixes look right in production (Vercel deploys are live)
  • Keep picking through mobile edge cases — the calendar and coach tabs still have room to improve