Skip to content

feat(tennis-watch): add match details and animated swipe gestures - #7

Merged
danspark merged 5 commits into
mainfrom
codex/tennis-watch-match-gestures
Sep 13, 2026
Merged

danspark merged 5 commits into
mainfrom
codex/tennis-watch-match-gestures

Conversation

@danspark

@danspark danspark commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Add the match number and creation date above the score, and apply the approved tennis-ball launcher icon. The scoring screen keeps its two point buttons, games/set row, and undo.

The gestures now follow the requested directions:

  • Swipe left to open the next saved match, creating a fresh one at the newest end.
  • Swipe right to open the previous match. The oldest match resists the drag and returns to its position.
  • Swipe up to reveal a red trash icon. Release beyond 45% of the display height, with a minimum of 96dp, to delete the current match. Short or reversed swipes snap back.

The score follows the finger and slides into place when released. System animation settings control settling motion. Deleting a match preserves the other match numbers, dates, and scores; deleting the only match creates a fresh one. Older saved matches migrate with their points and selection intact and show "Date unavailable" because the previous format did not record dates.

APK packaging now cleans Android intermediates before publishing. A repeated local publish had retained stale native bindings and crashed at startup; a clean package passed launch and scoring checks.

Validation: tennis-watch/build.sh passes all 91 tests and builds the signed APK. The repository complexity check passes, reducing the maximum CRAP score from 14 to 12. Native Wear OS emulator checks cover navigation, point/undo after view swaps, canceled and completed deletion, deletion boundaries, restart persistence, legacy migration, and disabled animations. Large system text, advantage, two completed sets, and double-digit tiebreak scores fit the round 450×450 screen. Physical Galaxy Watch 5 Pro testing remains to be done.

Tennis scoreboard with match number and creation date

Upward drag revealing a red trash icon

Approved tennis-ball icon in the Wear OS app grid

gestures.mp4

Keep game and set completion in one operation so point normalization stays focused on deuce and advantage. This lowers the scoring method complexity while preserving the existing scoring rules, as required by the repository complexity gate.

Existing scoring and undo tests pass in the 91-case suite.
Replace the sketch icon with the approved generated artwork and preserve its embedded generation prompt. Reference both generated icon resources in the Android manifest so Wear OS displays the tennis ball instead of its default app icon.

Verified the icon in the installed Release app launcher on the round Wear OS emulator.
Use the open space above the score for a stable match number and creation date. Left now visits the next saved match and creates one only at the newest end; right visits previous matches.

Track horizontal and upward drags with the score face. Upward dragging reveals a red trash icon, and release beyond the deletion threshold removes only the current match. Short, reversed, canceled, and ambiguous gestures preserve the match and do not award a point. Keep numbering stable after deletion and migrate legacy histories without inventing dates.

The 91-case suite covers scoring, persistence, migration, numbering, previews, and gesture thresholds. Release emulator checks cover navigation, scoring after view swaps, deletion boundaries and cancellation, large text, and restart. Include native screenshots and the gesture recording.
An incremental Release publish retained stale native bindings and produced an APK that crashed in MauiApplication.n_onCreate. Cleaning the Android intermediates produced an APK that launched and scored correctly.

Run the standard Android clean target before publishing so local packaging regenerates the managed and native bindings together. The complete build passes 91 tests; its installed APK passed launch, point, undo, next/previous, and deletion checks.
Keep the UI recording out of tracked project files and publish it as a GitHub attachment using gh pr edit --attach. Point the verification record at the uploaded asset and ignore local video recordings.

Verified the uploaded MP4 is byte-identical to the source and that the PR body contains the attachment instead of a repository video link.
@danspark
danspark merged commit 51c11fc into main Sep 13, 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.

1 participant