Skip to content

Finalize OpenPanel 1.1.37 Android and Fire TV support - #3

Draft
cyberbanksy wants to merge 28 commits into
mainfrom
agent/library-opds-readium
Draft

cyberbanksy wants to merge 28 commits into
mainfrom
agent/library-opds-readium

Conversation

@cyberbanksy

@cyberbanksy cyberbanksy commented Aug 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary\n- finalize OpenPanel 1.1.37 (Android versionCode 46) for Fire tablet and legacy Android TV kiosk use\n- add curated YouTube channel defaults, IPv4-first DNS fallback, kiosk volume policy, device-profile handling, and reversible TV debloat support\n- update adaptive launcher icons, splash treatment, and the TV banner to the current OpenPanel cube identity\n- protect local build artifacts and QA/design evidence from accidental Git publication\n\n## Verification\n- UI: 18 test files / 91 tests passed, TypeScript passed, Vite production build passed\n- Android: testDebugUnitTest, lintDebug, and assembleDebug passed offline from a local scratch build\n- Gradle: 145 tasks completed; no new lint issues\n- local debug APK SHA-256: 8638642267d6e800e239dfd2244e8e904f86ff4c62763dcf5855d4d29bf818eb\n\nThe unsigned debug APK remains ignored and local. Signed release artifacts must come from the protected release workflow.\n\n## Related UI PR\nThe companion orgista/openpanel-ui PR contains the responsive UI, YouTube channel handling, remote-navigation improvements, cube mark, and obsolete mockup cleanup.

cyberbanksy and others added 8 commits August 2, 2026 23:17
Wake and cold start now show a plain black launch frame instead of the
full-screen OpenPanel logo card: the launch theme paints black with a
transparent Android 12+ splash icon, and the splash.png drawables are gone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…osk mode

In Device-Owner LOCKED lock-task mode Android rejects starts of
non-allowlisted packages with a lock-task violation (result 101) that
startActivity does not surface, so launchApp reported success while nothing
opened. Merge the target into the lock-task allowlist first; the kiosk stays
engaged while the launched app runs. Verified on the TB132FU.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cyberbanksy

Copy link
Copy Markdown
Contributor Author

Added the shared child-safe app/browser boundary in 30f50a0:

  • hides storefronts, unrestricted browsers, recovery launchers, and maintenance utilities from OpenPanel without uninstalling them;
  • adds a non-launcher Safe Browser for escaped links, restricted to HTTPS kiddle.co pages and resources;
  • adds reversible generic/Fire debloat entries for stock browsers, gallery/media, and other nonessential child-facing apps;
  • documents browser-role assignment and reversible Fire ADB cleanup.

Verification:

  • :app:testDebugUnitTest, :app:lintDebug, and :app:assembleDebug passed;
  • installed and smoke-tested on a Fire 7 (12th generation) at its 1024×552 reverse-landscape viewport;
  • browser role, OpenPanel return path, hidden catalog, enabled personalDNSfilter VPN, and reversible disabled-package state verified.

@cyberbanksy

Copy link
Copy Markdown
Contributor Author

Fire OS redirect-kiosk update pushed in ab7408f:

  • ordinary Fire devices use Home/accessibility redirection without screen pinning
  • Fire mode cannot select ArborXR companion mode
  • removes the unused provisioning-QR native bridge and dependencies
  • documents generic Android managed provisioning separately

Verified: Android unit tests, lint, and debug assembly pass from the staged tree. Physical Fire 7 QA confirms kioskEnabled=true, Home returns to OpenPanel, reverse landscape remains set, and lock-task stays NONE.

@cyberbanksy cyberbanksy changed the title Add verified Fire tablet kiosk support Finalize OpenPanel 1.1.37 Android and Fire TV support Aug 15, 2026
cyberbanksy and others added 17 commits August 15, 2026 11:40
Audit fixes (engine/native + build):
- kiosk: native admin-verifier gate on kiosk-dismantling bridge methods
  (disableKioskLock/exitKioskToSystemHome/clearDeviceOwner/lock-task set)
- YouTube: curated catalog no longer shadows the live channel feed;
  remove the frozen-in-binary CuratedYouTubeCatalog + test
