Improve playback, preroll and TV experience
This commit is contained in:
+29
-24
@@ -18,20 +18,21 @@ focus moves predictably, and whether destructive or app-leaving actions are reco
|
||||
dismisses the confirmation, and Left/Right is explicitly constrained between the two
|
||||
choices. The setting defaults off and is stored per television.
|
||||
|
||||
## Open findings
|
||||
## Fixed locally after 0.2.39 — not published
|
||||
|
||||
### NAV-002 — Recommendation onboarding has no deterministic entry focus or Back route
|
||||
|
||||
- Severity: High
|
||||
- Surface: First-time recommendation onboarding
|
||||
- Reproduction: Sign in with a profile that has been prompted for taste onboarding.
|
||||
- Finding: The screen creates focusable title/person cards and footer buttons but does not
|
||||
request initial focus. It also has no `BackHandler`. Focus therefore depends on Compose's
|
||||
geometric fallback, while Back can leave the activity instead of moving to a defined
|
||||
- Previous behaviour: The screen created focusable title/person cards and footer buttons but did not
|
||||
request initial focus. It also had no `BackHandler`. Focus therefore depended on Compose's
|
||||
geometric fallback, while Back could leave the activity instead of moving to a defined
|
||||
previous step or presenting a skip choice.
|
||||
- Recommended fix: Give the first card (or **Next** when the stage is empty) an explicit
|
||||
entry requester. Make Back move to the previous stage; on the first stage, focus a clear
|
||||
**Skip for now** confirmation instead of closing the app.
|
||||
- Resolution: The first choice now receives focus explicitly; an empty stage focuses its
|
||||
primary footer action. Back moves to the previous stage, while Back on the first stage
|
||||
opens a Cancel-first **Skip for now** confirmation. Skipping returns to Home for this
|
||||
visit without falsely recording onboarding as complete.
|
||||
|
||||
### NAV-003 — Manage users does not scale beyond one fixed row
|
||||
|
||||
@@ -39,10 +40,11 @@ focus moves predictably, and whether destructive or app-leaving actions are reco
|
||||
- Surface: Manage users / profile chooser
|
||||
- Reproduction: Save enough profiles that the fixed 154 dp tiles plus 24 dp gaps exceed the
|
||||
viewport width.
|
||||
- Finding: Profiles are rendered in a plain `Row`, not a `LazyRow`, and do not wrap or
|
||||
- Previous behaviour: Profiles were rendered in a plain `Row`, not a `LazyRow`, and did not wrap or
|
||||
scroll. Profiles beyond the right edge can become invisible or unreachable by D-pad.
|
||||
- Recommended fix: Use a centred `LazyRow` with content padding, stable keys and remembered
|
||||
horizontal state. Keep **Add another user** as the final item.
|
||||
- Resolution: Profiles now use a padded `LazyRow` with stable profile keys, so focus brings
|
||||
off-screen profiles into view. **Add another user** remains the final item and has
|
||||
explicit neighbours.
|
||||
|
||||
### NAV-004 — Profile removal targets rely on geometric focus search
|
||||
|
||||
@@ -50,38 +52,41 @@ focus moves predictably, and whether destructive or app-leaving actions are reco
|
||||
- Surface: Manage users / profile chooser
|
||||
- Reproduction: Move around a profile tile and its small × removal control using only the
|
||||
D-pad.
|
||||
- Finding: Each tile and its overlaid removal button are independent focus targets with no
|
||||
- Previous behaviour: Each tile and its overlaid removal button were independent focus targets with no
|
||||
explicit direction mapping. Depending on card position and screen density, Up/Right can
|
||||
select a different profile or skip the removal target. The 28 dp target is also difficult
|
||||
to identify at TV distance.
|
||||
- Recommended fix: Put profile actions in a deterministic vertical group: OK opens the
|
||||
profile and a labelled **Remove user** action sits below it, with explicit Up/Down and
|
||||
Left/Right neighbours. Retain the existing safe Cancel-first confirmation.
|
||||
- Resolution: Every profile is now a deterministic two-action column: the profile tile and
|
||||
a full-width, labelled **Remove user** action. Explicit Up/Down and Left/Right mappings
|
||||
connect peer actions, **Add another user**, and **Back to Memby**. The existing
|
||||
Cancel-first removal confirmation remains.
|
||||
|
||||
### NAV-005 — Dismissing an alert can leave focus without a stable successor
|
||||
|
||||
- Severity: Medium
|
||||
- Surface: My Alerts
|
||||
- Reproduction: Focus an alert in the middle of the list and press OK to dismiss it.
|
||||
- Finding: The focused keyed row is removed immediately, but focus is only requested when
|
||||
- Previous behaviour: The focused keyed row was removed immediately, but focus was only requested when
|
||||
the list changes between empty and non-empty. There is no requester for the next or
|
||||
previous alert after an individual removal, so focus restoration is left to framework
|
||||
behaviour and can appear to vanish on some Compose/TV combinations.
|
||||
- Recommended fix: Track the focused alert id/index and, after removal, request the item now
|
||||
occupying that index (or the previous item). When the list becomes empty, move focus to
|
||||
the alert controls explicitly.
|
||||
previous alert after an individual removal, so focus restoration was left to framework
|
||||
behaviour and could appear to vanish on some Compose/TV combinations.
|
||||
- Resolution: The page records the dismissed row index, scrolls the remaining list to the
|
||||
row now occupying that position, and requests it after composition. Removing the final
|
||||
alert explicitly returns focus to the alert controls. The index rule is unit-tested.
|
||||
|
||||
### NAV-006 — Onboarding stage changes do not preserve a clear focus destination
|
||||
|
||||
- Severity: Medium
|
||||
- Surface: Recommendation onboarding
|
||||
- Reproduction: Focus **Next**, advance a stage, then continue with the D-pad.
|
||||
- Finding: The focused footer node is reused while the card row above is replaced. The
|
||||
- Previous behaviour: The focused footer node was reused while the card row above was replaced. The
|
||||
viewer is left at the bottom of each new question and must navigate geometrically back to
|
||||
the new choices; there is no explicit Up target or per-stage return position.
|
||||
- Recommended fix: On each stage change, move focus to the first choice and remember the
|
||||
last focused choice per stage. Give the footer buttons explicit Up targets and the card
|
||||
row an explicit Down target.
|
||||
- Resolution: Every stage change now places focus on the first choice, making the new
|
||||
question immediately actionable. Choice cards explicitly move Down to the primary footer
|
||||
action; footer actions explicitly move Up to the choices and Left/Right between each
|
||||
other. This deliberately resets to the first choice rather than leaving the remote on a
|
||||
stale footer node from the previous question.
|
||||
|
||||
## Areas checked with no blocking issue found
|
||||
|
||||
|
||||
Reference in New Issue
Block a user