From 934f82d805ec39a2a267edf0d48207f8464121fd Mon Sep 17 00:00:00 2001 From: Pauljd Date: Sun, 1 Nov 2026 17:25:30 +0000 Subject: [PATCH] Orbit TV at 0.16.0-tuning-screen First commit, imported from the working folder: Android TV app, loopback guide server, design sources and per-release verification notes. Includes the 0.16 tuning screen, built and tested but not yet confirmed on the box. Co-Authored-By: Claude Opus 5.5 (1M context) --- .gitignore | 6 + README.md | 139 + VERIFICATION-0.10.0.md | 15 + VERIFICATION-0.11.0.md | 15 + VERIFICATION-0.12.0.md | 11 + VERIFICATION-0.13.0.md | 13 + VERIFICATION-0.14.0.md | 19 + VERIFICATION-0.15.0.md | 15 + VERIFICATION-0.2.0.md | 33 + VERIFICATION-0.3.0.md | 42 + VERIFICATION-0.4.0.md | 64 + VERIFICATION-0.5.0.md | 40 + VERIFICATION-0.6.0.md | 62 + VERIFICATION-0.7.0.md | 9 + VERIFICATION-0.8.0.md | 7 + VERIFICATION-0.9.0.md | 11 + VERIFICATION.md | 38 + android/app/build.gradle.kts | 30 + android/app/src/main/AndroidManifest.xml | 10 + .../main/assets/font-licenses/barlow-OFL.txt | 93 + .../font-licenses/barlow-condensed-OFL.txt | 93 + android/app/src/main/assets/orbit-demo.mp4 | Bin 0 -> 6554659 bytes .../java/tv/orbit/classic/AfterDarkMovies.kt | 39 + .../tv/orbit/classic/AfterDarkReviewScreen.kt | 54 + .../java/tv/orbit/classic/ChannelBranding.kt | 11 + .../tv/orbit/classic/ChannelTuningBackdrop.kt | 31 + .../tv/orbit/classic/ClassicProgrammeStrip.kt | 58 + .../java/tv/orbit/classic/DirectContainers.kt | 11 + .../main/java/tv/orbit/classic/EmbyClient.kt | 137 + .../tv/orbit/classic/EmbyConnectionScreen.kt | 468 + .../tv/orbit/classic/EmbyPlaybackDialog.kt | 164 + .../tv/orbit/classic/EmbyPlaybackProtocol.kt | 225 + .../java/tv/orbit/classic/EpisodeDiscovery.kt | 45 + .../java/tv/orbit/classic/MainActivity.kt | 230 + .../java/tv/orbit/classic/OrbitSections.kt | 120 + .../classic/RememberedConnectionStore.kt | 88 + .../java/tv/orbit/classic/RememberedState.kt | 97 + .../java/tv/orbit/classic/SampleChannel.kt | 44 + .../tv/orbit/classic/SampleChannelScreens.kt | 149 + .../main/java/tv/orbit/classic/Schedule.kt | 35 + .../tv/orbit/classic/SecureMediaDataSource.kt | 103 + .../java/tv/orbit/classic/SeriesDiscovery.kt | 50 + .../tv/orbit/classic/SeriesReviewScreen.kt | 70 + .../java/tv/orbit/classic/ToonamiChannel.kt | 24 + .../orbit_after_dark_background.webp | Bin 0 -> 22006 bytes .../drawable-nodpi/orbit_after_dark_epg.webp | Bin 0 -> 6518 bytes .../main/res/drawable-nodpi/orbit_banner.png | Bin 0 -> 31233 bytes .../app/src/main/res/drawable/orbit_icon.xml | 1 + .../main/res/font/barlow_condensed_medium.ttf | Bin 0 -> 103360 bytes .../app/src/main/res/font/barlow_regular.ttf | Bin 0 -> 104068 bytes .../app/src/main/res/font/barlow_semibold.ttf | Bin 0 -> 108348 bytes android/app/src/main/res/values/styles.xml | 1 + .../tv/orbit/classic/AfterDarkMoviesTest.kt | 101 + .../java/tv/orbit/classic/EmbyClientTest.kt | 136 + .../java/tv/orbit/classic/EmbyPlaybackTest.kt | 180 + .../tv/orbit/classic/EpisodeDiscoveryTest.kt | 68 + .../tv/orbit/classic/RememberedStateTest.kt | 95 + .../tv/orbit/classic/SampleChannelTest.kt | 93 + .../java/tv/orbit/classic/ScheduleTest.kt | 32 + .../tv/orbit/classic/SeriesDiscoveryTest.kt | 77 + .../tv/orbit/classic/ToonamiChannelTest.kt | 72 + android/build.gradle.kts | 4 + android/gradle.properties | 3 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 46175 bytes .../gradle/wrapper/gradle-wrapper.properties | 9 + android/gradlew | 248 + android/gradlew.bat | 93 + android/settings.gradle.kts | 4 + build-android.sh | 8 + .../orbit-after-dark-motion-03/README.md | 14 + .../exports/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../fonts/barlow-condensed-medium.ttf | Bin 0 -> 103360 bytes .../brand-source/fonts/barlow-regular.ttf | Bin 0 -> 104068 bytes .../brand-source/fonts/barlow-semibold.ttf | Bin 0 -> 108348 bytes .../brand-source/licenses/barlow-OFL.txt | 93 + .../licenses/barlow-condensed-OFL.txt | 93 + .../sources/orbit_after_dark.vectorcraft | 1574 +++ .../sources/orbit_after_dark_sky.svg | 1 + .../sources/orbit_after_dark_skyline.svg | 1 + .../sources/orbit_after_dark_stars.svg | 1 + .../sources/orbit_after_dark_windows.svg | 1 + .../build-motion.py | 53 + .../exports/night_base.png | Bin 0 -> 91999 bytes .../exports/orbit_after_dark_night.mp4 | Bin 0 -> 658266 bytes .../exports/window_01.png | Bin 0 -> 8259 bytes .../exports/window_02.png | Bin 0 -> 8255 bytes .../exports/window_03.png | Bin 0 -> 8257 bytes .../exports/window_04.png | Bin 0 -> 8257 bytes .../exports/window_05.png | Bin 0 -> 8258 bytes .../exports/window_06.png | Bin 0 -> 8257 bytes .../exports/window_07.png | Bin 0 -> 8258 bytes .../exports/window_08.png | Bin 0 -> 8257 bytes .../exports/window_09.png | Bin 0 -> 8257 bytes .../exports/window_10.png | Bin 0 -> 8258 bytes .../exports/window_11.png | Bin 0 -> 8258 bytes .../exports/window_12.png | Bin 0 -> 8258 bytes .../review/final_logo.png | Bin 0 -> 144470 bytes .../review/night_sequence.png | Bin 0 -> 138281 bytes .../sources/build-commands.json | 1376 ++ .../(Footage)/night_base.png | Bin 0 -> 91999 bytes .../(Footage)/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../collected-project/(Footage)/window_01.png | Bin 0 -> 8259 bytes .../collected-project/(Footage)/window_02.png | Bin 0 -> 8255 bytes .../collected-project/(Footage)/window_03.png | Bin 0 -> 8257 bytes .../collected-project/(Footage)/window_04.png | Bin 0 -> 8257 bytes .../collected-project/(Footage)/window_05.png | Bin 0 -> 8258 bytes .../collected-project/(Footage)/window_06.png | Bin 0 -> 8257 bytes .../collected-project/(Footage)/window_07.png | Bin 0 -> 8258 bytes .../collected-project/(Footage)/window_08.png | Bin 0 -> 8257 bytes .../collected-project/(Footage)/window_09.png | Bin 0 -> 8257 bytes .../collected-project/(Footage)/window_10.png | Bin 0 -> 8258 bytes .../collected-project/(Footage)/window_11.png | Bin 0 -> 8258 bytes .../collected-project/(Footage)/window_12.png | Bin 0 -> 8258 bytes .../orbit_after_dark_night.ecproj | 11231 +++++++++++++++ .../sources/night_base.svg | 1 + .../sources/orbit_after_dark_night.ecproj | 11236 ++++++++++++++++ .../sources/window_01.svg | 1 + .../sources/window_02.svg | 1 + .../sources/window_03.svg | 1 + .../sources/window_04.svg | 1 + .../sources/window_05.svg | 1 + .../sources/window_06.svg | 1 + .../sources/window_07.svg | 1 + .../sources/window_08.svg | 1 + .../sources/window_09.svg | 1 + .../sources/window_10.svg | 1 + .../sources/window_11.svg | 1 + .../sources/window_12.svg | 1 + .../channels/orbit-after-dark-v02/README.md | 49 + .../branding-manifest.json | 48 + .../orbit-after-dark-v02/create-proof.py | 80 + .../orbit-after-dark-v02/design-philosophy.md | 11 + .../exports/orbit_after_dark_background.png | Bin 0 -> 95370 bytes .../exports/orbit_after_dark_background.webp | Bin 0 -> 22006 bytes .../exports/orbit_after_dark_bug.png | Bin 0 -> 6975 bytes .../exports/orbit_after_dark_bug.svg | 22 + .../exports/orbit_after_dark_bug_app.webp | Bin 0 -> 3676 bytes .../exports/orbit_after_dark_bug_wordmark.png | Bin 0 -> 5163 bytes .../exports/orbit_after_dark_bug_wordmark.svg | 25 + .../exports/orbit_after_dark_epg.png | Bin 0 -> 7347 bytes .../exports/orbit_after_dark_epg.svg | 25 + .../exports/orbit_after_dark_epg_app.webp | Bin 0 -> 6518 bytes .../exports/orbit_after_dark_ident.mp4 | Bin 0 -> 643348 bytes .../exports/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../exports/orbit_after_dark_primary.svg | 37 + .../exports/orbit_after_dark_sky.png | Bin 0 -> 83040 bytes .../exports/orbit_after_dark_skyline.png | Bin 0 -> 17306 bytes .../exports/orbit_after_dark_stars.png | Bin 0 -> 9162 bytes .../exports/orbit_after_dark_windows.png | Bin 0 -> 13230 bytes .../fonts/barlow-condensed-medium.ttf | Bin 0 -> 103360 bytes .../fonts/barlow-regular.ttf | Bin 0 -> 104068 bytes .../fonts/barlow-semibold.ttf | Bin 0 -> 108348 bytes .../licenses/barlow-OFL.txt | 93 + .../licenses/barlow-condensed-OFL.txt | 93 + .../orbit-after-dark-v02/open-proof.sh | 13 + .../orbit-after-dark-v02/render-ident.py | 12 + .../orbit_after_dark_guide_mockup.figcraft | Bin 0 -> 21766 bytes .../review/orbit_after_dark_guide_mockup.png | Bin 0 -> 153663 bytes .../orbit_after_dark_ident_midpoint.png | Bin 0 -> 172030 bytes .../orbit_after_dark_menu_mockup.figcraft | Bin 0 -> 50495 bytes .../review/orbit_after_dark_menu_mockup.png | Bin 0 -> 237234 bytes ...rbit_after_dark_player_hud_mockup.figcraft | Bin 0 -> 42957 bytes .../orbit_after_dark_player_hud_mockup.png | Bin 0 -> 211746 bytes .../orbit_after_dark_player_mockup.figcraft | Bin 0 -> 44378 bytes .../review/orbit_after_dark_player_mockup.png | Bin 0 -> 191507 bytes .../orbit_after_dark_portable_ident_check.png | Bin 0 -> 132865 bytes .../review/orbit_after_dark_review.figcraft | Bin 0 -> 29492 bytes .../review/orbit_after_dark_review.png | Bin 0 -> 182997 bytes .../orbit_after_dark_title_card.figcraft | Bin 0 -> 52173 bytes .../review/orbit_after_dark_title_card.png | Bin 0 -> 230896 bytes .../sources/animate-ident.json | 137 + .../sources/create-ident.json | 31 + .../(Footage)/orbit_after_dark_background.png | Bin 0 -> 95370 bytes .../(Footage)/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../orbit_after_dark_ident.ecproj | 1363 ++ .../sources/orbit_after_dark.vectorcraft | 1574 +++ .../orbit_after_dark_background.pcraft | Bin 0 -> 663802 bytes .../sources/orbit_after_dark_background.svg | 1 + .../sources/orbit_after_dark_bug.svg | 1 + .../sources/orbit_after_dark_bug.vectorcraft | 1335 ++ .../sources/orbit_after_dark_bug_wordmark.svg | 1 + .../orbit_after_dark_bug_wordmark.vectorcraft | 1385 ++ .../sources/orbit_after_dark_epg.svg | 1 + .../sources/orbit_after_dark_epg.vectorcraft | 1385 ++ .../sources/orbit_after_dark_guide_mockup.svg | 1 + .../sources/orbit_after_dark_ident.ecproj | 1368 ++ .../sources/orbit_after_dark_menu_mockup.svg | 1 + .../orbit_after_dark_player_hud_mockup.svg | 1 + .../orbit_after_dark_player_mockup.svg | 1 + .../sources/orbit_after_dark_primary.svg | 1 + .../sources/orbit_after_dark_review.svg | 1 + .../sources/orbit_after_dark_sky.svg | 1 + .../sources/orbit_after_dark_skyline.svg | 1 + .../sources/orbit_after_dark_stars.svg | 1 + .../sources/orbit_after_dark_title_card.svg | 1 + .../sources/orbit_after_dark_windows.svg | 1 + .../orbit-after-dark-v02/verification.json | 67 + design/channels/orbit-after-dark/README.md | 45 + .../orbit-after-dark/branding-manifest.json | 46 + .../channels/orbit-after-dark/create-proof.py | 69 + .../orbit-after-dark/design-philosophy.md | 11 + .../exports/orbit_after_dark_background.png | Bin 0 -> 91432 bytes .../exports/orbit_after_dark_background.webp | Bin 0 -> 10768 bytes .../exports/orbit_after_dark_bug.png | Bin 0 -> 6975 bytes .../exports/orbit_after_dark_bug.svg | 22 + .../exports/orbit_after_dark_bug_app.webp | Bin 0 -> 3676 bytes .../exports/orbit_after_dark_bug_wordmark.png | Bin 0 -> 5163 bytes .../exports/orbit_after_dark_bug_wordmark.svg | 25 + .../exports/orbit_after_dark_epg.png | Bin 0 -> 7347 bytes .../exports/orbit_after_dark_epg.svg | 25 + .../exports/orbit_after_dark_epg_app.webp | Bin 0 -> 6518 bytes .../exports/orbit_after_dark_ident.mp4 | Bin 0 -> 633277 bytes .../exports/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../exports/orbit_after_dark_primary.svg | 37 + .../exports/orbit_after_dark_sky.png | Bin 0 -> 83040 bytes .../exports/orbit_after_dark_skyline.png | Bin 0 -> 17306 bytes .../exports/orbit_after_dark_stars.png | Bin 0 -> 9162 bytes .../fonts/barlow-condensed-medium.ttf | Bin 0 -> 103360 bytes .../orbit-after-dark/fonts/barlow-regular.ttf | Bin 0 -> 104068 bytes .../fonts/barlow-semibold.ttf | Bin 0 -> 108348 bytes .../orbit-after-dark/licenses/barlow-OFL.txt | 93 + .../licenses/barlow-condensed-OFL.txt | 93 + .../channels/orbit-after-dark/open-proof.sh | 13 + .../channels/orbit-after-dark/render-ident.py | 12 + .../orbit_after_dark_guide_mockup.figcraft | Bin 0 -> 21766 bytes .../review/orbit_after_dark_guide_mockup.png | Bin 0 -> 153663 bytes .../orbit_after_dark_ident_midpoint.png | Bin 0 -> 138249 bytes .../orbit_after_dark_menu_mockup.figcraft | Bin 0 -> 40474 bytes .../review/orbit_after_dark_menu_mockup.png | Bin 0 -> 226612 bytes ...rbit_after_dark_player_hud_mockup.figcraft | Bin 0 -> 36444 bytes .../orbit_after_dark_player_hud_mockup.png | Bin 0 -> 209880 bytes .../orbit_after_dark_player_mockup.figcraft | Bin 0 -> 33922 bytes .../review/orbit_after_dark_player_mockup.png | Bin 0 -> 187268 bytes .../orbit_after_dark_portable_ident_check.png | Bin 0 -> 122631 bytes .../review/orbit_after_dark_review.figcraft | Bin 0 -> 29492 bytes .../review/orbit_after_dark_review.png | Bin 0 -> 182997 bytes .../orbit_after_dark_title_card.figcraft | Bin 0 -> 41642 bytes .../review/orbit_after_dark_title_card.png | Bin 0 -> 226413 bytes .../sources/animate-ident.json | 137 + .../sources/create-ident.json | 31 + .../(Footage)/orbit_after_dark_background.png | Bin 0 -> 91432 bytes .../(Footage)/orbit_after_dark_primary.png | Bin 0 -> 44795 bytes .../orbit_after_dark_ident.ecproj | 1363 ++ .../sources/orbit_after_dark.vectorcraft | 1574 +++ .../orbit_after_dark_background.pcraft | Bin 0 -> 616599 bytes .../sources/orbit_after_dark_background.svg | 1 + .../sources/orbit_after_dark_bug.svg | 1 + .../sources/orbit_after_dark_bug.vectorcraft | 1335 ++ .../sources/orbit_after_dark_bug_wordmark.svg | 1 + .../orbit_after_dark_bug_wordmark.vectorcraft | 1385 ++ .../sources/orbit_after_dark_epg.svg | 1 + .../sources/orbit_after_dark_epg.vectorcraft | 1385 ++ .../sources/orbit_after_dark_guide_mockup.svg | 1 + .../sources/orbit_after_dark_ident.ecproj | 1368 ++ .../sources/orbit_after_dark_menu_mockup.svg | 1 + .../orbit_after_dark_player_hud_mockup.svg | 1 + .../orbit_after_dark_player_mockup.svg | 1 + .../sources/orbit_after_dark_primary.svg | 1 + .../sources/orbit_after_dark_review.svg | 1 + .../sources/orbit_after_dark_sky.svg | 1 + .../sources/orbit_after_dark_skyline.svg | 1 + .../sources/orbit_after_dark_stars.svg | 1 + .../sources/orbit_after_dark_title_card.svg | 1 + .../orbit-after-dark/verification.json | 61 + design/classic-programme-strip.figcraft | Bin 0 -> 16134 bytes design/classic-programme-strip.png | Bin 0 -> 105119 bytes design/classic-programme-strip.svg | 28 + design/create-classic-osd.py | 19 + design/create-design.py | 39 + design/create-drive-in-mark.py | 25 + design/create-orboffice.py | 65 + design/design-notes-0.2.md | 18 + design/design-notes.md | 18 + design/font-comparison.png | Bin 0 -> 87926 bytes design/font-report.json | 1 + design/fonts/README.md | 4 + design/fonts/barlow-condensed-medium.ttf | Bin 0 -> 103360 bytes design/fonts/barlow-regular.ttf | Bin 0 -> 104068 bytes design/fonts/barlow-semibold.ttf | Bin 0 -> 108348 bytes design/fonts/instrument-sans.ttf | Bin 0 -> 194336 bytes design/open-design.sh | 9 + design/orbit-classic-guide.figcraft | Bin 0 -> 37266 bytes design/orbit-classic-guide.png | Bin 0 -> 242579 bytes design/orbit-classic-guide.svg | 61 + design/orbit-menu.figcraft | Bin 0 -> 21744 bytes design/orbit-menu.png | Bin 0 -> 158808 bytes design/orbit-menu.svg | 28 + design/orbit-wordmark.svg | 1 + design/orbit-wordmark.vectorcraft | 1274 ++ design/orboffice-drive-in-brief.md | 36 + design/orboffice-drive-in-concept.png | Bin 0 -> 43873 bytes design/orboffice-drive-in-mark.svg | 20 + design/orboffice-drive-in-proof.svg | 21 + design/orboffice-drive-in.figcraft | Bin 0 -> 14779 bytes design/orboffice-drive-in.vectorcraft | 2671 ++++ design/orboffice.figcraft | Bin 0 -> 35541 bytes design/orboffice.png | Bin 0 -> 234971 bytes design/orboffice.svg | 72 + design/orboffice.vectorcraft | 6054 +++++++++ design/render-designs.sh | 13 + docs/classic-programme-strip.md | 37 + docs/emby-connection-check.md | 58 + docs/emby-playback-test.md | 57 + docs/profiles-roadmap.md | 10 + docs/sample-scheduled-channel.md | 72 + licenses/barlow-OFL.txt | 93 + licenses/barlow-condensed-OFL.txt | 93 + licenses/instrument-sans-OFL.txt | 93 + server/package-lock.json | 50 + server/package.json | 18 + server/schedule.test.ts | 27 + server/schedule.ts | 18 + server/server.ts | 20 + server/smoke-test.mjs | 20 + server/tsconfig.json | 14 + 315 files changed, 59399 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 VERIFICATION-0.10.0.md create mode 100644 VERIFICATION-0.11.0.md create mode 100644 VERIFICATION-0.12.0.md create mode 100644 VERIFICATION-0.13.0.md create mode 100644 VERIFICATION-0.14.0.md create mode 100644 VERIFICATION-0.15.0.md create mode 100644 VERIFICATION-0.2.0.md create mode 100644 VERIFICATION-0.3.0.md create mode 100644 VERIFICATION-0.4.0.md create mode 100644 VERIFICATION-0.5.0.md create mode 100644 VERIFICATION-0.6.0.md create mode 100644 VERIFICATION-0.7.0.md create mode 100644 VERIFICATION-0.8.0.md create mode 100644 VERIFICATION-0.9.0.md create mode 100644 VERIFICATION.md create mode 100644 android/app/build.gradle.kts create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/assets/font-licenses/barlow-OFL.txt create mode 100644 android/app/src/main/assets/font-licenses/barlow-condensed-OFL.txt create mode 100644 android/app/src/main/assets/orbit-demo.mp4 create mode 100644 android/app/src/main/java/tv/orbit/classic/AfterDarkMovies.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/AfterDarkReviewScreen.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/ChannelTuningBackdrop.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/ClassicProgrammeStrip.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/DirectContainers.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/EmbyClient.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/EmbyPlaybackDialog.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/EpisodeDiscovery.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/MainActivity.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/OrbitSections.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/RememberedConnectionStore.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/RememberedState.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/SampleChannel.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/SampleChannelScreens.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/Schedule.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/SeriesDiscovery.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/SeriesReviewScreen.kt create mode 100644 android/app/src/main/java/tv/orbit/classic/ToonamiChannel.kt create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_after_dark_background.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_after_dark_epg.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_banner.png create mode 100644 android/app/src/main/res/drawable/orbit_icon.xml create mode 100644 android/app/src/main/res/font/barlow_condensed_medium.ttf create mode 100644 android/app/src/main/res/font/barlow_regular.ttf create mode 100644 android/app/src/main/res/font/barlow_semibold.ttf create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/test/java/tv/orbit/classic/AfterDarkMoviesTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/EmbyClientTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/EmbyPlaybackTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/EpisodeDiscoveryTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/RememberedStateTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/SampleChannelTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/ScheduleTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/SeriesDiscoveryTest.kt create mode 100644 android/app/src/test/java/tv/orbit/classic/ToonamiChannelTest.kt create mode 100644 android/build.gradle.kts create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/settings.gradle.kts create mode 100755 build-android.sh create mode 100644 design/channels/orbit-after-dark-motion-03/README.md create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/exports/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/fonts/barlow-condensed-medium.ttf create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/fonts/barlow-regular.ttf create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/fonts/barlow-semibold.ttf create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/licenses/barlow-OFL.txt create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/licenses/barlow-condensed-OFL.txt create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/sources/orbit_after_dark.vectorcraft create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/sources/orbit_after_dark_sky.svg create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/sources/orbit_after_dark_skyline.svg create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/sources/orbit_after_dark_stars.svg create mode 100644 design/channels/orbit-after-dark-motion-03/brand-source/sources/orbit_after_dark_windows.svg create mode 100644 design/channels/orbit-after-dark-motion-03/build-motion.py create mode 100644 design/channels/orbit-after-dark-motion-03/exports/night_base.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/orbit_after_dark_night.mp4 create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_01.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_02.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_03.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_04.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_05.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_06.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_07.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_08.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_09.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_10.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_11.png create mode 100644 design/channels/orbit-after-dark-motion-03/exports/window_12.png create mode 100644 design/channels/orbit-after-dark-motion-03/review/final_logo.png create mode 100644 design/channels/orbit-after-dark-motion-03/review/night_sequence.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/build-commands.json create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/night_base.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_01.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_02.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_03.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_04.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_05.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_06.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_07.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_08.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_09.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_10.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_11.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/(Footage)/window_12.png create mode 100644 design/channels/orbit-after-dark-motion-03/sources/collected-project/orbit_after_dark_night.ecproj create mode 100644 design/channels/orbit-after-dark-motion-03/sources/night_base.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/orbit_after_dark_night.ecproj create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_01.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_02.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_03.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_04.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_05.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_06.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_07.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_08.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_09.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_10.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_11.svg create mode 100644 design/channels/orbit-after-dark-motion-03/sources/window_12.svg create mode 100644 design/channels/orbit-after-dark-v02/README.md create mode 100644 design/channels/orbit-after-dark-v02/branding-manifest.json create mode 100644 design/channels/orbit-after-dark-v02/create-proof.py create mode 100644 design/channels/orbit-after-dark-v02/design-philosophy.md create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_background.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_background.webp create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_bug.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_bug.svg create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_bug_app.webp create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_bug_wordmark.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_bug_wordmark.svg create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_epg.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_epg.svg create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_epg_app.webp create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_ident.mp4 create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_primary.svg create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_sky.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_skyline.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_stars.png create mode 100644 design/channels/orbit-after-dark-v02/exports/orbit_after_dark_windows.png create mode 100644 design/channels/orbit-after-dark-v02/fonts/barlow-condensed-medium.ttf create mode 100644 design/channels/orbit-after-dark-v02/fonts/barlow-regular.ttf create mode 100644 design/channels/orbit-after-dark-v02/fonts/barlow-semibold.ttf create mode 100644 design/channels/orbit-after-dark-v02/licenses/barlow-OFL.txt create mode 100644 design/channels/orbit-after-dark-v02/licenses/barlow-condensed-OFL.txt create mode 100755 design/channels/orbit-after-dark-v02/open-proof.sh create mode 100644 design/channels/orbit-after-dark-v02/render-ident.py create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_guide_mockup.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_guide_mockup.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_ident_midpoint.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_menu_mockup.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_menu_mockup.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_player_hud_mockup.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_player_hud_mockup.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_player_mockup.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_player_mockup.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_portable_ident_check.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_review.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_review.png create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_title_card.figcraft create mode 100644 design/channels/orbit-after-dark-v02/review/orbit_after_dark_title_card.png create mode 100644 design/channels/orbit-after-dark-v02/sources/animate-ident.json create mode 100644 design/channels/orbit-after-dark-v02/sources/create-ident.json create mode 100644 design/channels/orbit-after-dark-v02/sources/ident-project/(Footage)/orbit_after_dark_background.png create mode 100644 design/channels/orbit-after-dark-v02/sources/ident-project/(Footage)/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark-v02/sources/ident-project/orbit_after_dark_ident.ecproj create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark.vectorcraft create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_background.pcraft create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_background.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_bug.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_bug.vectorcraft create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_bug_wordmark.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_bug_wordmark.vectorcraft create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_epg.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_epg.vectorcraft create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_guide_mockup.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_ident.ecproj create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_menu_mockup.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_player_hud_mockup.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_player_mockup.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_primary.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_review.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_sky.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_skyline.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_stars.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_title_card.svg create mode 100644 design/channels/orbit-after-dark-v02/sources/orbit_after_dark_windows.svg create mode 100644 design/channels/orbit-after-dark-v02/verification.json create mode 100644 design/channels/orbit-after-dark/README.md create mode 100644 design/channels/orbit-after-dark/branding-manifest.json create mode 100644 design/channels/orbit-after-dark/create-proof.py create mode 100644 design/channels/orbit-after-dark/design-philosophy.md create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_background.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_background.webp create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_bug.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_bug.svg create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_bug_app.webp create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_bug_wordmark.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_bug_wordmark.svg create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_epg.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_epg.svg create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_epg_app.webp create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_ident.mp4 create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_primary.svg create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_sky.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_skyline.png create mode 100644 design/channels/orbit-after-dark/exports/orbit_after_dark_stars.png create mode 100644 design/channels/orbit-after-dark/fonts/barlow-condensed-medium.ttf create mode 100644 design/channels/orbit-after-dark/fonts/barlow-regular.ttf create mode 100644 design/channels/orbit-after-dark/fonts/barlow-semibold.ttf create mode 100644 design/channels/orbit-after-dark/licenses/barlow-OFL.txt create mode 100644 design/channels/orbit-after-dark/licenses/barlow-condensed-OFL.txt create mode 100755 design/channels/orbit-after-dark/open-proof.sh create mode 100644 design/channels/orbit-after-dark/render-ident.py create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_guide_mockup.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_guide_mockup.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_ident_midpoint.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_menu_mockup.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_menu_mockup.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_player_hud_mockup.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_player_hud_mockup.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_player_mockup.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_player_mockup.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_portable_ident_check.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_review.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_review.png create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_title_card.figcraft create mode 100644 design/channels/orbit-after-dark/review/orbit_after_dark_title_card.png create mode 100644 design/channels/orbit-after-dark/sources/animate-ident.json create mode 100644 design/channels/orbit-after-dark/sources/create-ident.json create mode 100644 design/channels/orbit-after-dark/sources/ident-project/(Footage)/orbit_after_dark_background.png create mode 100644 design/channels/orbit-after-dark/sources/ident-project/(Footage)/orbit_after_dark_primary.png create mode 100644 design/channels/orbit-after-dark/sources/ident-project/orbit_after_dark_ident.ecproj create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark.vectorcraft create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_background.pcraft create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_background.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_bug.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_bug.vectorcraft create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_bug_wordmark.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_bug_wordmark.vectorcraft create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_epg.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_epg.vectorcraft create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_guide_mockup.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_ident.ecproj create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_menu_mockup.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_player_hud_mockup.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_player_mockup.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_primary.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_review.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_sky.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_skyline.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_stars.svg create mode 100644 design/channels/orbit-after-dark/sources/orbit_after_dark_title_card.svg create mode 100644 design/channels/orbit-after-dark/verification.json create mode 100644 design/classic-programme-strip.figcraft create mode 100644 design/classic-programme-strip.png create mode 100644 design/classic-programme-strip.svg create mode 100644 design/create-classic-osd.py create mode 100644 design/create-design.py create mode 100644 design/create-drive-in-mark.py create mode 100644 design/create-orboffice.py create mode 100644 design/design-notes-0.2.md create mode 100644 design/design-notes.md create mode 100644 design/font-comparison.png create mode 100644 design/font-report.json create mode 100644 design/fonts/README.md create mode 100644 design/fonts/barlow-condensed-medium.ttf create mode 100644 design/fonts/barlow-regular.ttf create mode 100644 design/fonts/barlow-semibold.ttf create mode 100644 design/fonts/instrument-sans.ttf create mode 100755 design/open-design.sh create mode 100644 design/orbit-classic-guide.figcraft create mode 100644 design/orbit-classic-guide.png create mode 100644 design/orbit-classic-guide.svg create mode 100644 design/orbit-menu.figcraft create mode 100644 design/orbit-menu.png create mode 100644 design/orbit-menu.svg create mode 100644 design/orbit-wordmark.svg create mode 100644 design/orbit-wordmark.vectorcraft create mode 100644 design/orboffice-drive-in-brief.md create mode 100644 design/orboffice-drive-in-concept.png create mode 100644 design/orboffice-drive-in-mark.svg create mode 100644 design/orboffice-drive-in-proof.svg create mode 100644 design/orboffice-drive-in.figcraft create mode 100644 design/orboffice-drive-in.vectorcraft create mode 100644 design/orboffice.figcraft create mode 100644 design/orboffice.png create mode 100644 design/orboffice.svg create mode 100644 design/orboffice.vectorcraft create mode 100755 design/render-designs.sh create mode 100644 docs/classic-programme-strip.md create mode 100644 docs/emby-connection-check.md create mode 100644 docs/emby-playback-test.md create mode 100644 docs/profiles-roadmap.md create mode 100644 docs/sample-scheduled-channel.md create mode 100644 licenses/barlow-OFL.txt create mode 100644 licenses/barlow-condensed-OFL.txt create mode 100644 licenses/instrument-sans-OFL.txt create mode 100644 server/package-lock.json create mode 100644 server/package.json create mode 100644 server/schedule.test.ts create mode 100644 server/schedule.ts create mode 100644 server/server.ts create mode 100644 server/smoke-test.mjs create mode 100644 server/tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d85c9d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.tooling/ +android/.gradle/ +android/local.properties +android/**/build/ +server/node_modules/ +server/dist/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0ab3c95 --- /dev/null +++ b/README.md @@ -0,0 +1,139 @@ +# Orbit TV — local prototype + +A native Android TV prototype for review on Paul's Xiaomi TV Box S 3rd Gen. + +## Revision 0.6.0 — one scheduled Emby channel + +Paul confirmed the 0.5.0 strip hides and displays correctly. The next increment adds a +sample guide for one real channel: Menu → Connect Emby → Check 20 items → Create sample channel. +It checks at most five media-source metadata responses and keeps up to three eligible titles. +A precise UTC timeline repeats the lineup, joins in progress and advances automatically. +Watch channel uses the ordinary clock; Check transition jumps near an end for a quick handover +check and is labelled as a test. It may affect normal provider viewing history. +Now/Next in the strip and sample guide comes from that timeline. Pause/seek remain on-demand +features; the scheduled channel follows the clock. Back returns to the sample guide. +No channel, credentials or tokens are persisted yet. See docs/sample-scheduled-channel.md. +This version needs approval before TV installation and real channel/rollover acceptance testing. + +## Revision 0.5.0 — Classic programme strip + +Paul confirmed 0.4.0 played real provider media. This visual revision replaces its persistent +top banner/stock controller with a bottom classic programme strip that hides after five seconds +of active playback. OK reveals it; while visible OK toggles pause/play, and left/right seek. +The channel/guide/subtitle legend is visual only for now, as requested. Back still returns +to the sample. The stock subtitle/audio menu is not shown in this presentation pass. +See docs/classic-programme-strip.md. Logo artwork also loses the CRT's white cabinet outline. +The new presentation needs its own TV acceptance check and approval before installation. + +## Revision 0.4.0 — small-sample playback test + +The 20-item connection check succeeded on Paul's Xiaomi box. The next revision makes those +sample items playable, retaining the temporary login in memory until the sample screen exits. +Select a title, use fullscreen pause/seek/audio/subtitle controls, and Back to return to the sample. +Direct streaming is tested first: no automatic video transcoding, full scan or saved credentials. +Playback may update normal provider watch history. See docs/emby-playback-test.md for boundaries. + +The 0.4.0 APK was installed, and Paul confirmed real media playback. An original gold/charcoal +OrbOffice drive-in ticket logo concept is included in design/, separately from the app interface. +Brand-name clearance is not established. The Android CLI skill was assessed, not installed. + +## Revision 0.3.0 — Connect Emby + +Menu → Connect Emby opens an on-TV username/password form for the selected provider. +Check 20 items performs one sign-in, one metadata-page request and a temporary-session logout. +The sample shows titles, media types, durations and available container/codec metadata. +No password, token or sample is persisted. Credentials stay out of chat and the APK. +The connection screen blocks screenshots and clears transient data when backgrounded. +The fixed provider URL is displayed before submission; no real account has been used in tests. +This does not yet import a library or play Emby video. See docs/emby-connection-check.md. + +The prior 0.2.0 APK was installed and verified on Paul's Xiaomi box. The 0.3.0 build was subsequently installed; Paul confirmed the 20-record sample succeeded. +Later profile requirements are recorded in docs/profiles-roadmap.md. + +## Revision 0.2.0 + +- Top navigation is now 1 Menu / 2 TV Guide / 3 Box Office. +- Menu links to the guide, OrbOffice and Services (including the OrbHive Bedlam roadmap). +- OrbOffice has two selectable fictional event ticket previews with an original perforated stub design. +- Barlow and Barlow Condensed are bundled for the new sections; their OFL licences are in licenses/. +- Existing guide and fullscreen playback-bar styling is preserved. +- Proper logo work is deferred; Paul wants a centred mark with safe padding in the TV app tile. +- Reproduce the design previews with design/render-designs.sh (requires FigCraft CLI and Pillow). + Fonts are loaded from a project-local XDG data directory, without a system font installation. + +The first APK was installed on Paul's Xiaomi box. Paul confirmed navigation, tuning, +fullscreen playback and the bottom programme bar worked. Revision 0.2.0 was subsequently installed and verified on the box. + +## What works in source + +- Offline TV guide with three fictional channels and three half-hour columns. +- D-pad focus, programme descriptions, OK to tune the current show, Back to the guide. +- Current programme is determined from fixed UTC slots, not app launch time. +- Media3 joins the original 30-minute local demo video at the scheduled offset. +- One player moves between guide preview and fullscreen; playback pauses in background. +- Box Office is a ticket preview; Services keeps OrbHive Bedlam as an explicit roadmap item. +- Independent loopback-only TypeScript guide API, with no runtime npm dependencies. +- Editable FigCraft mockup and VectorCraft wordmark. + +The Android app uses its bundled Kotlin schedule. It does not call the TypeScript service yet. +The same fictional titles and slot algorithm are duplicated for this proof of concept; +replace these with an API contract before adding real channel editing. +All channels use the same silent original test signal. This is not an Emby integration. +Titles and synopses are fictional. No third-party programme footage is included. + +## Build + +Prerequisites: Java 21; Android platform 36, build-tools 36.0.0 and platform-tools. +The inspected SDK is /opt/android-sdk. android/local.properties records that machine-local path +and is excluded from version control. Set ANDROID_HOME on another machine and create an +appropriate local.properties if needed. + +Run `./build-android.sh` from the project root. The checked-in wrapper downloads the +SHA-256-pinned Gradle 9.3.1 distribution. Google/Maven Central access is needed initially. +Build dependencies, debug signing key and Gradle caches stay under .tooling/ when using the script. +The build uses AGP 9.1.1 and its built-in Kotlin support, with Compose compiler 2.2.10. +APK: android/app/build/outputs/apk/debug/app-debug.apk +Tests: android/app/build/test-results/testDebugUnitTest/ +Lint: android/app/build/reports/lint-results-debug.html + +## Backend + +Requires Node 24 and npm. This PikaOS Node package lacks native TypeScript support, +so compilation uses the pinned TypeScript dev dependency. + +``` +cd server +npm ci --ignore-scripts +npm test +npm start +``` + +The development server binds only to 127.0.0.1:4317. Stop with Ctrl+C. +GET /health; GET /guide; optional ?at=&count=1..48. +`node smoke-test.mjs` starts the service, checks responses and stops it automatically. + +## Xiaomi hardware testing + +The PC was paired with Paul's box; 0.1.0 and 0.2.0 were installed successfully. Ask before installing a new revision. +After approving a connection method, use Google's platform-tools to pair/connect as +supported by the box, then install the debug APK with `adb install -r `. +The launcher entry is Orbit TV. Pairing prompts and IP/port details come from the device; +do not guess them or expose ADB outside your trusted network. +The demo runs entirely on-device and needs no PC backend connection. + +Acceptance checks on hardware: +1. Navigate every guide cell using only arrows and OK; check readable focus and text at sofa distance. +2. Tune each current programme, return with Back, open future programme information. +3. Open at 18 minutes past a half-hour and confirm Media3 joins around 18 minutes. +4. Cross a half-hour boundary in fullscreen and guide; ensure guide and video switch together. +5. Background/resume across a slot boundary; verify the current schedule is rejoined. +6. Check Box Office and Services return paths. Record Android version and output resolution. + +## Remaining work + +Paul confirmed playback, focus and remote navigation on 0.1.0 and praised the installed 0.2.0 revision. New connection form/keyboard behaviour needs hardware testing. No emulator was installed. +No Emby credentials or authenticated library have been accessed by development tools. +The provider's public identification API was checked read-only. No VPS administration was performed. No services or firewall were changed. +Emby indexing, incremental reconciliation, parental rules, calendar programming blocks, +channel editing, theme switching, seasonal events and OrbHive Bedlam are not implemented. +Open-source licensing and final branding remain decisions for Paul. diff --git a/VERIFICATION-0.10.0.md b/VERIFICATION-0.10.0.md new file mode 100644 index 0000000..edac1bf --- /dev/null +++ b/VERIFICATION-0.10.0.md @@ -0,0 +1,15 @@ +# Orbit TV 0.10.0 — shortlist and episode metadata + +The Toonami working shortlist now includes 23 terms: the previous five plus Dragon Ball, Sailor Moon, Voltron, ReBoot, Beast Wars, Jonny Quest, Robotech, Ronin Warriors, Gundam Wing, Tenchi Muyo, Outlaw Star, The Big O, Cardcaptors, Zoids, Dragon Ball GT, Naruto, Samurai Jack, Justice League. Some terms intentionally omit punctuation/subtitles to expose provider naming variants; Paul approves actual titles/years. This is his programming direction, not a verified historical broadcast list. + +Searches run in explicit batches of at most five, ten candidates per term, accumulating in the temporary session. Check next five series advances only after a successful batch. Existing matches/approvals survive subsequent batches. Batch failure stops without automatic retry. Cancellation is checked between network requests. Individual requests retain the existing timeouts and response size limit. + +For the sample, approve up to three distinct series. Check sample episodes performs at most three GET /Shows/{id}/Episodes requests, one per selected series, Limit=5 and StartIndex=0 with user ID and header token, images/user data disabled. Results are capped locally even if the provider ignores the limit, IDs/types/returned SeriesId validated, duplicates removed. Returned sample episodes are sorted locally by known season/episode numbers; this does not prove the returned page contains the earliest five episodes. Unknown order/runtime is labelled; runtime must be 1 second to 7 days to be shown as usable metadata. Missing/invalid metadata is not invented. Episode results appear above matches and scroll into view. Changing approval clears previous episode results. + +No new playback eligibility is asserted or tested: these are metadata pages only, no PlaybackInfo or video request, no watch-history updates from the check. Channel 103 is not scheduled yet. Channel 102 and optional advert/ident modules remain future work. The existing working 101 playback integration is unchanged apart from the client version string. + +Validation: cached/offline assembleDebug, testDebugUnitTest and lintDebug passed; 61 unit tests, zero failures/errors. Added tests for later/final search batches, cancellation between searches, bounded episode pages, ordering of returned sample, source identity validation, unknown order/runtime, invalid/oversized approvals and stopping on rate limits. APK signature verified. Reviewed request bounds, session-only state and error handling. No real credentials/catalogue/media/logs accessed by development tools. Provider endpoint compatibility, remote navigation and layout still need the Xiaomi test after installation. No new dependency/device permission, VPS, firewall or service changes. + +Official references checked: +https://dev.emby.media/reference/RestAPI/ItemsService/getItems.html +https://dev.emby.media/reference/RestAPI/TvShowsService/getShowsByIdEpisodes.html diff --git a/VERIFICATION-0.11.0.md b/VERIFICATION-0.11.0.md new file mode 100644 index 0000000..84c125f --- /dev/null +++ b/VERIFICATION-0.11.0.md @@ -0,0 +1,15 @@ +# Orbit TV 0.11.0 — playable channel 103 + +Approved scope: create a repeating clock-based channel from the checked sample of one to three approved series. Flow: sign in → check shortlist → approve versions → check sample episodes → Create playable 103 → Watch channel. Existing channel 101 can also be built in the session; the guide header offers switching between 101 and 103 when both exist. This is a guide switch, not yet channel-up/down remote tuning. Channel 102 and adverts remain future work. + +A session retains the latest checked episode metadata (maximum three series × five episodes). The builder interleaves each show's returned sample in ascending season/episode order, e.g. A1,B1,C1,A2,B2,C2, continuing remaining shows when sample lengths differ. Missing season/episode, specials (season zero), duplicate positions or duplicate IDs reject the build rather than inventing order. Only the returned sample is ordered; earlier library pages/episode gaps are not discovered or repaired. The complete sample repeats, returning to each show's first sampled episode on the next cycle. No persisted viewing progression or complete-library episode rotation is claimed. + +At most 15 PlaybackInfo metadata probes, IsPlayback=false, no live opening/transcoding. Every sampled episode must offer an eligible direct source and valid runtime; an unsupported episode stops the build rather than skipping ahead. Source runtimes and IDs are locked into the timeline. The existing UTC clock, join-in-progress seek, boundary handover, Now/Next, transition check, manual joining Retry and green number overlay are reused; overlay reads 103 for this channel. Decoder compatibility is still a hardware question. + +Playback authorization now additionally accepts canonical episode records from the current checked page or retained built-103 lineup. Arbitrary IDs still fail before any request. These allowlists are bounded (at most 15 checked + 15 built episode records), in memory only, cleared at sign-out. No private catalogue or video was accessed by development tools. Actual watching sends normal Emby playback reports and may update watch history; transition check remains explicitly labelled. + +Validation: offline assembleDebug, testDebugUnitTest and lintDebug passed. 66 tests passed, zero failures/errors. New fictional fixtures cover interleaving uneven series, rejecting unknown/special/duplicate order, 15-item schedule cap and clock boundaries, episode allowlisting, IsPlayback=false probes, source runtime preference/locking, and stopping at an unsupported episode. Source reviewed for boundedness, temporary ownership, guide navigation and API scope. Signature verified. Provider eligibility, 103 playback/rollover and 101↔103 navigation still require the Xiaomi remote test after installation. + +No dependency/device permission, VPS/firewall/service, full importer or persistent credential changes. Previous Emby playback API references remain applicable: +https://dev.emby.media/reference/RestAPI/MediaInfoService/postItemsByIdPlaybackinfo.html +https://dev.emby.media/doc/restapi/Playback-Guidelines.html diff --git a/VERIFICATION-0.12.0.md b/VERIFICATION-0.12.0.md new file mode 100644 index 0000000..f45206b --- /dev/null +++ b/VERIFICATION-0.12.0.md @@ -0,0 +1,11 @@ +# Orbit TV 0.12.0 — compatible source selection and diagnostics + +Report: Create playable 103 failed with the app's unsupported-container message, from selections among the original five search terms. The precise selected shows, source container and availability of alternate sources are not yet known. No real metadata/account/device logs were collected. The real failure cannot yet be attributed to a particular format. + +Inspection found an independent selection defect: prepare chose the first direct source, then rejected its container, ignoring later compatible direct sources. It now filters eligible direct sources by the existing supported-container set before choosing. A previously locked scheduled source is still mandatory and cannot silently change to another version. Container tokens are trimmed and case-normalized; supported set is unchanged (mp4,mkv,mov,m4v,webm,ts,mpegts). No unsupported extractor/decoder capability is invented. + +If no eligible direct source has a supported container, the error includes at most three short sanitized format labels. Arbitrary paths, URLs and long strings become unknown. A failed Toonami builder identifies the series/episode using its already displayed local title and retains HTTP status when wrapping errors. It still stops instead of skipping episodes. No transcoding, remuxing, fallback server process or full importer added. If this provider only offers an unsupported format, this build will explain it rather than necessarily make the episode playable. + +Validation: cached/offline assembleDebug, testDebugUnitTest and lintDebug passed; 68 tests, zero failures/errors. Added regression coverage with a first unsupported AVI candidate followed by supported MKV: MKV is selected; a lock to the AVI source still fails. Tests cover container whitespace/case normalization, unsupported diagnostics and raw-URL/oversized-label rejection. Signature verified. Real provider behavior and specific blocker still require the Xiaomi test after installation. No dependency, device permission, VPS/firewall/service or private-data persistence changes. + +Official format capabilities checked: https://developer.android.com/media/media3/exoplayer/supported-formats . No claim that the fixture AVI value is the user's actual container. diff --git a/VERIFICATION-0.13.0.md b/VERIFICATION-0.13.0.md new file mode 100644 index 0000000..16edc59 --- /dev/null +++ b/VERIFICATION-0.13.0.md @@ -0,0 +1,13 @@ +# Orbit TV 0.13.0 — 3GP and duplicate-entry details + +Report: Powerpuff Girls S1 E2 failed direct container eligibility with 3gp. Batman Beyond has two search entries. We have not read actual private account metadata or media from development tooling, and do not know what distinguishes those two entries. + +The pinned Media3 1.8.0 MP4 Sniffer accepts file brands beginning 3gp. The app's direct-container set now includes 3gp, shared between the advertised Emby DirectPlayProfile and local validation. URLs retain stream.3gp; files are not renamed, transcoded or remuxed. This removes the app-level block; actual codecs, provider delivery, seeking and hardware decoding still require the box test. No claim that every 3GP file is playable. + +Same-title/same-year series records with distinct IDs remain separate and are labelled Entry 1 of N, Entry 2 of N within that search. Different years remain distinct without duplicate labels. No automatic merging or guessed 1080p/4K/remux designation. Episode samples request Fields=MediaStreams and show returned video dimensions, container and video/audio codec names where available; missing fields remain absent. These describe the returned sample episode, not a guarantee that every episode of a series shares its format. The episode section repeats the entry label to aid comparison before choosing a version. No extra per-series network probes are added. + +Validation: offline assembleDebug, testDebugUnitTest and lintDebug passed; 71 tests, zero failures/errors. New tests cover 3GP profile/URL consistency, neutral duplicate labels with distinct IDs and years, returned resolution/container/codecs, and absence of guessed quality when metadata is missing. APK signature verified. Source reviewed for bounded parsing, original-ID preservation, in-memory session handling and no changes to source locks. Provider compatibility, 3GP playback and duplicate comparison layout still need the Xiaomi remote test after installation. No new dependencies/device permissions, VPS/firewall/services or persistent private-data changes. + +Primary evidence: +https://github.com/androidx/media/blob/1.8.0/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Sniffer.java (isCompatibleBrand accepts 3gp prefix) +https://dev.emby.media/reference/RestAPI/ItemsService/getItems.html (Fields=MediaStreams and stream Width/Height/Codec) diff --git a/VERIFICATION-0.14.0.md b/VERIFICATION-0.14.0.md new file mode 100644 index 0000000..6c72025 --- /dev/null +++ b/VERIFICATION-0.14.0.md @@ -0,0 +1,19 @@ +# Orbit TV 0.14.0 — remembered connection and setup + +Scope approved: remember sign-in and saved channel choices, before building out the standard 101 Orbit One / 102 Orbit After Dark / 103 classic-action-animation lineup. Custom user channel presets, recommendation/availability ticks, full indexing/refresh, original multi-channel grid, seasonal rules and adverts remain future increments. Channel 102 is not added here. + +The app now stores an access token, provider-scoped user ID and consistent generated device ID, the existing bounded sample metadata, shortlist results/progress, approved versions, episode pages, built 101/103 lineups/source IDs/runtimes and selected guide channel. Password and username text fields are never persisted. A new sign-in is needed once after installing this first persistence build because earlier versions saved nothing. + +Storage is AES-256/GCM with fresh provider-generated 96-bit IV per write, 128-bit authentication tag, fixed schema-specific AAD and an AndroidKeyStore key. Only ciphertext is written with AtomicFile in app-private noBackupFilesDir; allowBackup=false remains. No plaintext fallback, additional dependency/device permission or external storage. Schema/origin/IDs/counts/text lengths and channel bounds are validated. Saved plaintext is capped at 512 KiB; decrypted state stays in memory. No hardware-backed-key guarantee is made: actual KeyStore support and reopen behavior require the Xiaomi test. + +Writes serialize through a process-wide store, with generation tickets invalidated before Disconnect/new-connection cleanup to prevent an older in-flight save rewriting forgotten state. Disconnect removes the file and key, clears visible choices and attempts normal provider logout. Clear failures produce a Settings/app-data instruction instead of claiming success. Connected UI shows Setup saved on this device after a successful write. Saves are briefly debounced; wait for confirmation before force-stopping or cutting power. + +On a fresh launch the app decrypts the saved record and validates its token with GET /Users/{savedId} using the same saved generated DeviceId. It checks the returned user identity before exposing/restoring private setup. No password authentication, full scan, fresh sample import or schedule rebuild occurs during successful restore. Restoring saved source runtimes/lineup order preserves the existing UTC schedule. Source availability/runtime is still rechecked through normal tuning. Network errors retain the saved record and offer Retry saved connection. 401/403 removes the active saved token and asks for sign-in; matching-account sign-in can restore choices. Different-account sign-in cannot apply prior choices. Corrupt ciphertext/unavailable key fails closed, never reads it as plaintext, and requests sign-in. + +Home/background stops playback and sends a normal stop report while retaining login/setup. The player progress loop checks foreground state. Owner disposal detaches local session state without revoking the saved provider token. This is remembered-token login, not a promise that provider tokens never expire. A token expiring during a live session still produces the existing sign-in-again error; return to Connect Emby to authenticate. Refreshing catalogue changes is not added in this increment. + +Validation: final cached/offline assembleDebug, testDebugUnitTest and lintDebug passed; 79 tests, zero failures/errors. New fake-fixture tests cover encryption round trip and preserved timeline, distinct nonces, tampering/wrong keys, schema/origin/identity/approval bounds, oversized records, token removal with retained choices, validation-only resume with restored episode allowlisting, expired login with no password/logout request, cross-account rejection and stop-without-logout detach. Signature verified. Reviewed at-rest handling, fixed-origin/user binding, generation/forget races, background playback and request limits. No actual credentials/private catalogue/video or device app data/logs were read by tools. Platform Keystore/AtomicFile operations and TV lifecycle/UI are not instrumented tests; actual restoration, Disconnect and process-restart need the hardware test after installation. No VPS/firewall/service changes. + +Primary references: +https://developer.android.com/privacy-and-security/keystore +https://dev.emby.media/reference/RestAPI/UserService/getUsersById.html diff --git a/VERIFICATION-0.15.0.md b/VERIFICATION-0.15.0.md new file mode 100644 index 0000000..cdb94dc --- /dev/null +++ b/VERIFICATION-0.15.0.md @@ -0,0 +1,15 @@ +# Orbit TV 0.15.0 — Orbit After Dark 102 + +Approved scope: a small explicit film-selection flow and playable channel 102 using the existing engine, with the approved silver/magenta branding and lit-window background. The user's later motion request is delivered as a separate optional-ident proof, not injected into playback. + +Flow: restored connection (or sign in) → Menu → Connect Emby → 102 Orbit After Dark — choose films → Check Horror / Check Thriller / Check Science Fiction → select two or three films → Create / rebuild 102 → Watch channel. One GET /Items request per explicit category action, Movie only, Genres filter, StartIndex=0, Limit=20, Fields=Genres,MediaStreams, images/userdata disabled. At most 20 returned records parsed; requires returned genre evidence, valid Movie IDs, bounded strings/genre lists. Genre labels differing from configured names may return no confirmed matches. No returned matches is not proof the whole library lacks suitable films. Candidate accumulation deduplicates IDs and caps at 60. Initial selection is empty; no automatically approved replacements. This is a sample, not a full importer or refresh engine. Horror/Thriller/Science Fiction are initial candidate pools for broader late-night/cult programming; no explicit-content or age-control feature is claimed. + +Two or three approved film IDs must belong to the checked cache. Each gets PlaybackInfo with IsPlayback=false, no live opening/transcoding. Every selected film needs an eligible direct container/source/runtime; errors identify the film and stop the build without publishing a partial replacement. Source IDs and real runtimes are locked. Existing UTC join/rollover, Now/Next, transition check, Retry and green tuning number are reused. Existing 102 lineup remains until a new build succeeds. Normal watching reports to Emby as before. + +Saved state adds optional afterDark/darkMovies/approvedDark fields under the existing encrypted schema/key/AAD. Missing fields default empty for 0.14 records. Selected channel has a new optional selectedChannel field; legacy selected stays 101 when new selection is 102, preserving readable legacy navigation fields. Tests prove loading pre-102 records and preserving 101/103/102 timelines after a round trip. All three built channels appear as guide switch choices. Login/token lifecycle unchanged. Downgrading to older APKs can drop unrecognised 102 fields on a subsequent save; downgrade is not a 102-preserving rollback strategy. + +Approved static compact logo and lit-window WebP background are compiled resources. A small ChannelBrands registry maps the existing 102 number to the orbit-after-dark asset identity. After Dark review and guide use the background and logo; network navy/yellow focus remains. Other channels retain their existing presentation. No persistent bottom-left bug, ident playback or new settings are added; those remain optional integration increments. Original multi-channel time grid remains a future step. + +Validation: final offline assembleDebug, testDebugUnitTest and lintDebug passed; 87 unit tests, zero failures/errors. Eight new tests cover genre query/token scope, returned genre evidence, ID/type rejection, server ignoring limits, cache caps/deduplication, explicit approval bounds, metadata-only source probes/runtime/source locking, rate-limit stop, legacy records and all three saved timelines/guide ordering. APK signature verified. No private account/catalogue/media, device app data or logs accessed by tools. Provider genre behavior, remote layout/focus, 102 playback/rollover and persistent three-channel navigation require the Xiaomi test after installation. No dependencies, device permissions, VPS/firewall/services or full-library queries added. + +Motion proof 03: 4.2-second/720p/25fps silent H.264. Twelve separately animated windows, editable vector Trim Paths trail, then logo reveal. Fully decoded and inspected via contact sheet and final native frame; collected EffectCraft project includes relative footage and source assets. It is not an APK asset and cannot delay channel playback. diff --git a/VERIFICATION-0.2.0.md b/VERIFICATION-0.2.0.md new file mode 100644 index 0000000..8a9e03a --- /dev/null +++ b/VERIFICATION-0.2.0.md @@ -0,0 +1,33 @@ +# Orbit TV 0.2.0 — review notes + +## Changes + +Top navigation: 1 Menu / 2 TV Guide / 3 Box Office. Menu includes Services. +OrbOffice has an original perforated admission-ticket design and two selectable fictional events. +Barlow and Barlow Condensed are bundled for new sections; OFL notices are included in the APK and source. +Proper logo work is deferred. Paul wants it centred with safe padding in the TV's app tile. + +## Validation + +- Final Android debug build, unit tests and lint: passed. +- Four Kotlin scheduler tests: passed; five backend scheduler tests: passed. +- Android lint: zero errors, nine warnings (seven available-version notices, orientation and backup advisories). +- APK signature verified and signing certificate matches the installed 0.1.0 build. +- Fullscreen video and bottom programme-bar source compared with the original source ZIP: unchanged. +- Fonts inspected with fc-scan; FigCraft font report confirms Barlow and Barlow Condensed available with the project-local font loader. +- Design previews regenerated and visually inspected. VectorCraft conversion reported no warnings. +- New code reviewed for focus return, navigation/back paths, local asset loading and playback preservation. + +## Hardware evidence and limits + +Paul confirmed 0.1.0 loads on his Xiaomi TV Box S 3rd Gen: remote navigation, channel selection, +fullscreen playback and the bottom programme bar work. The 0.2.0 APK has not been installed on the box yet. +Preview PNGs are design mockups, not captures of 0.2.0 running on the TV. +No Emby integration or event playback is implemented. Tickets represent fictional events. +No device, VPS, service or firewall changes were made in this increment. + +## Next TV check + +After approval, update the existing app with the 0.2.0 APK. Check all three tabs, Menu → Services, +Back navigation, switching event ticket previews, and returning to the guide. Recheck fullscreen playback. +Use design/open-design.sh to open editable FigCraft files with the included fonts available. diff --git a/VERIFICATION-0.3.0.md b/VERIFICATION-0.3.0.md new file mode 100644 index 0000000..716cd12 --- /dev/null +++ b/VERIFICATION-0.3.0.md @@ -0,0 +1,42 @@ +# Orbit TV 0.3.0 — Connect Emby + +## Reviewable result + +Menu → Connect Emby. On-TV username and always-hidden password fields, explicit provider address, +and Check 20 items. One sign-in, one metadata page, then temporary-session logout. +Sample contains titles, types, runtimes and any returned container/codec details. +No full import or Emby video playback. The existing demo guide and fullscreen bar remain. + +## Validation + +- Debug APK build, all 19 Android unit tests and Android lint passed. +- 15 Emby protocol/boundary tests and four scheduler tests; no failures or skipped tests. +- Tests use scripted fake replies and fake credentials. No live provider login was attempted. +- Intentional removal of the 20-item cap failed its regression test; source was restored, + then the complete build/tests/lint passed again. +- Tested: one-page limit even if ignored by server; password preservation; scoped token/header use; + incorrect credentials; denial of library access; malformed JSON/identity/token; rate limit and redirect + responses; logout after errors; failed logout; response-size bound; UTF-8; bounded provider text. +- APK signature verified; certificate matches the installed 0.2.0 build. +- Fullscreen playback/programme-bar source matches the TV-tested previous revision. +- Security review: fixed HTTPS origin, default certificate checks, no redirects, bounded reads and + I/O timeouts, no retries, no persistent credentials/tokens/sample, no request/response logging, + secure password field, FLAG_SECURE while connection screen is displayed, lifecycle clearing. +- Lint: zero errors; ten warnings (eight version-update notices and two existing platform advisories). +- The org.json dependency is test-only; the app uses Android's JSONObject implementation. + +## Limits and next check + +The new APK has not been installed on the box. Remote keyboard entry and real account permissions +must be tested by Paul on the Xiaomi. No password, token or authenticated library data was received +by development tools. Do not send credentials or screenshots of library results back into chat. +Only the provider's public identification endpoint was previously checked, returning version 4.9.1.23. + +After approval to install: Menu → Connect Emby → enter credentials on TV → Check 20 items. +Report only success/count, or the fixed error message. Demo channels do not change. +This version intentionally requires signing in again for another check; persistent connection and +large-library indexing are separate increments. A later initial-setup flow and named/icon profiles, +Kids restrictions and a four-digit adult PIN are recorded in the roadmap, not implemented here. + +No device update, VPS, service or firewall changes were made during this build increment. +See docs/emby-connection-check.md for the request contract and retention details. diff --git a/VERIFICATION-0.4.0.md b/VERIFICATION-0.4.0.md new file mode 100644 index 0000000..2ddc434 --- /dev/null +++ b/VERIFICATION-0.4.0.md @@ -0,0 +1,64 @@ +# Orbit TV 0.4.0 — small-sample playback test + +Prepared 1 November 2026, Europe/London. + +## Result + +The current 20-item sample becomes selectable for on-demand fullscreen playback. The temporary +login stays in memory during testing and attempts logout when leaving/backgrounding the screen. +The player provides pause/resume, ten-second seeks, audio settings and available subtitle tracks. +No full-library import, scheduled real channels, stored login or automatic video transcoding is added. +The established demo guide and its fullscreen programme bar remain independent and unchanged. + +## Evidence + +- Android debug build and lint: passed, zero lint errors. +- 31 Android unit tests: 15 authentication/metadata, 12 playback/session/media-address, four scheduler. +- Coverage includes sample membership, direct-source negotiation, refusal of transcoding/live-opening + sources, source-ID validation, origin-scoped tokens, API-key removal from provider media URLs, + HTTPS/URL validation, subtitle URL validation, byte-range start validation, local-address rejection, + normal playback reporting, logout, stale-report positions and invalidation of late login results. +- An intentional change forwarding credentials to every media host failed its regression test. + The safe implementation was restored and all checks rerun successfully. +- Existing Emby metadata tests remain fake-transport checks; new playback tests also use only + fake tokens and URLs. No authenticated provider/media access was performed by development tools. +- Media3's custom data-source/controller APIs have explicit UnstableApi opt-ins. +- The background lifecycle handler stops the player directly before asynchronous session cleanup. +- Source review checked main-thread player access, preserving sample list/focus during loading, + safe error messages, redirect/header handling, request bounds and cleanup ownership. +- The APK signing certificate matches the installed previous version, allowing a normal update. +- Lint warnings are dependency-update/platform advisories and two optional KTX suggestions. + +## Hardware limits + +Paul confirmed 0.3.0 received 20 records from his provider on the Xiaomi TV Box S 3rd Gen. +Real video, audio, remote controller navigation, seeking and subtitles in 0.4.0 remain unverified +until the approved APK is installed and Paul selects a sample title on the TV. +Direct-stream container support does not guarantee every codec/profile decodes on this box. +External subtitle support is initially SRT/WebVTT only when the provider supplies a delivery URL. +No HLS/transcoding fallback, live-source opening or special CDN request headers are implemented. +HTTPS redirects are supported without forwarding the Emby token to another origin. DNS results +are checked for private addresses, but Java's second DNS resolution is not pinned against rebinding. +Playback reports may update normal provider watch history, as regular viewing does. + +## Logo direction + +An original OrbOffice drive-in ticket concept is supplied as SVG, FigCraft and VectorCraft artwork, +with a PNG proof. It uses a ringed cinema-screen emblem, gold/charcoal, original one-word lettering +and a detachable stub. It is separate from the installed application's interface. +The supplied historic logo was a reference, not traced or redistributed with this project. +OrbOffice name availability and trade-mark clearance have not been established. + +## Linked skill + +The exact MCP Market page could not be read. An official Android CLI Specialist reference was +found and assessed. It is relevant to SDK/device diagnostics and repeatable UI journey testing. +The android CLI is absent from PATH. No new skill/CLI was installed; existing Gradle/ADB remains in use. +https://developer.android.com/agents/skills/devtools/android-cli/skill + +## Next step + +Ask Paul before updating the TV box. After installation: Menu → Connect Emby → sign in on TV → +Check 20 items → select a title. Check picture/sound, pause/resume, forward/backward seeking, +audio/subtitles when available, Back to the same sample, then a second title. +Report only pass/fail and fixed error messages; do not collect credentials or media URLs. diff --git a/VERIFICATION-0.5.0.md b/VERIFICATION-0.5.0.md new file mode 100644 index 0000000..a10f076 --- /dev/null +++ b/VERIFICATION-0.5.0.md @@ -0,0 +1,40 @@ +# Orbit TV 0.5.0 — classic bottom programme strip + +## Changes + +Paul confirmed 0.4.0 played provider media on the Xiaomi. He requested a classic bottom +programme strip, removal of the persistent top banner, an icon legend without coloured +remote-key boxes, and removal of the CRT logo's white outline. + +The sample player now shows a pale channel/time header, blue NOW/PAUSED and INFO rows, +and a plain Channel ▲▼ / back-to-guide icon / CC legend. It is positioned at the bottom, +hides after five seconds of active playback and is revealed by OK. Paused/buffering states +keep it visible. The old permanent top banner and stock controller are removed. + +The legend is visual only in this pass, as Paul requested. It does not switch channels, +open the guide or change subtitles. Physical Back still returns to the sample. OK toggles +play/pause when the strip is already visible; left/right seek ten seconds. The standard +subtitle/audio selector from 0.4.0 is not shown in this visual revision. + +The separate logo artwork retains the dark CRT, curved gold screen and white Office +lettering but removes the cream/white outer cabinet border and pale feet. + +## Validation + +Final debug APK build, 31 existing Android tests and lint passed. Zero lint errors. +APK signature verified and certificate matches the installed previous revision. +Code review covered remote-key event handling, five-second timeout reset, playback-state +visibility and retaining the existing error/background/session-cleanup paths. +FigCraft OSD mockup and logo renders were visually inspected; VectorCraft conversion +reported no warnings. No redundant implementation-mirroring tests were added for this UI pass. + +## Limits and TV check + +The new layout and timer need a hardware check after approval to install 0.5.0. +The preview PNG is a design mockup using an original abstract background, not a capture +of provider video. No credentials, library titles, media URLs or provider images were read +by development tools. No real provider login was performed during this increment. +Check: select a sample title, wait five seconds, press OK to reveal the strip, pause/resume, +try left/right seeking and Back to sample. Confirm readability and absence of the old top banner. +The existing fictional guide remains unchanged. No full import or new channel engine is added. +No TV installation, VPS, firewall or service change was performed during this build increment. diff --git a/VERIFICATION-0.6.0.md b/VERIFICATION-0.6.0.md new file mode 100644 index 0000000..afad84e --- /dev/null +++ b/VERIFICATION-0.6.0.md @@ -0,0 +1,62 @@ +# Orbit TV 0.6.0 — one real scheduled sample channel + +Prepared 1 November 2026, Europe/London. + +## Result + +Menu → Connect Emby → Check 20 items → Create sample channel. +Builds 101 Orbit One from up to three distinct direct-stream-eligible titles, after at most +five media-source metadata probes within the existing 20-item sample. At least two are required. +The new sample guide displays real Now/Next and upcoming start/end times. Watch channel joins +the current programme in progress and automatically follows subsequent wall-clock slots. +Back returns to that guide. The main three-channel fictional guide remains separate. + +Actual source runtimes retain millisecond precision, and the selected source ID is locked for +tuning. The repeating UTC timeline is independent of launching or watching the app. The same +lineup and durations recreate the same schedule; no channel, token or password is persisted. +Scheduled mode follows the clock, with pause/seeking reserved for the existing on-demand mode. +The previously accepted auto-hiding programme strip is preserved and gains genuine Now/Next. + +Check transition temporarily joins near a boundary, using real durations and the same rollover +path. It is labelled Transition check and returns to the ordinary clock when closed. The guide +notes that joining near the end can affect normal provider viewing history. + +## Validation + +- Final Android debug build, all 47 unit tests and lint passed; zero lint errors. +- 16 auth/metadata tests, 15 playback/source tests, 12 channel/timeline tests, four demo-schedule tests. +- Tested precise source/catalogue runtimes, exact boundaries, lineup repetition, UTC continuity + across midnight/DST dates, negative epochs, deterministic recreation, immutable snapshots, + duration/count validation, transition checking, a three-title/five-probe limit, early stop on + expired login/rate limit, selected-source locking and null playback identity handling. +- An intentionally incorrect inclusive end boundary failed its regression test. The correct + strict boundary was restored, then the complete build/tests/lint passed again. +- Review checked wall-clock effect keys, old-plan suppression at rollover, cancellation, + serialization of slow metadata preparation, post-buffer join adjustment, real guide focus, + source-runtime drift handling, Back navigation and the existing background/session cleanup. +- The debug signing certificate matches installed 0.5.0, allowing a standard update. +- No new runtime dependency, device permission, server administration or full scan was added. + +## Evidence limits + +Paul confirmed 0.4.0 played provider media and 0.5.0's programme strip hides correctly. +Real 0.6.0 channel tuning and automatic rollover remain unverified until TV installation. +All new tests use fictional items, fake credentials and scripted API responses; development +tools did not sign in, read private library metadata, retrieve video or capture provider images. +Metadata eligibility is not a guarantee every codec/profile decodes on the Xiaomi. +Buffering can occur between titles; this is not a gapless server broadcast. Current access is +session-scoped. A changed provider sample/runtime can change the rebuilt lineup. +A source runtime change beyond two seconds triggers a rebuild message instead of timeline drift. +The detailed request/lifecycle limits remain in docs/sample-scheduled-channel.md. + +## TV acceptance check after approval + +1. Sign in on the TV and load the existing sample. +2. Create sample channel, then Watch channel; check join-in-progress and the true Next title/time. +3. Back should return to the real sample guide without another login. +4. Check transition should join near an end and automatically move to the next programme. +5. Close the test and confirm the guide returns to the ordinary wall clock. +6. Back to sample should retain on-demand playback; leaving the connection flow ends the session. + +Report pass/fail and any fixed error text only. Keep credentials, private titles and URLs on the TV. +No device update was performed during this build increment; ask Paul before installation. diff --git a/VERIFICATION-0.7.0.md b/VERIFICATION-0.7.0.md new file mode 100644 index 0000000..b67c51d --- /dev/null +++ b/VERIFICATION-0.7.0.md @@ -0,0 +1,9 @@ +# Orbit TV 0.7.0 — main guide integration + +Orbit One now appears under the main 2 TV Guide tab after Menu → Connect Emby → Check 20 items → Create sample channel. The connected single-channel guide replaces the fictional demo guide for that temporary session. Watch channel joins in progress; Back returns to this main guide. Menu and Box Office remain accessible without signing in again. + +The connection component remains composed across main navigation. A Disconnect button clears the temporary connection and channel. Backgrounding the app or disposing its owner still cancels pending work, clears credentials and attempts logout. Password and username fields clear when leaving connection setup; unfinished operations are cancelled. Returning to the guide does not automatically restart a previously closed channel player. + +Private connection and connected catalogue screens retain screenshot protection. Credentials, tokens and catalogue stay in memory. No persistence, dependency changes, full-library imports, VPS, firewall or service changes. Green 101 in the top-right is recorded as the direction for a later tuning animation; it is not included in this increment. + +Validation: final offline Gradle assembleDebug, testDebugUnitTest and lintDebug passed. All 47 unit tests passed (16 client, 15 playback, 12 scheduled-channel, 4 demo schedule). APK signature verification passed. Navigation/session lifecycle changes were reviewed in source; there is no on-device UI automation or new UI-test coverage. Hardware navigation, background sign-out and playback return need Paul's remote test after installation. No private account/media was accessed by development tools. diff --git a/VERIFICATION-0.8.0.md b/VERIFICATION-0.8.0.md new file mode 100644 index 0000000..989914d --- /dev/null +++ b/VERIFICATION-0.8.0.md @@ -0,0 +1,7 @@ +# Orbit TV 0.8.0 — Retry and classic tuning number + +The scheduled channel joining-error screen now offers Retry, focused for the remote. Each click runs a fresh preparation against the current wall-clock programme using the same temporary session and locked media source. The existing mutex serializes preparation. Retry is manual, disappears while preparation runs and does not reauthenticate or create an automatic retry loop. Back still returns to the main TV Guide. This does not establish or fix the cause of the previously reported intermittent provider connection failure. + +A green monospace channel number appears at the top-right during preparation and for two seconds after player readiness. Current channel is 101. No artificial loading delay, new dependency or EffectCraft asset is needed for this native text overlay. No separate retry is added to full-screen decoder/media errors in this increment. + +Validation: offline assembleDebug, testDebugUnitTest and lintDebug passed. All 48 unit tests passed (16 client, 16 playback, 12 channel, 4 demo schedule). Added a fake-transport check that one failed preparation can be explicitly retried using the same login and source without reauthentication; this is protocol coverage, not automated UI coverage. APK signature verification passed. Green number positioning/timing and Retry focus/click still require the Xiaomi remote test. No private account, catalogue, video or device logs were read. No VPS/firewall/services/dependency changes. APK not installed as part of preparation. diff --git a/VERIFICATION-0.9.0.md b/VERIFICATION-0.9.0.md new file mode 100644 index 0000000..5bba40d --- /dev/null +++ b/VERIFICATION-0.9.0.md @@ -0,0 +1,11 @@ +# Orbit TV 0.9.0 — channel 103 series check + +Approved direction: 101 Orbit One (mixed entertainment), 102 Orbit After Dark (horror/thriller/cult), 103 Toonami (working name, classic action animation). Only 101 has scheduled playback today. This increment adds candidate discovery and temporary approval for 103, not a playable 103 or 102. + +After sign-in, Menu → Connect Emby → 103 Toonami — check five series. Uses the existing temporary session to make five serial authenticated GET /Items queries with UserId, Recursive, IncludeItemTypes=Series, SearchTerm, StartIndex=0, Limit=10, images/userdata disabled. Terms: Dragon Ball Z, Batman Beyond, Superman, Powerpuff Girls, ThunderCats. At most ten records processed per response even if the provider ignores the limit. Valid series IDs only; titles/rating bounded, year validated, IDs deduplicated within each search. Authentication/rate-limit/network failures stop the check. No automatic retry, no episode queries, no playback, no account edits. Returned names are possible matches, never automatically accepted; lack of search results is not proof of absence from the entire library. + +The review lists titles, returned years and ratings for choosing versions. Approve toggles an in-memory set of series IDs. Navigation retains it during this session; disconnect/background clears it. It is not persisted or scheduled. Episode availability, ordering, duration and playback eligibility are future checks. Existing 101, classic green tuning number and manual joining Retry remain. + +Validation: offline assembleDebug, testDebugUnitTest, lintDebug successful; 53 tests passed with zero failures/errors. Five new fake-transport tests cover the five-query bound, encoding/header credentials, provider ignoring limits, invalid/non-series/duplicate results, empty results, and immediate stop on 401/429. Signature verification passed. Source reviewed for scope, request bounds and secret handling. No real account/catalogue/media accessed by development tools. Actual provider series-search compatibility and remote focus/layout require Paul's Xiaomi test after installation. No new dependency, device permission, VPS/firewall/service or persisted private data. + +Official API reference checked: https://dev.emby.media/reference/RestAPI/ItemsService/getItems.html (SearchTerm, IncludeItemTypes, Limit, UserId, EnableImages, EnableUserData). diff --git a/VERIFICATION.md b/VERIFICATION.md new file mode 100644 index 0000000..256d417 --- /dev/null +++ b/VERIFICATION.md @@ -0,0 +1,38 @@ +# Orbit TV prototype verification — 31 October 2026 + +Project: /home/pauljd/Documents/Codex/orbit-tv +Target for manual testing: Xiaomi TV Box S 3rd Gen (not connected). + +- Final Android debug APK build: passed. +- Android schedule tests: 4 passed, 0 failed, 0 skipped. +- TypeScript compilation and scheduler tests: 5 passed, 0 failed. +- HTTP smoke test: health and guide 200; invalid count 400; missing route 404; POST 405. Temporary process stopped. +- Boundary mutation: intentionally rounding slots up made the backend tests fail; original logic restored and tests passed. +- APK signing verified with apksigner (debug certificate, APK signature v2). +- Media probe: original silent local test signal, 1800 seconds. +- FigCraft mockup: rendered and visually inspected; editable native file has 63 nodes. +- VectorCraft wordmark conversion: no import/export warnings. +- Final code review: corrected stale programme detail on half-hour rollover, paused playback outside guide, + added playback error/retry handling and actual player elapsed-time overlay, moved banner to drawable-nodpi. + +## Limits + +APK has not been launched on hardware or an emulator. Remote focus, playback decoder behaviour, +preview/fullscreen switching and resume timing require Xiaomi acceptance testing in README.md. +The design PNG is a mockup, not a screenshot of the running Android app. +No Emby performance or compatibility claim has been tested. No VPS or media library was accessed. +No project commit, deployment, TV pairing, firewall change or persistent service was created. + +## Android lint + +No errors. Remaining warnings: + +- AndroidGradlePluginVersion: A newer version of Gradle than 9.3.1 is available: 9.8.2 +- GradleDependency: A newer version of androidx.compose:compose-bom than 2025.08.01 is available: 2026.09.00 +- GradleDependency: A newer version of androidx.activity:activity-compose than 1.10.1 is available: 1.13.0 +- GradleDependency: A newer version of androidx.lifecycle:lifecycle-runtime-compose than 2.9.2 is available: 2.11.0 +- GradleDependency: A newer version of androidx.tv:tv-material than 1.0.0 is available: 1.1.0 +- GradleDependency: A newer version of androidx.media3:media3-exoplayer than 1.8.0 is available: 1.11.1 +- GradleDependency: A newer version of androidx.media3:media3-ui than 1.8.0 is available: 1.11.1 +- DiscouragedApi: Fixed screen orientations will be ignored in most cases, starting from Android 16. Android is moving toward a model where apps are expected to adapt to various orientations, display sizes, and aspect ratios. +- DataExtractionRules: The attribute `android:allowBackup` is deprecated from Android 12 and higher and may be removed in future versions. Consider adding the attribute `android:dataExtractionRules` specifying an `@xml` resource which configures cloud backups and device transfers on Android 12 and higher. diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 0000000..fdc1a20 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.plugin.compose") +} +android { + namespace = "tv.orbit.classic" + compileSdk = 36 + defaultConfig { + applicationId = "tv.orbit.classic" + minSdk = 26 + targetSdk = 36 + versionCode = 16 + versionName = "0.16.0-tuning-screen" + } + buildFeatures { compose = true } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17; targetCompatibility = JavaVersion.VERSION_17 } +} +dependencies { + implementation(platform("androidx.compose:compose-bom:2025.08.01")) + implementation("androidx.activity:activity-compose:1.10.1") + implementation("androidx.lifecycle:lifecycle-runtime-compose:2.9.2") + implementation("androidx.compose.foundation:foundation") + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.ui:ui-tooling-preview") + implementation("androidx.tv:tv-material:1.0.0") + implementation("androidx.media3:media3-exoplayer:1.8.0") + implementation("androidx.media3:media3-ui:1.8.0") + testImplementation("junit:junit:4.13.2") + testImplementation("org.json:json:20250107") +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..581f284 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/android/app/src/main/assets/font-licenses/barlow-OFL.txt b/android/app/src/main/assets/font-licenses/barlow-OFL.txt new file mode 100644 index 0000000..2f22ba6 --- /dev/null +++ b/android/app/src/main/assets/font-licenses/barlow-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2017 The Barlow Project Authors (https://github.com/jpt/barlow) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/android/app/src/main/assets/font-licenses/barlow-condensed-OFL.txt b/android/app/src/main/assets/font-licenses/barlow-condensed-OFL.txt new file mode 100644 index 0000000..2f22ba6 --- /dev/null +++ b/android/app/src/main/assets/font-licenses/barlow-condensed-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2017 The Barlow Project Authors (https://github.com/jpt/barlow) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/android/app/src/main/assets/orbit-demo.mp4 b/android/app/src/main/assets/orbit-demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1eaead7151d566ab9380858912f2ba20aebd5dec GIT binary patch literal 6554659 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