From 10f910ad98fab16d71ca22ef93b501c40076efdb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 08:24:42 +0000 Subject: [PATCH 1/3] Initial plan From 82c2578d8ed9a9d611c0088923c14c5429fcc690 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 08:27:13 +0000 Subject: [PATCH 2/3] Address PR review comments - fix infinite loop, add button resets, clarify text, add safety checks Co-authored-by: wulfland <5276337+wulfland@users.noreply.github.com> --- .../mesocycles/SplitProgressTracker.css | 10 ++++++++++ .../mesocycles/SplitProgressTracker.tsx | 17 +++++++++-------- src/components/workouts/WorkoutSession.tsx | 11 +++++++++-- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/components/mesocycles/SplitProgressTracker.css b/src/components/mesocycles/SplitProgressTracker.css index fef35dd..08b7b57 100644 --- a/src/components/mesocycles/SplitProgressTracker.css +++ b/src/components/mesocycles/SplitProgressTracker.css @@ -198,6 +198,16 @@ -webkit-tap-highlight-color: transparent; font-family: inherit; width: 100%; + /* Reset default button styles so clickable cards render consistently */ + border: none; + background: none; + padding: 0; + color: inherit; + text-align: inherit; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + outline: none; } .split-card.clickable:hover { diff --git a/src/components/mesocycles/SplitProgressTracker.tsx b/src/components/mesocycles/SplitProgressTracker.tsx index 8a60346..92109f1 100644 --- a/src/components/mesocycles/SplitProgressTracker.tsx +++ b/src/components/mesocycles/SplitProgressTracker.tsx @@ -147,12 +147,16 @@ export default function SplitProgressTracker({ activeWorkout.splitDayId === info.splitDay.id; const handleCardClick = () => { - if (isInProgress && onResumeWorkout) { - // Resume the active workout for this split - onResumeWorkout(); + if (isInProgress) { + if (onResumeWorkout) { + onResumeWorkout(); + } else { + console.warn('Resume workout callback not provided'); + } } else if (onStartWorkout) { - // Start (or re-do) this split day onStartWorkout(info.splitDay.id); + } else { + console.warn('Start workout callback not provided'); } }; @@ -206,10 +210,7 @@ export default function SplitProgressTracker({
🎉

All done this week!

-

- Tap any split above to repeat it or start next week's - training -

+

Tap any split above to redo it

)} diff --git a/src/components/workouts/WorkoutSession.tsx b/src/components/workouts/WorkoutSession.tsx index b5fb522..5f671e7 100644 --- a/src/components/workouts/WorkoutSession.tsx +++ b/src/components/workouts/WorkoutSession.tsx @@ -3,7 +3,7 @@ * Handles active workout logging and tracking */ -import { useState, useMemo, useEffect } from 'react'; +import { useState, useMemo, useEffect, useRef } from 'react'; import { useWorkoutSession } from '../../hooks/useWorkoutSession'; import { useExercises, @@ -103,9 +103,16 @@ export default function WorkoutSession({ onNavigate }: WorkoutSessionProps) { }, [activeMesocycle, completedWorkouts]); // Auto-start workout if coming from mesocycle dashboard with a selected split + const autoStartProcessedRef = useRef(false); useEffect(() => { const selectedSplitDayId = localStorage.getItem('selectedSplitDayId'); - if (selectedSplitDayId && activeMesocycle) { + if ( + selectedSplitDayId && + activeMesocycle && + !autoStartProcessedRef.current + ) { + // Mark as processed to prevent re-execution + autoStartProcessedRef.current = true; // Clear immediately to prevent re-triggering localStorage.removeItem('selectedSplitDayId'); From 5c4193ec546adb5ef86ef908f7ce9bfa3fa19c45 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 08:28:46 +0000 Subject: [PATCH 3/3] Improve warning messages to be more specific about impact Co-authored-by: wulfland <5276337+wulfland@users.noreply.github.com> --- src/components/mesocycles/SplitProgressTracker.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/mesocycles/SplitProgressTracker.tsx b/src/components/mesocycles/SplitProgressTracker.tsx index 92109f1..fd2792e 100644 --- a/src/components/mesocycles/SplitProgressTracker.tsx +++ b/src/components/mesocycles/SplitProgressTracker.tsx @@ -151,12 +151,16 @@ export default function SplitProgressTracker({ if (onResumeWorkout) { onResumeWorkout(); } else { - console.warn('Resume workout callback not provided'); + console.warn( + 'Resume workout callback not provided - workout cannot be resumed' + ); } } else if (onStartWorkout) { onStartWorkout(info.splitDay.id); } else { - console.warn('Start workout callback not provided'); + console.warn( + 'Start workout callback not provided - workout cannot be started' + ); } };