Skip to content

Assisted-bodyweight exercise IDs assume the wrong load direction for push-ups and weighted variants #68

Description

@Devasy

Summary

isAssistedBodyweightExercise() (moved to workout-logger/lib/models/models.dart in this PR, was previously in exercise_input_section.dart) hardcodes four exercise IDs as "assisted": pull_ups, chin_ups, dips, push_ups. For every one of these, the weight the user enters is always interpreted as assistance — i.e. it reduces the effective load (bodyweight − assist + extra).

This is wrong for at least one of the four, and incomplete for the others:

  • push_ups: push-ups are essentially never done on an assisted machine. Users doing weighted push-ups (vest, plate on back) expect entering a weight to add load. Today it subtracts it.
  • dips / pull_ups / chin_ups: these genuinely can be done either way — assisted (band/machine reduces load) or weighted (belt + plate adds load) — but the app only supports the assisted interpretation. There's no way to log a weighted dip or weighted pull-up; any weight entered is always subtracted from bodyweight.

How to reproduce (user-visible impact)

  1. Start a workout and select Push-ups as the exercise.
  2. Enter a weight in the weight field intending it as added weight (e.g. wearing a 10 kg vest) — enter 10.
  3. Log the set, then look at the "Effective Volume Load" label shown above the input.
  4. It reads bodyweight − 10, not bodyweight + 10 — the app computed your training load as lighter than plain bodyweight push-ups, when you actually did a harder set. Volume, PRs, and AI recommendations for this exercise are all understated.
  5. Same issue for weighted pull-ups/chin-ups/dips: select the exercise, enter the added weight from your belt+plate setup, log the set — the app treats it as assistance and subtracts it instead of adding it.

There's no UI affordance to tell the app "this weight is added load" vs "this weight is assistance" — it's purely determined by the hardcoded exercise ID list.

Why this isn't a quick fix

Fixing it requires a product decision, not just a code change:

  • Should push_ups be removed from the assisted list entirely (always weighted/bodyweight-only)?
  • Should dips/pull-ups/chin-ups gain a mode toggle (assisted vs. weighted) so both real-world setups are supported?

Either option changes the input UI and the stored-set schema, which is why this is flagged rather than guessed at while resolving PR review comments.

Pointers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions