[PR #1843] feat: add Android TV support with D-pad navigation #1722

Open
opened 2026-04-25 00:00:50 +02:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/advplyr/audiobookshelf-app/pull/1843
Author: @bilbospocketses
Created: 4/7/2026
Status: 🔄 Open

Base: masterHead: android-tv-dpad-navigation


📝 Commits (3)

  • 70b26e2 feat: add Android TV support with D-pad navigation
  • 5b02ba1 chore: normalize line endings to LF
  • 14034b8 feat(tv): v1.0.6 screensaver prevention + v1.0.7 regression fixes

📊 Changes

452 files changed (+85557 additions, -82585 deletions)

View changed files

📝 .editorconfig (+12 -12)
📝 .github/ISSUE_TEMPLATE/bug_report.yml (+98 -98)
📝 .github/ISSUE_TEMPLATE/config.yml (+5 -5)
📝 .github/ISSUE_TEMPLATE/feature_request.yml (+57 -57)
📝 .github/pull_request_template.md (+41 -41)
📝 .github/testing-page-template.html (+81 -81)
📝 .github/workflows/build-apk.yml (+53 -53)
📝 .github/workflows/close-issues-on-release.yml (+20 -20)
📝 .github/workflows/close_blank_issues.yaml (+41 -41)
📝 .github/workflows/deploy-apk.yml (+82 -82)
📝 .github/workflows/i18n-check.yml (+28 -28)
📝 .gitignore (+93 -92)
📝 .prettierrc (+17 -17)
📝 .vscode/extensions.json (+7 -7)
📝 .vscode/settings.json (+27 -27)
📝 LICENSE (+674 -674)
📝 android/.gitignore (+96 -96)
📝 android/.vscode/settings.json (+6 -6)
📝 android/app/.gitignore (+2 -2)
📝 android/app/build.gradle (+150 -132)

...and 80 more files

📄 Description

Closes #606

Summary

Adds full Android TV support to the audiobookshelf app: leanback launcher integration, spatial D-pad navigation, focus ring styling, focus memory with fingerprint-based restore, overlay trapping, audio player TV controls, author detail page, and a TV user guide. All TV behavior is gated behind device detection — mobile/tablet behavior is unchanged.

Combines what was originally two PRs (basic TV scaffolding + D-pad navigation) into one since the scaffolding has no standalone value.

Full description

For the complete file-by-file breakdown, design decisions, post-release audit hardening (35 findings, all HIGH + actionable MEDIUM fixed), and test plan, see docs/PR_DESCRIPTION.md.

User guide for testers: docs/TV_USER_GUIDE.md (with PDF version).

Sideload APK: latest release.

Commits

  1. feat: add Android TV support with D-pad navigation — all feature code + audit hardening
  2. chore: normalize line endings to LF — cosmetic-only pass across the repo since core.autocrlf differed between contributor machines. Kept separate from the feature commit for review clarity.

Note to maintainer

Shared components (cards, toolbars, modals, player) have tabindex + keydown.enter.prevent added to enable D-pad activation. These attributes are inert on touch devices — they don't affect tap, layout, or mobile behavior.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/advplyr/audiobookshelf-app/pull/1843 **Author:** [@bilbospocketses](https://github.com/bilbospocketses) **Created:** 4/7/2026 **Status:** 🔄 Open **Base:** `master` ← **Head:** `android-tv-dpad-navigation` --- ### 📝 Commits (3) - [`70b26e2`](https://github.com/advplyr/audiobookshelf-app/commit/70b26e2828355e23ecd7a61dff3303deeaef5b9c) feat: add Android TV support with D-pad navigation - [`5b02ba1`](https://github.com/advplyr/audiobookshelf-app/commit/5b02ba1d4fe3c3730ab6f2325fc1fa61823b5b65) chore: normalize line endings to LF - [`14034b8`](https://github.com/advplyr/audiobookshelf-app/commit/14034b8757810c318ac9446dcef50bf05173945b) feat(tv): v1.0.6 screensaver prevention + v1.0.7 regression fixes ### 📊 Changes **452 files changed** (+85557 additions, -82585 deletions) <details> <summary>View changed files</summary> 📝 `.editorconfig` (+12 -12) 📝 `.github/ISSUE_TEMPLATE/bug_report.yml` (+98 -98) 📝 `.github/ISSUE_TEMPLATE/config.yml` (+5 -5) 📝 `.github/ISSUE_TEMPLATE/feature_request.yml` (+57 -57) 📝 `.github/pull_request_template.md` (+41 -41) 📝 `.github/testing-page-template.html` (+81 -81) 📝 `.github/workflows/build-apk.yml` (+53 -53) 📝 `.github/workflows/close-issues-on-release.yml` (+20 -20) 📝 `.github/workflows/close_blank_issues.yaml` (+41 -41) 📝 `.github/workflows/deploy-apk.yml` (+82 -82) 📝 `.github/workflows/i18n-check.yml` (+28 -28) 📝 `.gitignore` (+93 -92) 📝 `.prettierrc` (+17 -17) 📝 `.vscode/extensions.json` (+7 -7) 📝 `.vscode/settings.json` (+27 -27) 📝 `LICENSE` (+674 -674) 📝 `android/.gitignore` (+96 -96) 📝 `android/.vscode/settings.json` (+6 -6) 📝 `android/app/.gitignore` (+2 -2) 📝 `android/app/build.gradle` (+150 -132) _...and 80 more files_ </details> ### 📄 Description **Closes #606** ## Summary Adds full Android TV support to the audiobookshelf app: leanback launcher integration, spatial D-pad navigation, focus ring styling, focus memory with fingerprint-based restore, overlay trapping, audio player TV controls, author detail page, and a TV user guide. All TV behavior is gated behind device detection — mobile/tablet behavior is unchanged. Combines what was originally two PRs (basic TV scaffolding + D-pad navigation) into one since the scaffolding has no standalone value. ## Full description For the complete file-by-file breakdown, design decisions, post-release audit hardening (35 findings, all HIGH + actionable MEDIUM fixed), and test plan, see [`docs/PR_DESCRIPTION.md`](https://github.com/bilbospocketses/audiobookshelf-app/blob/android-tv-dpad-navigation/docs/PR_DESCRIPTION.md). User guide for testers: [`docs/TV_USER_GUIDE.md`](https://github.com/bilbospocketses/audiobookshelf-app/blob/android-tv-dpad-navigation/docs/TV_USER_GUIDE.md) (with [PDF version](https://github.com/bilbospocketses/audiobookshelf-app/blob/android-tv-dpad-navigation/docs/TV_USER_GUIDE.pdf)). Sideload APK: [latest release](https://github.com/bilbospocketses/audiobookshelf-app/releases/latest). ## Commits 1. `feat: add Android TV support with D-pad navigation` — all feature code + audit hardening 2. `chore: normalize line endings to LF` — cosmetic-only pass across the repo since `core.autocrlf` differed between contributor machines. Kept separate from the feature commit for review clarity. ## Note to maintainer Shared components (cards, toolbars, modals, player) have `tabindex` + `keydown.enter.prevent` added to enable D-pad activation. These attributes are inert on touch devices — they don't affect tap, layout, or mobile behavior. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2026-04-25 00:00:50 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#1722