Skip to content

Remove bonus/optional run concept#196

Merged
psjostrom merged 4 commits into
mainfrom
chore/remove-bonus-runs
May 14, 2026
Merged

Remove bonus/optional run concept#196
psjostrom merged 4 commits into
mainfrom
chore/remove-bonus-runs

Conversation

@psjostrom

Copy link
Copy Markdown
Owner

Summary

  • The Volume Trend tooltip showed identical Planned and Total for every week because the bonus|optional regex in VolumeTrendChart matched nothing the planner actually generates.
  • Drop the entire bonus/optional concept rather than patch the regex — all planned events are just planned events.

What changed

  • VolumeTrendChart: collapse to one Planned bar + one Actual bar, drop plannedOptional/plannedTotal and the "Optional" legend chip
  • Drop bonus|optional regex sniffing from IntelScreen, AgendaView, eventStyles, constants category mapping, adaptPlan external_id branch
  • Adapt prompt example: "Bonus easy" → "Easy"
  • CLAUDE.md: drop Saturday-bonus naming rule and Easy / Bonus row in Fuel Taper
  • Free Run note no longer claims to be "bonus volume" — free runs are unstructured, not optional
  • Tests: drop bonus-style + bonus-parsing tests; rename three parser tests that used "Saturday bonus" as fixture text

Untouched (intentionally)

  • generateFreeRun and the "free" DayRole — free runs are a distinct concept (no rules, do whatever you want), not optional/bonus
  • lib/demo/fixtures.ts historical Bonus Easy entries — frozen demo data; with classifiers gone they now render as plain easy events

Test plan

  • npx tsc --noEmit clean
  • npm run lint clean
  • npm test → 1427/1427 passing
  • Hover the Volume Trend chart in the running app and confirm the tooltip shows just Planned : X km and Actual : Y km

The Volume Trend tooltip showed identical Planned and Total values for
every week because the optional/bonus classifier in VolumeTrendChart
matched nothing the planner generates today. Rather than patch the
regex, drop the whole concept: all planned events are just planned
events.

- VolumeTrendChart: collapse to one Planned bar + one Actual bar,
  drop plannedOptional/plannedTotal/the "Optional" legend chip
- Drop bonus|optional regex sniffing from IntelScreen, AgendaView,
  eventStyles, constants category mapping, adaptPlan external_id
- Adapt prompt example: "Bonus easy" → "Easy"
- CLAUDE.md: drop Saturday-bonus naming rule and Easy/Bonus row in
  Fuel Taper
- Free Run note no longer calls itself "bonus volume" — free runs
  are unstructured, not optional

Free runs (the "no rules" Saturday session) are unchanged. Demo
fixtures keep their historical "Bonus Easy" names; with classifiers
gone they now render as plain easy events.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@vercel

vercel Bot commented May 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
springa Ready Ready Preview, Comment May 14, 2026 2:34pm

- docs/workout-reference.md: delete Example G (Bonus Easy) — the
  CLAUDE.md-anointed reference doc was still teaching a workout type
  the system no longer generates
- lib/workoutGenerators.ts: make Free Run truly free — 1 hour, no
  pace zone (z1 → null/null bands), note text matches the unstructured
  step. Previously the note claimed "no rules" but the watch dictated
  z2 pace bands for 30m.
- lib/eventStyles.ts + app/components/AgendaView.tsx: drop the
  redundant `if (race) return brand` branches that became identical
  to the fallback after the bonus branch was removed
- scripts/demo-snapshot.ts: strip "Bonus" from normalized workout
  names so future snapshots stay clean
- lib/demo/fixtures.ts: rename two historical "Bonus Easy" entries
  to "Easy" to match the new naming

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@psjostrom psjostrom merged commit 20f4557 into main May 14, 2026
5 checks passed
@psjostrom psjostrom deleted the chore/remove-bonus-runs branch May 14, 2026 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant