Added
- Dynamic card sizing:
discoverNativeCardDimensions()detects native card dimensions at runtime; shelves match native card size whenmatchNativeSizeis enabled per shelf - "Highlight first game" option renders the first card in a shelf as a landscape featured card
- Crash protection: home mount errors automatically disable shelves with a retry button in the QAM
- Developer / Publisher filter type with batch preloading via
RegisterForAppDetails
Changed
- HomeInject mount polling replaced with
MutationObserver; 1-second fallback timer increased to 10 seconds (battery optimization) - ShelvesContainer nav-tree patching loop replaced with
MutationObserver+ 10-second fallback instead of 1-second polling ensureStyles()consolidated to a single global timer shared by all DeckRow instances instead of one 3-second interval per shelf- Focus restore polling reduced from 100ms → 500ms initial with 2-second escalation; total timeout reduced from 5 minutes to 30 seconds
- homePatch fallback renderer limited to 6 retry attempts (60 seconds) instead of indefinite polling
logInfo()already gated behind__DEV__flag — confirmed no-op in production builds- Collection raw cache now uses 60-second TTL; expired entries are evicted on next read
- Native card dimension discovery prefers
Focusable/Panelelements as card roots, avoiding measurement of overflowing art containers
Fixed
- Focus ring respects art height on featured cards (no longer extends past the game image)
- QAM toggle reads persisted value via
getCurrentSettings()on mount instead of resetting to false - Featured card height matches native card height (discovery no longer picks up non-card wide elements)
- Shelf vertical spacing restored:
-28pxmargin-top aligns shelves