Skip to content

[LOW] UI polish batch: "1 players" / "1 expenses" pluralization, recovery prompt offering an empty draft, stale "Action needed" badge after acknowledgement #1237

Description

@njrini99-code

Small user-visible defects collected during the 2026-08-02 in-browser test matrix. Grouped because each is a one-line fix.

1. Pluralization — "1 players", "1 expenses"

  • Announcements list: an announcement targeted at one player renders "1 players" on the card. The compose dialog gets it right ("1 player selected") — only the card is wrong.
  • Travel expenses panel: a trip with one expense renders "1 expenses" under Total Expenses.

Both need the same conditional-plural treatment already used elsewhere in the codebase (e.g. ${n} round${n === 1 ? '' : 's'} in golf.ts).

2. New Round offers to restore a draft with zero holes

Starting a fresh round pops the recovery modal:

Recover Unsaved Progress?
Found locally saved data with 0 completed holes. This data may have been saved when the app was interrupted.
[Discard] [Restore]

Offering to restore nothing is pure friction on an otherwise clean start, and it trains players to dismiss a dialog that matters when it has real data in it. Suppress the prompt when the recovered draft has 0 completed holes (just discard silently), or at minimum don't offer "Restore" for an empty draft.

3. "Action needed" badge persists on an acknowledged announcement

After a player acknowledges an ack-required announcement, the card correctly flips its counter to 1/1 ack and the filter chips for Unread and Action needed disappear — but the "Action needed" badge on the card itself remains. The card simultaneously reads "Action needed" and "1/1 ack".

Badge should clear once the viewing player's own acknowledgement is recorded.

4. Approach miss grid: two buttons both render the letter "L"

In the approach miss-direction 3×3 grid, ↑ L (Long) and ← L (Left) both display "L"; only the arrow glyph distinguishes them. The aria-labels are correct ("Long", "Left"), so this is visual only — but at a glance in the field the two are easy to confuse. Consider Lg/Lft, or dropping the letter and relying on the arrow plus position.


All four verified in-browser on Demo University Golf as coach and as Cole Bennett.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIncorrect behavior or regressiondesign-systemgolfGolfHelmplan-meTrigger CodeRabbit automatic issue planningproduct:golfhelmGolfHelm product area

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions