Skip to content

Phase D3: Up next card, routine rows, full-screen finish summary - #27

Merged
prithvimk merged 2 commits into
mainfrom
ccr-9c916c4d-krazr0
Nov 2, 2026
Merged

prithvimk merged 2 commits into
mainfrom
ccr-9c916c4d-krazr0

Conversation

@prithvimk

Copy link
Copy Markdown
Owner

Lands Phase D3 (F08, F09) from the design pass. All four D3 items are ticked in docs/IMPLEMENTATION_PLAN.md.

Workout tab (F09)

  • Up next card: suggests the routine done least recently, with a "Start Pull Day" button. Routines never done come first, then list order. Routines with no exercises are never suggested. The suggested routine leaves the list below.
  • Routine rows: each row reads "5 exercises · last done Friday · about 1 h 4 min".
    • "Last done" says today, yesterday, a weekday within the week, or a date.
    • The typical duration is the average of past sessions and is hidden until there is one.
    • Lines wrap only between parts.
  • Row actions: a play button starts the routine. The ⋮ menu has Edit and Delete, and Delete asks first. Tapping the row still opens the editor.
  • Other changes: "Start an empty workout" is a text button. The tab gets a "Workout" title like History and Exercises.

Finish summary (F08)

  • Full screen: replaces the dialog and takes the Workout tab's place until Done or Back.
    • Content: the day and routine name, tiles for duration, volume and sets, the gold records card with its pop-in, and the note when the app ended an idle workout.
    • Buttons: Done is the main one and Save as routine sits under it. Resume workout is at the top, away from Done.
  • Compared with last [routine]: shows the volume change and each exercise's top set, against the routine's last finished session that had a set ticked.
    • A top set is the heaviest ticked set that isn't a warm-up; ties go to more reps.
    • An arrow shows only when weight and reps moved the same way.
    • Hidden for empty workouts and for a routine's first session.

Data

  • No schema change. RoutineDao.observeStats() provides last done and average duration. WorkoutDao.getPreviousRoutineWorkoutId() and WorkoutRepository.compareWithPrevious() power the comparison.
  • The logic lives in testable pure functions: domain/SessionComparison.kt, domain/UpNext.kt and ui/format/RelativeDay.kt.

Also

  • CLAUDE.md: open a pull request as soon as an item is done.

Checks

./gradlew testDebugUnitTest ktlintCheck lintDebug assembleDebug passes. It includes new tests for the comparison, the Up next pick, relative days, percent formatting, and the routine stats and previous-session queries.


Generated by Claude Code

The Workout tab suggests the routine done least recently in an Up next card
with a Start button. Other routines are compact rows with exercise count,
last done and typical duration, a play button and a menu with Edit and
Delete. "Start an empty workout" is now a text button.

Finishing shows a full-screen summary in place of the dialog: duration,
volume and set tiles, the gold records card, and how the session compares
with the routine's last one (volume change and each exercise's top set).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5Dp3wpv8eK7uit7vPL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5Dp3wpv8eK7uit7vPL
@prithvimk
prithvimk merged commit 887a3b6 into main Nov 2, 2026
2 checks passed
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.

2 participants