Context / Focus for Today
Onboarding and polish day. New users now get a guided product tour. Landing page got a mobile-first redesign. Fixed a batch of Intervals.icu export issues for distance-based running workouts. Continued the ESLint cleanup — now at zero warnings.
Things I Got Done Today
Product Tour for New Users
Built an interactive onboarding experience using Driver.js.
- PR #301 feat: add driver.js product tour for new users — step-by-step walkthrough of key features for first-time visitors
- Highlights the calendar, AI coach, workout builder, and sync menu
Landing Page Mobile Redesign
Major improvements to the mobile experience.
- fix: redesign landing page mobile experience for iPhone-sized screens — completely reworked layout for small viewports
- fix: make navbar logo background transparent
- fix: use FSinfinity.png for loading spinner logo
- fix: restore Discord icon to landing page footer
Intervals.icu Export Fixes
Resolved issues with distance-based running workout exports.
- fix: flatten distance-based repeats for Intervals.icu Zwift sync — nested repeats were causing export failures
- fix: use ZWO Distance attributes for distance-based running workouts — proper schema compliance
- fix: pass durationMode to Intervals export + infer from steps — auto-detect distance vs time
- fix: use description format for all running Intervals.icu exports — consistent output
AI Coach Improvements
Better error handling and usage tracking.
- fix: show error when AI claims to create workouts but returns none — clearer feedback when something goes wrong
- fix: add AI usage logging to streaming coach endpoint — track costs per conversation
- fix: NaN% in AI costs when total is zero — handle edge case in analytics
- refactor: consolidate AI coach system prompt (59% smaller) — faster, cheaper responses
Code Quality
Eliminated all remaining ESLint warnings.
- fix: eliminate all 1,736 ESLint warnings (0 errors, 0 warnings) — complete cleanup from yesterday's 464 errors
- fix: resolve build-blocking type errors in Strava and coach routes
Early Access & Admin
- feat: add early access middleware and session hint cookie — gate beta features for specific users
- feat: add per-user activity table to admin analytics dashboard — see who's using what
- feat: add connected indicators to sync menu service headers — visual feedback for connected integrations
Bug Fixes
- fix: Strava sync failures — wrong table names, hidden errors, stale error state
- fix: remove non-existent strava_activity_id column from cron sync
- fix: workout time estimates now update when step content changes
- fix: anonymize competitor names to Platform A and Platform B in comparison chart
- fix: revert Final Surge pricing to $6/mo in comparison chart — fact-checked and corrected
Documentation
- docs: add detailed Excalidraw architecture diagram of codebase
- docs: update FORGARRICK.md with Intervals.icu export debugging saga
- docs: update FORGARRICK.md with invisible AI spend debugging story
- docs: update FORGARRICK.md with comparison chart fact-checking lessons
Commits Today
- 1 PR merged (#301 — product tour)
- Major: Driver.js product tour for new user onboarding
- Major: Landing page mobile redesign for iPhone-sized screens
- Major: 1,736 ESLint warnings eliminated (following yesterday's 464 errors)
- Intervals.icu: Fixed distance-based workout exports
- AI coach: 59% smaller system prompt, better error handling
Notes / Observations
- Onboarding matters. New users were dropping off before discovering key features. The Driver.js tour guides them through calendar → AI coach → workout builder in 60 seconds.
- Mobile-first wasn't mobile-first. The landing page looked rough on iPhone. Fixed with a proper responsive redesign — sticky nav, readable text, no horizontal scroll.
- Distance workouts are different. Running workouts measured in miles/km need different export attributes than time-based ones. Intervals.icu's ZWO format has specific Distance elements.
- From 464 → 1,736 → 0. The ESLint cleanup snowballed — fixing errors uncovered warnings. Now CI will catch any new issues immediately.
Momentum Score: 8 / 10
Good progress on user experience and technical debt. The product tour is a real onboarding win — new users will actually discover features now. Mobile landing page is night and day better. Intervals.icu exports are solid for distance-based workouts. The 1,736 warning cleanup feels great — clean codebase, happy CI.