Bug Fix Release — Full Code Audit
Comprehensive code audit identified 35 findings (5 HIGH, 15 MEDIUM, 15 LOW). This release fixes all HIGH and actionable MEDIUM issues.
Fixes
Critical Safety (H2 + M1)
- Vertical navigation
setTimeoutcallbacks now wrapped intry/finally— if an exception occurs, the nav guard always clears instead of permanently disabling focus recovery - Added
CSS.escapepolyfill for older Android TV WebViews (Chrome < 46) that lack native support - Fixed unescaped CSS selectors in fingerprint system that could throw on special-character IDs
Double-Fire Prevention (H4)
- Added
.preventmodifier to 11@keydown.enterhandlers across 8 components (cards, toolbar, modal, drawer) — prevents Enter from firing both keydown and synthesized click on Android TV D-pad
Connect Page TV Detection (H1)
connect.vuenow setsisAndroidTvin Vuex store on init — fixes broken TV layout on first launch when no server is saved (the blank layout bypassesdefault.vuewhere this was previously set)
Vuex Reactivity Fix (H3)
- Replaced direct
store.state.lastBookshelfScrollData = {}mutation with proper VuexresetLastBookshelfScrollDatamutation — fixes scroll position restoration on library tab switches
Phone/Tablet Safety (M2)
- All TV-only listeners (focusout, store watchers, router hooks, eventBus) now gated behind
android-tvinitialization check — preventsfocusFirstContentElement()from firing on phones when modals close
Focus Interval Stacking (M3 + M4)
refocusAfterContentChangenow tracks and clears its interval before creating a new one — prevents parallel polling loops from fighting over focusfocusLossTimercleared on route navigation — prevents stale focusout recovery from causing focus flash during page transitions
Player Controls + Accessibility (M10 + M14)
- Hidden fullscreen player controls (
v-show) now use dynamictabindex— invisible jump-chapter buttons no longer receive D-pad focus - Removed blanket
:not(.android-tv) *:focus { outline: none }rule — restores focus indicators for phone/tablet keyboard/accessibility users
Testing
33-item manual test checklist covering all fixes + regression tests.