Skip to content

Phase D2: aligned set table, gold PR disc, keypad context line, RPE opt-in (schema v3) - #23

Merged
prithvimk merged 5 commits into
mainfrom
claude/tender-noether-3tnyk0
Nov 1, 2026
Merged

prithvimk merged 5 commits into
mainfrom
claude/tender-noether-3tnyk0

Conversation

@prithvimk

@prithvimk prithvimk commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

The first slice of Phase D2 (workout logger). The set table follows design "A · Aligned table", picked from four mock-ups. The top bar, rest chip and peek, and Resume workout follow in separate PRs.

What changed

  • Aligned set table (F05):
    • One column grid is shared by the headings and every row: Set 40 dp, Last takes what's left, kg 76, Reps 60, Done 48, with 8 dp gaps. Each heading sits centred over its values.
    • Headings are small caps. Rows are 56 dp and run edge to edge.
    • Filled wells (44 dp, with a 48 dp touch target) show only on sets not done yet. A done set's numbers sit on a full-width primary tint.
    • The field the keypad is on gets a 2 dp primary border, or an error border while its text isn't a value yet.
    • The done tick is a filled square with a check; an undone set shows an empty outlined box, so done isn't shown by colour alone.
    • The exercise card is a raised, outlined surface with 20 dp corners. Under the name it shows the routine's targets ("6–8 reps · Rest 3:00"), or muscle and equipment when there are none.
  • RPE opt-in (F05, schema v3):
    • exercises.tracksRpe (default off), with "Show RPE column" / "Hide RPE column" in each exercise's ⋮ menu. It's stored on the library exercise, so it carries into later workouts.
    • The column still shows when any of the exercise's sets already has RPE.
    • With RPE on, the number columns narrow (kg 68, Reps 52, RPE 48). "102.5 × 10" still fits in Last.
    • MIGRATION_2_3, the exported 3.json, a migration test (rows kept, RPE off), and DAO and repository tests.
  • Gold PR disc (F21): a record set's label sits on the gold RecordDisc. TalkBack reads "Set 1, personal record: heaviest weight", with "Set options" as its click action.
  • Keypad context line (F07):
    • The top line reads "Barbell Bench Press · Set 2 · Reps", with "Last 80 kg × 7" and the hide button on the right.
    • Step keys show their unit ("−2.5 kg", "+1 rep").
    • "." is greyed out for reps.
    • Next spans two keys.
  • ColorScheme.isDark picks the card and well surfaces: lowest/container in light, container/high in dark.
  • The workout detail's editor shares all of this.

Testing

  • ./gradlew testDebugUnitTest ktlintCheck lintDebug assembleDebug passes locally, including the new KeypadContextTest, the 2 → 3 migration test, and the DAO and repository tests for tracksRpe.
  • I compared screenshots (not committed) of the logger in light and dark, with the keypad open and a rest running, and an exercise with RPE on.

Branch note

This branch previously carried the D1 commits, which #22 squash-merged. An ours merge records that old history without changing any files, so the diff against main is only the D2 work.

🤖 Generated with Claude Code

https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW

…tter)

- Full light and dark colour schemes from #2E6B30 with every role set,
  surface containers included; dynamic colour is now off by default.
- Record gold as an extended colour family (MaterialTheme.recordColors)
  beside the scheme; the logger's PR badge, History cards, exercise detail
  trophies and the finish summary's records card move off tertiary.
- One formatter in ui/format: live timers keep the clock format, finished
  durations read "58 min" / "1 h 11 min", and every displayed weight and
  volume goes through it with its unit.
- Tabular figures for timers, set fields, the Last column and totals.
- Shared RecordChip, RecordDisc and StatTile components; History cards
  use the chip for their PR count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW
- Set fields are filled and borderless until the keypad is on them; done
  rows get a light primary tint, and the done tick is a filled square
  (empty outlined box when not done) with a 48 dp touch target.
- A set holding records shows its label on a gold disc in place of the
  PR badge, read out as "Set 1, personal record: heaviest weight".
- The keypad has a context line ("Bench Press · Set 3 · Reps", last
  time on the right) holding the hide button; step keys show their unit
  ("+2.5 kg", "+1 rep") and Next spans two keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW
- The set table follows the chosen "aligned table" design: one column
  grid shared by small-caps headings and rows, 56 dp rows edge to edge,
  filled wells only on sets not yet done, a full-width tint on done rows,
  and the exercise card as a raised, outlined surface with its targets
  (or muscle and equipment) under the name.
- RPE is opt-in per library exercise from its menu ("Show RPE column"),
  and still shows when any of its sets has RPE. The number columns narrow
  to make room.
- Schema v3 adds exercises.tracksRpe (default off), with MIGRATION_2_3,
  a migration test, and DAO and repository tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014thT5DHYQ5GxporYx5N4XW
@prithvimk prithvimk changed the title Phase D2: quiet set table, gold PR disc and keypad context line Phase D2: aligned set table, gold PR disc, keypad context line, RPE opt-in (schema v3) Nov 1, 2026
@prithvimk
prithvimk merged commit b6830e7 into main Nov 1, 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