Skip to content

v0.26 — UI/UX audit pass

Latest

Choose a tag to compare

@flyboy-byte flyboy-byte released this 01 Sep 19:11
· 3 commits to main since this release

A full UI/UX pass. A design audit turned up 30 findings across all five tabs; ten of them were scoped into a tracked plan and shipped here, every one verified on a physical Pixel 9 rather than just compiling. Plus one real bug you'd have hit.

The bug fix

"Back up everything" now actually saves. It was wired to the Android share sheet, which only lists apps that register an intent filter for application/json — Files isn't one of them, so "share to Files" (an iOS idiom) was never reachable. The Storage Access Framework path that writes straight to a folder was sitting right there as a secondary button. Those are now swapped: the primary action saves to a folder you pick, and sharing stays as "Send a copy…" for actually sending it somewhere.

Consistency

  • One set of controls instead of five. Five hand-rolled "pick one of N" treatments — each with its own radius and tint — became a shared SegmentedControl (single-choice) and FilterPill (narrowing a list). Used across Bag, Score setup and Settings.
  • Drawn icons instead of text glyphs. ▾ ▴ ⤒ ↑ ↓ ✕ ✓ › ‹ were font characters that render inconsistently and can't be sized or aligned reliably. They're now SVG, matching the existing tab-bar icons. No new dependency.
  • Settings is a list, not nine cards. Every section was a bordered, filled, rounded box of identical weight, so Backup & Restore looked exactly as important as Default Throw View. Now separated by a hairline rule, with readable section headings.

Accessibility

  • Every tap target meets Android's 44dp minimum. Seven controls were under it — worst case the three adjacent reorder arrows at 30dp. Fixed without changing how anything looks.
  • No screen relies on colour alone. Score coloured stroke numbers by birdie/par/bogey with nothing else to go on — a real problem for red–green colour deficiency, and the green/amber/red palette was also the only colour in the app outside its purple language. Removed rather than patched with a second channel: it closes the accessibility gap and the inconsistency at once.
  • The hardware Back button works mid-round. Back from an active scorecard jumped to the Bag tab instead of the rounds list. Round data was never at risk, but it was the wrong thing to do while you're on a course.

Fewer taps

  • Undo for swipe-to-demote in Disc Suggest. A mis-swipe was a silent two-sided state change — the demotion and, in Buy mode, the learning engine's aversion write. Undo reverses both. (Building it also surfaced a latent bug shipped back in v0.23: a swiped card never reset its transform, invisible only because the list usually recycled the row first.)
  • Any hole in one tap. The scorecard's ‹/› pair meant hole 17 of 18 was sixteen taps from hole 1. There's now a scrollable hole strip that follows you and shows which holes are fully scored.
  • Bag actions are one button plus an overflow sheet, instead of one primary and up to five ghost buttons wrapping onto a second row. Field view moved next to the filters, where a view mode belongs.
  • The catalog picker is a real radio list. Built-in / Try Discs / Custom read as buttons but behaved as a single choice, and tapping an undownloaded source silently started a network fetch. Selection and download are now separate targets.
  • Flight Shaper sliders show their bounds. Value and unit share one line instead of sitting ~80dp apart with the slider between them, each track shows its min and max, and tapping a slider's value resets just that slider.

Notes

Three things were built differently from how they were scoped, each after checking the code rather than following the plan literally — Flight Shaper's arc view kept its 2×2 grid (it was already the shape the audit wanted), Score lost tier colour rather than gaining a second channel, and slider reset is a tap on the value rather than a double-tap on the slider (a double-tap would have moved the slider before resetting it). The reasoning for each is in app/plan/docs/ui-audit-plan.md.

No new permissions. Still local-only: no account, no server, no analytics.

Install: app-release.apk below (arm64-v8a + armeabi-v7a), or add https://fdroid.flyboybyte.com/fdroid/repo to an F-Droid client.