# 2026-06-03 Screen Focus Audit

Session source: `/home/rurouni/Unspooled-screen-audit.md`.

## Executive summary
The codebase has a mature focus architecture, but most screens were built without explicit DPAD wiring. The main class of failure is **zero `FocusLinks` / `focusProperties` on cards, chips, tabs, hub cards, and action buttons**, causing dead ends, invisible focus, and focus traps.

## Critical bug classes
- **Details Screen focus trap:** description “Show more” had `up = Cancel` with no down target.
- **Grid screens without grid-aware focus:** SeeAll, Watchlist, Watched, and similar grids rely on implicit geometric focus.
- **Player overlays trap focus but lack internal graph:** overlay traps directional focus, but panel items had no `FocusRequester`s.
- **Settings pane desync risk:** Right/Left routing depends on manual zone calls and embedded screens with dead ends.
- **Zero-wiring screens:** SeeAll, Addons, Cloud, ProfileCreate, ProfileDetail, History, Watchlist, Library, Collections, CatalogManager, PersonDetail, Watched, AllSources, KidsProfile.

## Safe fix batches
1. **Batch 1 — focus/navigation bugs:** wire critical focus graphs, add `focusProperties`, fix trap cases, and upgrade `LaunchedEffect` focus requests to `requestFocusAfterFrames()`.
2. **Batch 2 — UI consistency/layout polish:** align TV focus visuals, remove fake controls, fix placeholder/dead-end buttons, and improve card/row spacing.
3. **Batch 3 — stability fixes:** migrate scroll/selection state to `rememberSaveable`, clamp saved lazy-list indexes, and harden Saver restores.
4. **Batch 4 — performance/smoothness:** avoid per-card heavy tracking/animation, prefer tween focus transitions, and reduce unnecessary recompositions.

## Research note
Android developer URLs for Compose TV/focus/text-field docs returned 404s from this browser. Use the project-specific TV/Compose focus references and official Compose semantics conceptually: explicit focus requesters, explicit directional `focusProperties`, TV `Surface` focus affordances, and post-layout focus requests.
