Repository navigation
Android workouts: Start + Add action row (EXP-018 parity) - #1079
Merged
Merged
Conversation
ryanbr
force-pushed
the
android-workouts-action-row
branch
2 times, most recently
from
August 5, 2026 04:56
43d2825 to
b88043d
Compare
Bring the Android Workouts screen closer to the iOS redesign (#1068): - Co-lay Start + Add as an equal-width action row (EXP-018). Bonded → side by side; unbonded → Add alone (moved up out of the range bar so it's reachable without a strap, which also retires the #234/#339 Add-vs-range-pill fit fix); during an active workout the live banner keeps Add below it. Add stays visible in every state; WorkoutStartSection is its single home so the empty-state card no longer doubles it, and the dead `loaded` gate is dropped. - Give the sport picker per-sport glyphs (shared `sportIcon` catalogue) so it reads by icon like the iOS workout selection screen and the Workouts list rows, not a bare text list. - Move the Clear-filters chip onto the search-field row with a 48dp hit target, matching iOS's search-row placement + 44pt target. Display-only: Start is still bonded-gated (a live session needs the strap), no change to when it's available. Android-only (iOS via #1068). No new strings. compileFullDebugKotlin + i18n audit green; layout not device-verified.
ryanbr
force-pushed
the
android-workouts-action-row
branch
from
August 5, 2026 05:12
b88043d to
e74fcec
Compare
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
…ish (ryanbr#1079) Co-lay Start+Add as an equal-width action row (EXP-018, Add visible in every state), give the sport picker per-sport glyphs, and move the Clear-filters chip onto the search row with a 48dp target. Matches iOS ryanbr#1068. Display-only, Android-only, no new strings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Brings the Android Workouts screen closer to the iOS redesign (#1068), from the parity gap-analysis:
[ Start ][ Add ]; unbonded →[ Add ](moved up out ofRangeBarso it's reachable without a strap — which also retires the [Oura Ring] - one-packet framing refactor + sleep-phase fix + honest activity estimate #234/Respiratory rate: prefer PPG-derived estimate over RSA when available (#103) #339 Add-vs-range-pill fit workaround); active workout → the live banner keeps Add below it. Add is visible in every state (no control disappears);WorkoutStartSectionis its single home, so the empty-state card no longer doubles it and the deadloadedgate is dropped.sportIconcatalogue), so it reads by icon like the iOSWorkoutSelectionScreenand the Workouts list rows — not a bare text list.Deliberate scope choice
Start stays bonded-gated (a live session needs the strap to stream HR) — unlike iOS, which never gates its start button. Display-only; does not change when Start is available.
Cross-platform
Android-only (iOS via #1068). No analytics, decoder, stored-data, or BLE change — same actions/flow. No new strings (reuses existing localized copy;
sportIconcatalogue already parity withWorkoutSport.all).Testing
:app:compileFullDebugKotlin— BUILD SUCCESSFUL.Tools/i18n_audit.py --ci— exit 0.