Back to Developer Logs

Build Log — February 8, 2026

Build Log — February 8, 2026

Context / Focus for Today

AI Coach power-up day. Added 9 tools that let the coach actually do things — create workouts, check training load, look up activities. Implemented email OTP for passwordless login. Switched CI to self-hosted runner for faster builds.


Things I Got Done Today

AI Coach Tools — Multi-Turn Calling

Major upgrade: the AI coach can now use tools to take actions, not just give advice.

  • PR #302 feat: AI Coach tools with multi-turn tool calling — the coach can now call tools, see results, and respond intelligently
  • feat: Add 9 AI Coach tools with multi-turn tool calling:
    • get_training_context — fetch user's current fitness, goals, recent load
    • get_upcoming_workouts — check what's scheduled
    • get_recent_activities — review completed sessions
    • create_workout — build and schedule workouts
    • update_workout — modify existing workouts
    • delete_workout — remove workouts
    • get_training_load — ATL/CTL/TSB analysis
    • get_activity_details — deep dive on a specific activity
    • search_activities — find activities by criteria
  • test: Add coach tools test suite — comprehensive tests for all tool handlers

Optimistic Event Updates

Instant UI feedback when the AI coach makes changes.

  • feat(ai-coach): optimistic event updates via SSE response (Option B) — calendar updates appear immediately as the AI streams
  • fix: refresh events after AI Coach response — ensure calendar stays in sync
  • fix: use result.content to capture tool call JSON for workout creation — proper parsing of tool responses

Email OTP Passwordless Login

New authentication option for users who don't want passwords.

  • feat: add email OTP passwordless login — enter email, receive code, you're in
  • Magic link alternative for users who prefer codes over links

Self-Hosted CI Runner

Moved CI to self-hosted infrastructure for faster builds.

  • ci: Switch CI jobs to self-hosted runner — no more waiting for GitHub-hosted runners
  • ci: Trigger CI with self-hosted runner — verified working
  • ci: Test self-hosted runner — initial setup and validation

AI Coach Testing

Better tooling for development and debugging.

  • feat: Add API key auth option for AI Coach testing — test the coach without browser auth
  • Add system prompt guidance for context/analysis tools — clearer instructions for when to use each tool
  • fix: add event tool guidance to AI coach system prompt — explicit rules for calendar modifications

Polish

  • Center checkmarks in comparison chart — visual alignment fix
  • Update Strava footer link to use club vanity URL — cleaner link
  • docs: add SSH X11 forwarding fix for clipboard image paste — dev environment notes

Commits Today

  • 1 PR merged (#302 — AI Coach tools)
  • Major: 9 AI Coach tools with multi-turn tool calling
  • Major: Email OTP passwordless authentication
  • Major: Optimistic event updates via SSE streaming
  • CI: Migrated to self-hosted runner

Notes / Observations

  • Tools change everything. The AI coach went from "advisor" to "assistant" — it can now actually create workouts, check your load, and modify your schedule. The multi-turn flow means it can use a tool, see the result, and make intelligent follow-up decisions.
  • Optimistic UI is magic. When the coach creates a workout, it appears on the calendar instantly via SSE — no page refresh, no waiting. Feels responsive and modern.
  • OTP > magic links for some users. Some people don't like clicking email links (spam filters, corporate email clients). A 6-digit code is simpler and more universal.
  • Self-hosted CI is faster. GitHub's shared runners have queue times. Our self-hosted runner starts immediately and has all dependencies cached.

Momentum Score: 9 / 10

AI Coach tools are a game-changer — this is the "agentic" future we've been building toward. Multi-turn tool calling means the coach can have a real conversation: "What's my training load?" → fetches data → "You're a bit fatigued, let me adjust tomorrow's workout" → updates calendar. All seamless. Email OTP rounds out the auth options. Strong feature day.