# NuvioTV Feature Surface Completion Pattern

## When to Use

When the user says "do it all," "finish it," "don't stop till complete," or "complete p1 and p2" — this is a breadth-first feature surface completion task. The goal is to implement every feature from a NuvioTV audit that can be safely adapted, without stopping to report "what's left."

## Execution Rules

1. **Breadth-first, not depth-first** — implement across all feature areas in parallel batches, not deep-dive one area at a time
2. **Build + test + commit after each batch** — never accumulate uncommitted changes across multiple feature areas
3. **No "what's left" audits mid-implementation** — keep implementing until every safe feature has a route, screen, settings entry, and persisted preferences
4. **Acceptable stopping point** — green committed batch with APK built
5. **If user explicitly asks "what's left?"** — answer concisely, then immediately resume implementing unless they say otherwise

## Typical Feature Surface Areas

- Player overlays and control panels
- Trailer preview system
- Library/collections hub
- Catalog ordering
- Settings sub-pages
- Addon management
- Profile system
- Search/filter
- Home layout variants

## Data Layer Strategy

When porting features that need data persistence:
- Extend existing `PreferencesManager` with new fields using the target app's established conventions (DELIMITER pattern)
- Do NOT port NuvioTV's full multi-profile data layer (ProfileDataStoreFactory + ProfileManager + SyncService — 1,145+ lines)
- Additive-only changes to existing data stores
- ViewModel uses `combine()` for state observation

## Verification

After each batch:
```bash
./gradlew :app:compileDebugKotlin :app:testDebugUnitTest --console=plain
./gradlew :app:assembleDebug :app:testDebugUnitTest --console=plain
```

Report: test count (from XML), APK size, git status.