- getInstalledApps off the plugin thread (ioExecutor) + icon cache
- library reader: debounce progress saves, move JSON rewrite to IO
- fix leaked kept-alive Bluetooth pairing call; settle on destroy
- share DeviceAccess helpers; dedupe ARBORXR/home-alias constants;
  drop dead KioskLock.isDeviceOwner + EXPAND_STATUS_BAR permission
- derive user agents from BuildConfig.VERSION_NAME (enable buildConfig)
- re-resolve launcher per notification event
- deps: drop 26 unused (radix/mui/etc.); regenerate lockfile

Branding: quad-mark rebrand, adaptive launcher icons, launch treatment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ships the logo-free brand/startup, the no-apps white-bar fix, and the
1.1.37 admin toggle + copy fixes. Signed with the production key
(cert 94323ad0) and pushed to both Debug and Production channels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
showKeyboard() forces the IME for the focused WebView field so admin
inputs reliably open the keyboard. Production-signed, pushed to both
Debug and Production channels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fetches trusted YouTube image hosts through the OkHttp client (IPv4-first
DNS) and returns a data URL, because the WebView's own image loader flakes
on some tablets/networks. Host-allowlisted, size-capped, off the plugin
thread. Shipped to both Debug and Production channels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Android 12+ managed provisioning requires the DPC to handle
GET_PROVISIONING_MODE (returns fully-managed) and ADMIN_POLICY_COMPLIANCE
(compliance handled by in-app setup); without them the wizard aborts QR
enrollment. Documents the QR payload + production-cert checksum.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…(code 53)

When OpenPanel is Device Owner (standalone), turn off the install-time
package verifier (package_verifier_enable / verifier_verify_adb_installs)
so Play Protect stops scanning/prompting on reboots and app installs.
Applied on kiosk engage and at provisioning (ADMIN_POLICY_COMPLIANCE).
No-op unless OpenPanel itself is DO, so ArborXR-managed devices are
unaffected. Verified writable on the DO Lenovo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ship the Gboard-style admin PIN pad redesign.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ship the UX copy cleanup (AI-tell phrasing + em dashes).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drop the launcher-icon mark from the Android 12+ system splash: point
windowSplashScreenAnimatedIcon at a transparent drawable (Android
falls back to the launcher icon otherwise) and strip the bitmap from
the legacy windowBackground. Cold start is now a plain dark frame that
hands off to the in-app wordmark launch animation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Merge the split OPENPANEL-*/AGENTS/ATTRIBUTIONS/THIRD_PARTY_NOTICES/docs set into one README (attributions preserved), add an agent working guide and a CLAUDE.md pointer, and fix the stale docs/ reference in the CI workflow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Kiosk had no way to re-arm after reboot on Fire OS: no RECEIVE_BOOT_COMPLETED/boot receiver, and the accessibility redirect only fired on window-change events that never arrive for a launcher that settled before the service bound. Adds the boot receiver + permission, a retrying onServiceConnected foreground-window audit, and broadens Fire launcher matching to an exact-name set with a Fire-only resolved-HOME fallback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Carries the Fire kiosk boot fix and the channel-art render fix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
openpanel-fleet-versions.sh reports every adb + ArborXR target against the repo version so a fix is not 'done' until every build is at or above it. build-release-keychain.sh now derives the expected version from package.json/build.gradle instead of a hardcoded value that had gone stale at 1.1.28.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…recovery

Ships the OpenPanelHomeActivity alias disabled so a fresh companion/standalone install never silently claims Home (only the kiosk-enable path enables it); adds system-home candidate selection with fallback-launcher detection (SystemHomeSelectionTest), status-bar restore when a lockdown was applied, a non-Device-Owner TV home-recovery path, a Wi-Fi scan refactor, and debloat catalog + tv-debloat-adb additions. MainActivity logs focus-loss while resumed (remote-overlay diagnostic).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The quest/ Meta Spatial SDK project shipped openpanelvr-v0.3.52.aab
without ever being in version control. Track its sources (build output,
audit material, and raw environment-pipeline media stay ignored) and
add the OPENPANEL_QUEST_* env-driven release signing config — its
absence is why the first AAB came out unsigned.
Add controller battery indicators to the system bar (L/R glyphs between
clock and headset battery). Bundle the 8K HEVC forest dome video
(forest360_v008.mp4) in APK assets with crash-safe first-launch copy to
external storage. Bump version to 0.3.53 / versionCode 65.

Track *.mp4 via Git LFS to stay under GitHub's 100 MB file-size limit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant