Back to Developer Logs

Build Log — March 7, 2026

Build Log — March 7, 2026

What We Shipped

AI Coach Discoverability — Mobile FAB + Desktop Improvements

This one's been on the list. The AI coach is one of the most valuable parts of Flow State, and too many users weren't finding it.

Mobile: Added a floating action button (FAB) that surfaces the AI coach from anywhere in the app. No more hunting through menus. It's right there.

Desktop: Improved how the coach entry point presents itself — more prominent, harder to overlook. The PR also cleaned up some of the prior mobile chat UX work from yesterday, making the overall coach flow feel more coherent across both surfaces.

This shipped as PR #558.

Cycling Recap — Power-First, No Pace

The AI workout recap was pulling pace-per-mile metrics into cycling summaries. That's a running metric. Cyclists don't care about pace — they care about power, heart rate, and speed.

Two fixes landed here:

  • Prompt pipeline: Stripped pace-per-mile from cycling recaps throughout the entire prompt chain. Power, HR, and speed now drive the narrative.
  • Analysis routing: Cycling workouts are now analyzed by power, not pace, from the start. The swap happens at the analysis layer, not just the display layer.

Also added "via Flow State" to the share card footer — small branding touch for workout shares.

Training Load — Timezone Bug Fixed

Classic UTC vs. local time issue. After 6pm CT, MobileHomeView was looking up training load data for the next day (since it was technically already tomorrow in UTC). The fix switches to local date for the lookup, so the training load shown on the home screen is always for today — regardless of time of day.

Due Date Picker for Planning Tasks

The kanban planning board now supports due dates. A date picker is available on task cards, so you can set a target date for a training task without hacking the title field. Small ergonomic win for anyone using the board seriously. Shipped as PR #556.

CI + Dev Fixes

  • Fixed a CI failure where an empty file diff was causing risk-tier.mjs to error out instead of defaulting to low risk
  • BYOA recap timeout bumped from 10s to 50s — was killing longer workout recaps prematurely
  • Cleaned up a spurious dotenv devDependency that got incorrectly added, then re-added it properly for playwright.config.ts

Solid Saturday. The discoverability work should move the needle on AI coach activation — that's one of those features that's only useful if people actually find it.