Restructure into a three-tab app with Progress, goals, and Meditation
The UX redesign's first landing (spec in UX-REDESIGN.md): ContentView becomes a Today / Progress / Settings TabView, "Routine" replaces "Split" in every user-facing string and view name (code-level types keep their names), and workout starting moves to shared WorkoutStarter / StartedWorkoutNavigator plumbing. - New Progress tab: weekly goal streaks, workout trends, per-exercise weight progression, achievements, and the full history list (WorkoutLogsView -> WorkoutHistoryView). - Goals: stable categories workouts roll up to, managed from Settings. - New Meditation exercise + starter routine; timed sits record to Apple Health as Mind & Body sessions. Claude-Session: https://claude.ai/code/session_012qw2itfzKyEJ1HpsFt8Ex4
This commit is contained in:
@@ -40,7 +40,7 @@ struct ExerciseProgressView: View {
|
||||
|
||||
/// True when this run was auto-advanced into from the previous exercise (flow mode).
|
||||
/// It suppresses the Ready page and begins the exercise immediately on appear — the
|
||||
/// whole point of a hands-free flowing split.
|
||||
/// whole point of a hands-free flowing routine.
|
||||
let enteredViaFlow: Bool
|
||||
|
||||
/// Invoked at the terminal rest's end in flow mode to hand off to the next exercise;
|
||||
@@ -196,11 +196,11 @@ struct ExerciseProgressView: View {
|
||||
/// appear, hands-free.
|
||||
private var showsReady: Bool { !enteredViaFlow }
|
||||
|
||||
/// This split runs as a continuous flow — finishing one exercise rests, then
|
||||
/// This routine runs as a continuous flow — finishing one exercise rests, then
|
||||
/// auto-advances into the next — rather than returning to the list per exercise.
|
||||
private var autoAdvance: Bool { doc.autoAdvance == true }
|
||||
|
||||
/// Rest length for this run: the split's per-split override, else the global default.
|
||||
/// Rest length for this run: the routine's per-routine override, else the global default.
|
||||
/// Governs both between-set rests and (in flow mode) the between-exercise rest.
|
||||
private var effectiveRest: Int { max(1, doc.restSeconds ?? restSeconds) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user