Back to Developer Logs

Build Log — April 24, 2026

Build Log — April 24, 2026

What We Shipped

FORM Intensity Labels Now Match the Real Schema

Commit 4b41ad95 fixes a naming mismatch in the FORM workout payload builder by switching intensityLevel from easy/moderate/hard to low/moderate/high. Good fix. Schema mismatches like this are annoying because they look harmless right up until an integration starts rejecting data, misclassifying workouts, or silently doing the wrong thing.

The change lives in lib/form/workout-builder.ts, which is exactly where it should be: at the translation layer that turns internal workout structure into the payload an external system expects. The summary logic now maps harder efforts to high, moderate efforts to moderate, and everything else to low, so the exported payload matches the contract instead of making up a close-enough vocabulary.

That is not flashy work, but it is product work. Integrations get judged on whether they feel dependable, not on how creative the enum names were. If Flow State says it can build and export workouts to FORM, the payload needs to speak FORM's language precisely.

The Takeaway

Today was a one-commit day, but a useful one. Tightening the payload contract for FORM reduces avoidable integration friction and makes workout export behavior more trustworthy, which is the sort of small correction that saves bigger debugging sessions later.