Compare commits

...

480 commits

Author SHA1 Message Date
tapframe
4daab74e27 added contributors page 2025-10-24 02:14:50 +05:30
tapframe
a7fbd567fd Added collections ection 2025-10-23 17:31:49 +05:30
tapframe
f90752bdb7 Streamscreen new changes update 2025-10-23 14:51:41 +05:30
tapframe
c5590639b1 revert 2025-10-23 13:44:08 +05:30
tapframe
098ab73ba1 anim changes ios ksplayer 2025-10-23 13:26:43 +05:30
tapframe
060b0b927b episode poster fix 2025-10-23 13:26:31 +05:30
tapframe
786e06b27f episodes not fetching backdrop fix tablet layout 2025-10-23 01:57:04 +05:30
tapframe
ef1c34a9c0 improved animations 2025-10-23 00:38:45 +05:30
tapframe
b97481f2d9 refactor streamscreen 2025-10-23 00:34:08 +05:30
tapframe
8d74b7e7ce changes 2025-10-22 23:55:45 +05:30
tapframe
635c97b1ad more improvements 2025-10-22 23:46:50 +05:30
tapframe
673c96c917 new streamscreen layout for tabs init 2025-10-22 23:36:37 +05:30
tapframe
15fc49d84d cleanup repo 2025-10-22 22:24:27 +05:30
tapframe
54cfd194f1 added yml for sponsoring 2025-10-22 22:22:18 +05:30
tapframe
be561c6d9f adjusted android bottom tab height 2025-10-22 17:25:12 +05:30
tapframe
dc8c27dfc4 trailer service improvements 2025-10-22 17:17:20 +05:30
tapframe
ce7f92b540 Custom TTL for Stream cache 2025-10-21 23:34:35 +05:30
tapframe
f0271cd395 orientation fix 2025-10-21 23:14:51 +05:30
tapframe
2a4c076854 fixed subtitle not fetching on cahced strream link 2025-10-21 22:17:42 +05:30
tapframe
c852c56231 orientation optimization 2025-10-21 17:49:49 +05:30
tapframe
614ffc12c0 1.2.6 21 2025-10-21 16:55:53 +05:30
tapframe
d9b2545cdd streamscreen UI fix 2025-10-21 16:30:39 +05:30
tapframe
1ae6b4f108 continue watching changes 2025-10-21 16:09:35 +05:30
tapframe
373efa0564 Implemented caching stream links for faster playback. 2025-10-21 14:53:01 +05:30
tapframe
6c464abdd4 cleanup 2025-10-21 14:18:24 +05:30
tapframe
5d5d77ae1b sizing fix for playercontrols. 2025-10-21 14:12:20 +05:30
tapframe
b2cfc19e96
Merge pull request #202 from qarqun/main
Responsive Video Player Controls with animations
2025-10-21 13:58:23 +05:30
tapframe
e40e8bb7c5
Merge branch 'main' into main 2025-10-21 13:58:00 +05:30
tapframe
a3158be2bd icon change, and cinemeta removal fix 2025-10-21 13:29:17 +05:30
Qarqun
e305dee777 feat: Add responsive video player controls with animations
- Implement responsive sizing for all controls based on screen width (phone/tablet support)
- Add smooth crossfade animation for play/pause button transitions
- Add arc sweep and slide animations for seek buttons (+10/-10s)
- Add touch feedback with semi-transparent circle flash on tap
2025-10-20 19:13:46 +08:00
tapframe
415efd4e03 asepct ratio fix 2025-10-20 14:45:48 +05:30
tapframe
f027788266 ksplayer subtitle init 2025-10-20 14:08:23 +05:30
qarqun
23acda3167
Merge branch 'tapframe:main' into main 2025-10-20 15:35:59 +08:00
tapframe
a8b4dc5a01 airplay ios 2025-10-20 02:26:42 +05:30
tapframe
fd4efe6c7f catalogscreen layout fix 2025-10-19 20:42:41 +05:30
tapframe
68340eac9e update morelikethis sizing 2025-10-19 20:34:37 +05:30
tapframe
175d47f71f adaptive sizing for playercontrols,seriescontent,and commentsection 2025-10-19 20:30:24 +05:30
tapframe
0b764412b2 homescreen imrpovements for tablet screens 2025-10-19 20:08:08 +05:30
tapframe
f7c0c670d7 metadatascreen tablet layout overhaul 2025-10-19 20:08:08 +05:30
tapframe
18bd6ff3ca macos fullscreen player issue fix 2025-10-19 20:08:08 +05:30
tapframe
ac5326ba3f hero Ui changes 2025-10-19 20:08:08 +05:30
tapframe
c5af56537b
Merge pull request #197 from aazz180/main 2025-10-19 18:03:59 +05:30
aazz180
17cdd503e9
Fix the live container 2025-10-19 13:26:55 +01:00
tapframe
688950d0c2 changes 2025-10-19 15:41:02 +05:30
tapframe
eb3082cddb ui updates trakt 2025-10-19 15:37:30 +05:30
tapframe
32bec08f30 ui changes 2025-10-19 15:19:08 +05:30
tapframe
a7f850d577 trakt wathclist integration test 2025-10-19 14:20:38 +05:30
tapframe
08f356cfa4 trakt scrobble optimization 2025-10-19 13:59:40 +05:30
qarqun
6e975ffe26
Merge branch 'tapframe:main' into main 2025-10-19 15:42:24 +08:00
tapframe
64981dd110 clean 2025-10-19 12:51:07 +05:30
tapframe
b5156bcc69 cleanup 2025-10-19 12:50:14 +05:30
tapframe
9ab99a1225 ios homescreen layout shift fix 2025-10-19 12:49:10 +05:30
tapframe
d5edec025c Merge branch 'main' of https://github.com/tapframe/NuvioStreaming 2025-10-19 12:20:56 +05:30
tapframe
ef43463b99 calender screen fix 2025-10-19 12:19:28 +05:30
qarqun
ca2e95e6f4
Merge branch 'tapframe:main' into main 2025-10-19 12:04:34 +08:00
tapframe
559c50fa87
Merge pull request #193 from aazz180/main 2025-10-19 08:54:45 +05:30
aazz180
2ca0a05636
Add Infuse Livecontainer player option 2025-10-18 21:37:11 +01:00
aazz180
363de47313
Update StreamsScreen.tsx 2025-10-18 21:36:25 +01:00
aazz180
bdb2803371
Update StreamsScreen.tsx 2025-10-18 21:35:59 +01:00
aazz180
6eae438300
Update useSettings.ts 2025-10-18 21:35:28 +01:00
tapframe
707ceb711a layout anim 2025-10-18 23:34:43 +05:30
tapframe
024646579e animate catalogsec 2025-10-18 23:32:57 +05:30
Qarqun
f895428e3d Merge branch 'main' of https://github.com/qarqun/NuvioStreaming 2025-10-19 01:21:48 +08:00
Qarqun
698456c205 refactor(player): enhance video controls with modern streaming style
- Moved inline styles to playerStyles.ts for better maintainability
- Redesigned player controls for better user experience:
  - Enhanced skip buttons with rotate animations and semi-transparent backgrounds
  - Enlarged center play/pause button with improved visibility
  - Optimized touch targets and spacing for better interaction
  - Standardized button dimensions and layout

Files changed:
- src/components/player/controls/PlayerControls.tsx
- src/components/player/utils/playerStyles.ts
2025-10-19 01:11:08 +08:00
tapframe
43cf907a2e icon update 2025-10-18 20:53:42 +05:30
tapframe
0a04ba5743 cache changes 2025-10-18 14:58:22 +05:30
tapframe
8b1a40d2e2 ui changes 2025-10-18 13:22:34 +05:30
tapframe
51ae0784cf flashlist update 2025-10-18 12:09:22 +05:30
tapframe
efa5d3f629 fastimage api bug fix 2025-10-18 00:41:32 +05:30
tapframe
fd5861026d floating header logo fetch fix 2025-10-17 23:41:27 +05:30
tapframe
1535ef9aac trailer improvements 2025-10-17 23:19:55 +05:30
tapframe
bb6f1f32a0 anim changes 2025-10-17 22:18:17 +05:30
tapframe
3effdee5c0 optimzed perf 2025-10-17 22:09:42 +05:30
tapframe
bf15c5fb45 ui change 2025-10-17 22:04:28 +05:30
tapframe
5c3ba9e0d8 parallax on hero 2025-10-17 21:54:02 +05:30
tapframe
ce0b39d48b hero carousal anim changes 2025-10-17 21:44:24 +05:30
tapframe
71e3498876 ui fix 2025-10-17 21:29:15 +05:30
tapframe
e8ec05bd51 rn video init for trailers 2025-10-17 20:35:48 +05:30
tapframe
2303c32940 ui changes 2025-10-17 20:32:46 +05:30
tapframe
e9d54bf0d6 trailer section init 2025-10-17 20:18:34 +05:30
tapframe
e435a68aea UI changes 2025-10-17 15:00:36 +05:30
tapframe
d55143e6fb changes 2025-10-16 12:21:05 +05:30
tapframe
e2719c373d improved vlc behaviour 2025-10-16 01:53:30 +05:30
tapframe
b1e9f9b3f8 ui fix 2025-10-15 23:43:06 +05:30
tapframe
2d512053a8 1.2.5 20 2025-10-15 23:27:59 +05:30
tapframe
6cfddb68bb ksplayer changes 2025-10-15 23:16:14 +05:30
tapframe
12d04e84d8 icon changes 2025-10-15 22:33:41 +05:30
tapframe
829e569ccd ui changes 2025-10-15 21:54:02 +05:30
tapframe
7e300e8789 changes 2025-10-15 19:56:01 +05:30
tapframe
6a6a93aec4 glassview init 2025-10-15 16:12:55 +05:30
tapframe
13cba764cc updated readme 2025-10-15 13:25:24 +05:30
tapframe
5263005e92 update readme 2025-10-15 13:23:04 +05:30
tapframe
1a12a6c10c update readme 2025-10-15 13:21:34 +05:30
tapframe
0b134f9266 update readme 2025-10-15 13:18:34 +05:30
tapframe
07233ba9ae update expo sdk to 54 2025-10-15 02:24:20 +05:30
tapframe
92aaae40f6 test 2025-10-15 01:51:57 +05:30
tapframe
faeeaf5ecf test 2025-10-14 22:34:20 +05:30
tapframe
edfbc2d937 icon updates 2025-10-14 14:27:00 +05:30
tapframe
ab8f870e73 UI changes 2025-10-14 13:50:22 +05:30
tapframe
2a5798c107 ui fix streamscreen 2025-10-14 12:16:15 +05:30
tapframe
92441110bf ui changes 2025-10-14 02:52:07 +05:30
tapframe
1a9d59e804 UI changes 2025-10-14 02:43:21 +05:30
tapframe
9e7b9c5fe4 improved downloads 2025-10-14 01:15:37 +05:30
tapframe
615172d29c changes 2025-10-14 00:51:03 +05:30
tapframe
5671323bc1 changes 2025-10-14 00:41:43 +05:30
tapframe
c0263eb3c3 changes 2025-10-14 00:20:54 +05:30
tapframe
a5a5358f7b UI changes tmdb logo 2025-10-13 16:04:25 +05:30
tapframe
2599fd85d7 UI fix 2025-10-13 14:51:04 +05:30
tapframe
84a308e5dc UI changes 2025-10-13 14:01:05 +05:30
tapframe
569d50f25b ui changes 2025-10-13 13:52:25 +05:30
tapframe
93221b9760 added backdrop to set as default hero thumbnail 2025-10-13 13:45:40 +05:30
tapframe
81a7f63782 added backdrop gallery 2025-10-13 13:36:50 +05:30
tapframe
1c7fd533c7 added more details for tvshows/movies 2025-10-13 13:23:19 +05:30
tapframe
a0d9420be2 network logic 2025-10-13 13:16:38 +05:30
tapframe
544dc8b639 import update 2025-10-13 12:28:36 +05:30
tapframe
68f02bbc80 import update 2025-10-13 12:28:24 +05:30
tapframe
1660b0a75b clear 2025-10-13 12:15:59 +05:30
tapframe
d691189973 fixed backdrop zoom in laoding overlay. 2025-10-13 12:15:26 +05:30
tapframe
03da6c9a0c push 2025-10-13 01:48:15 +05:30
tapframe
46b0ed44bd sub timing adjust 2025-10-12 12:05:22 +05:30
tapframe
362000d6df sub default changes 2025-10-12 11:21:51 +05:30
tapframe
fb8b65e61b trailerplayer stuck after finishing fix 2025-10-12 10:44:13 +05:30
tapframe
03bded3775 1.2.4 2025-10-12 03:09:30 +05:30
tapframe
f605dd3d49 changes CP 2025-10-12 03:02:27 +05:30
tapframe
303c4c909e update dependencies 2025-10-12 00:32:18 +05:30
tapframe
8178dfc215 removed aggressive cache cleaning 2025-10-12 00:27:30 +05:30
tapframe
714226b6a5 push 2025-10-12 00:09:24 +05:30
tapframe
383ac95e90 migration from expo-image to RN Fast-image 2025-10-12 00:09:07 +05:30
tapframe
67232f5a8e ratingscreen UI fix 2025-10-11 23:34:45 +05:30
tapframe
d399c8f774 dynamic type detection 2025-10-11 01:25:43 +05:30
tapframe
4e3c9c208f type:tv addon detection fix 2025-10-11 01:20:26 +05:30
tapframe
fb316d9f37 added langauge filtering for plugnins 2025-10-11 01:06:37 +05:30
tapframe
0c14d8641d some UI fix 2025-10-11 00:16:07 +05:30
tapframe
7dceb23e3d some addon improvements 2025-10-10 23:42:28 +05:30
tapframe
704c642a8f tablet padding changes 2025-10-09 16:16:26 +05:30
tapframe
230afd7414 update image caching 2025-10-09 12:40:19 +05:30
tapframe
f146f6a312 update aimodel 2025-10-09 11:12:49 +05:30
tapframe
69d9885e30 changes 2025-10-08 17:37:46 +05:30
tapframe
ea3fe35790 fixes 2025-10-08 17:24:14 +05:30
tapframe
a67c34f8f6 fixes 2025-10-08 16:57:31 +05:30
tapframe
b5b61d05f8 ui changes 2025-10-08 16:53:56 +05:30
tapframe
581e912d4c multiple addon seach func 2025-10-08 16:31:07 +05:30
tapframe
f31942efdf UI fix 2025-10-08 13:47:56 +05:30
tapframe
238f08192f some tmdb logo fetching logic changes 2025-10-08 13:39:49 +05:30
tapframe
42c236e235 removed harcorded metahub 2025-10-08 12:50:32 +05:30
tapframe
14163513e3 some changes 2025-10-08 11:53:12 +05:30
tapframe
563208689b some addon id prefix detection improvemets 2025-10-08 11:39:40 +05:30
tapframe
106461b2b2 ui fix 2025-10-06 20:34:59 +05:30
tapframe
0f5fbdf296 trakt improvements 2025-10-06 20:32:18 +05:30
tapframe
cfa6bb8689 dropped globalcache 2025-10-05 23:49:04 +05:30
tapframe
ec23dcc3cb ui changes 2025-10-05 23:45:30 +05:30
tapframe
13d72338a5 trakt scrobble imrpovements 2025-10-05 22:59:40 +05:30
tapframe
25988bdb7b UI changes - removed VIA [provider] from player loading overlay 2025-10-05 22:45:27 +05:30
tapframe
0a840b1cb0 UI changes 2025-10-05 20:33:51 +05:30
tapframe
ce292ce9d3 UI changes 2025-10-05 20:28:04 +05:30
tapframe
90ab5e6577 fixed scrollview comment modal 2025-10-05 20:23:21 +05:30
tapframe
b15b569fce ui changes 2025-10-05 20:00:22 +05:30
tapframe
15ab70b524 UI changes 2025-10-05 19:58:24 +05:30
tapframe
6db159e944 update trakt comment 2025-10-05 19:44:16 +05:30
tapframe
35d3096ce4 streamscreen fetch issue fix 2025-10-05 18:51:13 +05:30
tapframe
cc2e0308d7 trakt comment added 2025-10-05 18:40:06 +05:30
tapframe
ca52a81141 some ui changes 2025-10-05 17:44:31 +05:30
tapframe
4f1b8103d0 1.2.3 18 2025-10-05 00:20:26 +05:30
tapframe
71487fce59 trakt list sorting order fix 2025-10-04 23:58:24 +05:30
tapframe
ff1b406c48 update app v 2025-10-04 22:06:56 +05:30
tapframe
61418186b2 Merge branch 'main' of https://github.com/tapframe/NuvioStreaming 2025-10-04 22:06:28 +05:30
tapframe
9d54ec44e4
Merge pull request #164 from CrissZollo/feature-playback-speed
Feature playback speed
2025-10-04 22:06:19 +05:30
tapframe
60e27da57d local backup improvements 2025-10-04 21:27:52 +05:30
CrissZollo
5668d40bc1 Added current speed indicator 2025-10-04 17:48:05 +02:00
CrissZollo
33720c5079 Added functionality to set playbackspeed in exoPlayer 2025-10-04 17:48:05 +02:00
tapframe
88313e6d06 changes 2025-10-04 21:01:02 +05:30
tapframe
6d4edabb46
Merge pull request #163 from CrissZollo/fix-timeline-time
Timeline corrections
2025-10-04 20:29:29 +05:30
tapframe
bfacc4a1ee local backup restore feature 2025-10-04 20:29:05 +05:30
Christoffer Kronblad
f72404e22a
Merge branch 'tapframe:main' into fix-timeline-time 2025-10-04 16:22:21 +02:00
CrissZollo
340d109e72 Increasing gap for metadata by 50% 2025-10-04 16:21:37 +02:00
tapframe
87aa913f5f update pluginscreen UI 2025-10-04 17:16:16 +05:30
tapframe
5a22ab54fb improved caching behaviour 2025-10-04 17:07:30 +05:30
tapframe
90f99985a0 localscrapers caching 2025-10-04 16:51:51 +05:30
CrissZollo
6c8502d8fe removed comment 2025-10-04 12:57:53 +02:00
CrissZollo
64c2129b1d Fixes some logic to runtime calculations format 2025-10-04 12:52:02 +02:00
tapframe
7a64851256 dedup fix streamscreen 2025-10-03 17:17:17 +05:30
tapframe
c358c794ec dedup fix localscraper 2025-10-03 16:56:58 +05:30
tapframe
028c6d2823 increased streamscreen link fetching timeout 2025-10-01 19:31:59 +05:30
tapframe
96da369f62 improved url encodng logic for ios 2025-10-01 12:09:44 +05:30
tapframe
43d4db022c
Merge pull request #157 from CrissZollo/fix-timeline-time
Small fixes to timeline time
2025-10-01 01:31:10 +05:30
tapframe
221794026e some UI changes 2025-10-01 01:28:13 +05:30
tapframe
16c460cdc2 new toast library 2025-10-01 01:13:27 +05:30
CrissZollo
89416bd714 Small fixes to timeline time 2025-09-30 21:32:00 +02:00
tapframe
56654e1ced
Merge pull request #156 from CrissZollo/fix-action-menu
Action menu fixes and utilisation
2025-10-01 00:57:09 +05:30
tapframe
7de8a86869 UI changes 2025-10-01 00:52:03 +05:30
tapframe
3220e91f1c Added TMDB Multilang Support 2025-10-01 00:41:34 +05:30
CrissZollo
2da663ecd1 Hid the 'Add to playlist' for action menu. 2025-09-30 20:51:59 +02:00
tapframe
2a89695b0b Added option to enable/disable tmdb enriched metadata for addons 2025-09-30 23:55:43 +05:30
CrissZollo
7ca74b3b0d Adding packages and updates 2025-09-30 19:29:42 +02:00
tapframe
b0b309b0f1
Merge pull request #155 from tapframe/revert-153-main
Revert "Fix trakt scrobbling algorithm"
2025-09-30 22:02:42 +05:30
tapframe
5e22f3b0da
Revert "Fix trakt scrobbling algorithm" 2025-09-30 22:01:00 +05:30
tapframe
9d32c483eb
Merge pull request #153 from aayushrautela/main
Fix trakt scrobbling algorithm
2025-09-30 18:42:47 +05:30
tapframe
78130a54aa
Merge pull request #149 from CrissZollo/feature-length-time
Feature: Changed the time to display in H:MIN instead of only MIN.
2025-09-30 18:41:18 +05:30
tapframe
1f49de9b27 TV Show stream fetching fixed 2025-09-30 18:35:15 +05:30
tapframe
1f085604ee 1.2.2 17 2025-09-30 18:00:12 +05:30
tapframe
4f593459b1 1.2.1 2025-09-30 17:17:48 +05:30
tapframe
b8d3d68b65 Added ExoPlayer FFmpeg Extension for better Codec Support 2025-09-30 17:10:59 +05:30
tapframe
004ee178a4 some VLCPLayer fixes 2025-09-30 16:03:39 +05:30
tapframe
07eab50848 addon stream fetching imrpovements 2025-09-30 15:32:29 +05:30
CrissZollo
b3b6bdee4e Added long press on search items. 2025-09-29 23:06:57 +02:00
Aayush Rautela
eea003c170
Delete .github/workflows/ci.yml 2025-09-29 23:03:28 +02:00
Aayush Rautela
1ca8813e58 C/I 2025-09-29 22:59:14 +02:00
Aayush Rautela
64c9919e28 Enhance ContinueWatchingSection to fetch and handle both watched movies and shows from Trakt, improving filtering logic for displayed content. 2025-09-29 22:56:12 +02:00
CrissZollo
04f6a0b6be Fixes for adding/removing watched/library from library/home 2025-09-29 22:35:54 +02:00
CrissZollo
35ace0214a Added the longpress menu for the library menu 2025-09-29 22:10:03 +02:00
tapframe
bbbc22f30f Pluginscreen UI changes 2025-09-30 01:39:00 +05:30
tapframe
9ae0a7010c showbox support 2025-09-30 01:21:10 +05:30
CrissZollo
7fa4d20da0 Fix for mark as watched disappearing on restart 2025-09-29 21:16:05 +02:00
CrissZollo
b49514f52b Update npm packages 2025-09-29 20:36:41 +02:00
tapframe
92973c1c7b changes 2025-09-29 16:53:10 +05:30
tapframe
271126b665 downloading feature initial commit 2025-09-29 16:02:53 +05:30
tapframe
ebb7d4cec6 Stability improvement on catalogsection 2025-09-29 14:55:22 +05:30
tapframe
f86e6256a7 small UI changes 2025-09-29 14:25:51 +05:30
CrissZollo
ebf2ea50ed Feature: Changed the time to display in H:MIN instead of only MIN. Runtimes less than 60 still shows only MIN 2025-09-28 22:38:13 +02:00
tapframe
a877f5ac13 push 2025-09-28 20:56:52 +05:30
tapframe
cbd2283bf8 Audio Lang display fix 2025-09-28 20:53:00 +05:30
tapframe
fca3c46372 perf opt for homesreen 2025-09-28 12:33:58 +05:30
tapframe
b43957e6f9 some UI optimization 2025-09-28 11:44:32 +05:30
tapframe
57036aaffb app opening glitch fix 2025-09-28 10:43:35 +05:30
tapframe
999a33f82b 1.2.1 16 2025-09-26 23:06:53 +05:30
tapframe
09256f89e5 push 2025-09-26 22:52:25 +05:30
tapframe
198828af16 UI changes 2025-09-26 22:02:46 +05:30
tapframe
a7d3a8acc7 some fixes 2025-09-26 21:58:24 +05:30
tapframe
838f74caa2 added back ksplayer files 2025-09-26 21:17:47 +05:30
tapframe
88a1399c3b push 2025-09-26 00:11:19 +05:30
tapframe
8bb6657c6b 1.2.1 16 2025-09-25 23:26:22 +05:30
tapframe
a663f58502 account loading.. fix 2025-09-25 23:13:09 +05:30
tapframe
e9659ee305 auto lock player fix 2025-09-25 23:00:07 +05:30
tapframe
0b7bcb52da addon sync fix 2025-09-25 22:26:33 +05:30
tapframe
a25ede1284 trakt fix test 2025-09-25 22:17:39 +05:30
tapframe
3d9d0f297c push 2025-09-25 21:21:34 +05:30
tapframe
fcdd13a307 push 2025-09-25 21:12:45 +05:30
tapframe
d1fbb7e90b update readme 2025-09-25 21:09:35 +05:30
tapframe
97c400130c Merge branch 'main' of https://github.com/tapframe/NuvioStreaming 2025-09-23 18:38:37 +05:30
tapframe
534823843b changes 2025-09-23 18:23:46 +05:30
tapframe
1e9c8b07ac
Merge pull request #122 from CrissZollo/url
Adding addons with stremio:// URL
2025-09-23 00:31:35 +05:30
CrissZollo
1673dfaa7a Update gradlew file permissions to make it executable 2025-09-22 20:17:12 +02:00
tapframe
8453619067 some changes 2025-09-22 23:34:15 +05:30
tapframe
cdec19db1f some changes 2025-09-22 23:02:01 +05:30
tapframe
c91546dc1e build num fix 2025-09-22 21:38:48 +05:30
tapframe
4afadccb24 1.2.0 2025-09-22 21:17:48 +05:30
CrissZollo
04d22e0eca Changing stremio addon URL to correct wanted format 2025-09-22 17:28:56 +02:00
tapframe
c067b3f7fb changes 2025-09-22 20:13:22 +05:30
tapframe
e66bd2df83 VLC import fix for iOS 2025-09-22 19:03:45 +05:30
tapframe
00937f37ec Merge remote-tracking branch 'origin/main' 2025-09-22 18:47:33 +05:30
tapframe
8461d7f8b7 VLC Complete 2025-09-22 18:46:52 +05:30
tapframe
5764825c1d vlc fix 2025-09-22 18:04:02 +05:30
tapframe
37ece44b9b vlcplayer init 2025-09-22 17:14:50 +05:30
tapframe
89669f4016
Merge pull request #117 from CrissZollo/customConfirmation
New custom confirmation popup
2025-09-22 16:16:10 +05:30
tapframe
83c3bdbdde some fix 2025-09-21 22:20:14 +05:30
Christoffer Kronblad
5d2fdbdde1
Merge branch 'tapframe:main' into customConfirmation 2025-09-21 18:41:18 +02:00
tapframe
30b148d783 some changes on ios player 2025-09-21 22:02:58 +05:30
CrissZollo
46b8173b41 Updated all Alert.alert to the new custom one 2025-09-21 18:17:43 +02:00
CrissZollo
8d60bff989 Updated confirmation popup to be more custom and uses the current selected theme 2025-09-21 17:19:56 +02:00
tapframe
53b439f1fd small fix 2025-09-21 17:00:30 +05:30
tapframe
0b3a36c76f catalogscreen optimziation 2025-09-21 16:39:08 +05:30
tapframe
c1503f0614 homescreen optimization 2025-09-21 16:35:36 +05:30
tapframe
52740c26de AI fix,. changes model to - x-ai/grok-4-fast:free 2025-09-21 14:00:37 +05:30
tapframe
f961e5ac3f HeroSection Image jumping fix 2025-09-21 13:56:41 +05:30
tapframe
47dfaa26c0 kitsu bug fix 2025-09-21 13:44:55 +05:30
tapframe
a0d33be096 KITSU id prefix fix 2025-09-21 13:34:10 +05:30
tapframe
4367be97f8 sidestore release 2025-09-21 06:46:57 +05:30
tapframe
11b4e7889e 1.1.1 14 2025-09-20 16:36:45 +05:30
tapframe
f1ba70db89 updated android to disable OTA check on start 2025-09-20 16:33:17 +05:30
tapframe
8159cfeadb Merge branch 'main' of https://github.com/tapframe/NuvioStreaming 2025-09-20 16:26:52 +05:30
tapframe
c619484657
Merge pull request #107 from CrissZollo/notifications 2025-09-20 15:33:40 +05:30
tapframe
d1fafe64da rename 2025-09-20 12:55:45 +05:30
CrissZollo
3e55dff542 Fixed mark/unmark as watched (long press) and adding/removing from library (long press) 2025-09-20 09:21:04 +02:00
tapframe
718868f7b5 Addon sync fix 2025-09-20 12:45:32 +05:30
tapframe
32591b2710 sync fix addon 2025-09-20 12:38:32 +05:30
CrissZollo
045e37a0d3 Updated so scheduled notifications does not cancel on test and are added and removed by saving to library 2025-09-20 09:02:28 +02:00
CrissZollo
02ef82a804 Updated test notification text 2025-09-20 08:36:11 +02:00
CrissZollo
c6a2c52365 Fixed test notification and is now instant 2025-09-20 08:32:53 +02:00
tapframe
0011079199 ksp test 2025-09-20 09:35:48 +05:30
tapframe
eb3615acc6 Player fixes 2025-09-20 09:27:22 +05:30
tapframe
f76df498f2 small cahnges 2025-09-19 17:39:31 +05:30
tapframe
de6c74bee9 bug fix 2025-09-19 15:05:37 +05:30
tapframe
7379a81f01 TRAKT TEST 2025-09-19 15:00:18 +05:30
tapframe
5a6d5a66b0 Streamscreen UI changes 2025-09-19 14:54:41 +05:30
tapframe
c710a173f2 videoplayer fix 2025-09-19 14:46:24 +05:30
tapframe
877a4c5dc6 android freeze fix 2025-09-19 13:38:46 +05:30
tapframe
0fcc4edde1 Quality sorting fix 2025-09-18 23:29:38 +05:30
tapframe
7ed39d3926 small UI changes 2025-09-18 22:57:40 +05:30
tapframe
6273696b59 release 1.1.0 2025-09-18 17:09:36 +05:30
tapframe
6070ed1dce player switch logic fix ios 2025-09-18 16:26:43 +05:30
tapframe
abfccd0e36 Sync behaviour improvments 2025-09-18 15:32:05 +05:30
tapframe
62defd4773 version update 2025-09-18 15:01:57 +05:30
tapframe
ff4b8f9bbc subtitle size reset fix 2025-09-18 14:59:53 +05:30
tapframe
532d6fb8a0 Sensitivity adjustments for videoplayers 2025-09-18 14:47:20 +05:30
tapframe
73b56bad4b cast modal fix 2025-09-18 14:14:30 +05:30
tapframe
e98012862c subtitle fix 2025-09-18 13:48:09 +05:30
tapframe
83136ea659 small bug fixes. 2025-09-18 02:16:45 +05:30
tapframe
688ea2b9d3 cleaned VLC 2025-09-18 02:09:34 +05:30
tapframe
18815b8233 KSPlayre AUdio track selection fix 2025-09-18 01:56:05 +05:30
tapframe
e9e16ed05a KSPlayer first init 2025-09-18 01:01:47 +05:30
tapframe
5372513142 COMMIT TEST 2025-09-17 23:22:01 +05:30
tapframe
c767de12aa VideoPlayer code cleanup 2025-09-17 20:23:46 +05:30
tapframe
d0719fabec bug fixes 2025-09-17 19:37:08 +05:30
tapframe
b21efa0df0 fixed catalogscreen infinite loop 2025-09-17 16:05:41 +05:30
tapframe
502a683ba2 Streamscreen UI Truncation fix 2025-09-17 15:20:19 +05:30
tapframe
59c0b6ba1b Homescreen layout and visual glithches optimization. 2025-09-17 13:36:05 +05:30
tapframe
a0626e8f8a CastModal Back gesture fix 2025-09-17 13:12:09 +05:30
tapframe
5143917117 UI changes for pluginscreen 2025-09-17 13:07:10 +05:30
tapframe
8d488298cf Audio selection bug fixes 2025-09-17 12:30:47 +05:30
tapframe
2dd2b7fc0b TEST 2025-09-17 03:49:22 +05:30
tapframe
f44c0df168 fix TEST CP 2025-09-17 03:02:31 +05:30
tapframe
1ee1a0c3f7 changes 2025-09-17 00:25:05 +05:30
tapframe
3c839c5ea1 some videoplayer enhancemnets 2025-09-16 02:42:18 +05:30
tapframe
680a1b1ea6 fixes 2025-09-16 01:34:38 +05:30
tapframe
2b3069a988 authscreen fix 2025-09-15 23:32:16 +05:30
tapframe
8ff8869f05 update 2025-09-15 22:51:28 +05:30
tapframe
699a0e96ed Stable 1.0.0 2025-09-15 22:45:11 +05:30
tapframe
830a1a3437 changes 2025-09-15 22:00:53 +05:30
tapframe
0ff28a2c7b changes 2025-09-15 21:42:28 +05:30
tapframe
c18f984eac ui changes 2025-09-15 20:38:37 +05:30
tapframe
3138f33fee changes 2025-09-15 18:09:20 +05:30
tapframe
cbd37ac8d8 repo cleanup 2025-09-15 17:53:23 +05:30
tapframe
ed2b2c9818 update readme 2025-09-15 17:50:42 +05:30
tapframe
2f784e3b22 update readme 2025-09-15 17:47:49 +05:30
tapframe
2d4be20f72 update Readme 2025-09-15 17:45:27 +05:30
tapframe
3b460ec63f trakt update 2025-09-15 17:40:50 +05:30
tapframe
22a118c383 subtitle fix 2025-09-15 14:09:26 +05:30
tapframe
3ea069926b Z-Index fix 2025-09-15 12:07:26 +05:30
tapframe
a5dc2c4d66 ripple fix 2025-09-15 02:32:08 +05:30
tapframe
dc181905e9 improved player detection logic ios 2025-09-15 02:18:23 +05:30
tapframe
a241de97f6 push 2025-09-15 01:20:11 +05:30
tapframe
3ce0db9d2a small changes 2025-09-14 16:44:42 +05:30
tapframe
6b4391e954 Fixed Webstreamer addon support issue 2025-09-14 16:16:48 +05:30
tapframe
f111514090 double encoded url fix 2025-09-14 16:14:18 +05:30
tapframe
2bf7dcd635 animation fix 2025-09-14 16:01:33 +05:30
tapframe
74858bff23 rotation fix 2025-09-14 15:52:09 +05:30
tapframe
e430dced9f changes 2025-09-13 17:39:50 +05:30
tapframe
fe483ea7aa trailer server test. 2025-09-13 17:02:11 +05:30
tapframe
b03f550765 support for moviebox 2025-09-13 16:13:54 +05:30
tapframe
591bdfeb77 bug fixes 2025-09-13 15:16:04 +05:30
tapframe
2c2f28ddd2 small fix 2025-09-13 13:41:08 +05:30
tapframe
f3a8cb751d some fix 2025-09-13 13:25:08 +05:30
tapframe
263da30f17 trakt continue watching removal fix 2025-09-13 13:21:43 +05:30
tapframe
a5d2756854 seriescontent optimziation 2025-09-13 12:18:19 +05:30
tapframe
4667357a25 push 2025-09-13 02:45:58 +05:30
tapframe
48de270557 Beta 11 2025-09-13 02:39:56 +05:30
tapframe
bd69cd2128 changes 2025-09-13 02:13:36 +05:30
tapframe
37baa6f928 changes 2025-09-13 02:07:06 +05:30
tapframe
adafa5cc36 fix 2025-09-13 01:50:00 +05:30
tapframe
81dab0e82d fix 2025-09-13 01:31:53 +05:30
tapframe
6a0295b94e test 2025-09-13 01:17:29 +05:30
tapframe
1cb4b5f2ec added brightness and volume control 2025-09-13 00:50:09 +05:30
tapframe
2a3c504c67 test 2025-09-12 23:45:42 +05:30
tapframe
67648ea6db imrpoved android videoplayer logic 2025-09-12 23:09:38 +05:30
tapframe
fa03d4455f fixed audio selection issue 2025-09-12 22:48:26 +05:30
tapframe
fa7352f4fa AIChatScreen optimziation 2025-09-11 20:09:24 +05:30
tapframe
9410b18962 ai bug fix 2025-09-11 19:31:28 +05:30
tapframe
6162c86347 UI Changes 2025-09-11 17:43:47 +05:30
tapframe
0290b9318e ui changes 2025-09-11 17:27:51 +05:30
tapframe
9ba14f2f33 fix 2025-09-11 17:06:32 +05:30
tapframe
e0ca614893 AI initial commit 2025-09-11 16:32:25 +05:30
tapframe
0a853e7460 Improved playback logic 2025-09-11 14:08:06 +05:30
tapframe
bc4bf5a963 Fixed an issue with Container Parsing on AndroidVideoPlayer 2025-09-11 13:41:26 +05:30
tapframe
dce3e5c200 fixed slider behaviour 2025-09-11 13:26:49 +05:30
tapframe
b516fe74d3 fix 2025-09-11 13:21:36 +05:30
tapframe
0ce7df60cc fix 2025-09-11 13:20:27 +05:30
tapframe
8996301e83 some change 2025-09-11 13:09:35 +05:30
tapframe
400a4313d9 bug fix 2025-09-11 12:54:00 +05:30
tapframe
65845c6e10 Added proper subtitle outline support 2025-09-11 12:21:47 +05:30
tapframe
2a118a17d4 Calender screen optimziation which caused OOM. 2025-09-11 11:43:28 +05:30
tapframe
bc2a15f81f potential heat fix 2025-09-10 21:38:43 +05:30
tapframe
097073fcd3 homescreen optomziation 2025-09-10 15:16:05 +05:30
tapframe
ccde944bfa usemetadata maximum depth limit reached potential fix 2025-09-10 15:06:40 +05:30
tapframe
43f6f056c0 fixed some issues on streamscreen related to reanimated. 2025-09-10 14:53:52 +05:30
tapframe
abe1947ba2 change 2025-09-09 23:34:14 +05:30
tapframe
b1694be4a2 changes 2025-09-09 23:31:46 +05:30
tapframe
97ba1ef42b Removed extensive logging from production build 2025-09-09 21:01:27 +05:30
tapframe
86cfca4c96 trailer fix test 2025-09-09 20:08:14 +05:30
tapframe
c92dfb149c many major fixes 2025-09-09 00:33:30 +05:30
tapframe
6bb4d927ed heating optimization 2025-09-08 22:38:03 +05:30
tapframe
02bfd85b5a perfomnce optimziations 2025-09-08 17:28:10 +05:30
tapframe
6560f5a6a7 change 2025-09-08 03:09:34 +05:30
tapframe
fe0db66534 beta 10 2025-09-08 02:44:53 +05:30
tapframe
28752791ae update beta 10 2025-09-08 02:32:28 +05:30
tapframe
950e38a20b changes 2025-09-07 20:38:14 +05:30
tapframe
754dec3946 updates UI now support release notes 2025-09-07 20:37:47 +05:30
tapframe
837e3735a2 fixed videoplayer control for android 2025-09-07 19:04:26 +05:30
tapframe
b1494e8a1d changes 2025-09-06 23:42:27 +05:30
tapframe
019f99c956 Add xavia-ota submodule configuration 2025-09-06 20:47:33 +05:30
tapframe
b55a090284 beta release 9 2025-09-06 20:39:46 +05:30
tapframe
bf0fe2d5a1 major additions 2025-09-06 19:58:38 +05:30
tapframe
e4bc0d3896 added OTA support 2025-09-06 17:50:04 +05:30
tapframe
5ddf26af34 small fix 2025-09-06 02:39:54 +05:30
tapframe
a30ace14c9 ui overhaul for plugnscreen 2025-09-06 01:57:28 +05:30
tapframe
c9ea142dfb ui changes 2025-09-06 01:39:07 +05:30
tapframe
95e9e36723 release beta 8 2025-09-04 20:03:29 +05:30
tapframe
f642f3f9b5 some customizations added 2025-09-04 19:49:40 +05:30
tapframe
3653879596 Fixed trailer keeps Playing issue even after opening Streamscreen 2025-09-04 19:20:02 +05:30
tapframe
9c533e3c52 some UI changes for ContinueWatching 2025-09-04 18:00:37 +05:30
tapframe
afaca6467f herocarousal optimizations 2025-09-04 17:48:13 +05:30
tapframe
058ee84a2a some minor fixes 2025-09-04 17:26:21 +05:30
tapframe
e8d7eab2e4 potential fix 2025-09-04 17:07:31 +05:30
tapframe
a562e45ffd perfomance optimziations 2025-09-03 17:17:20 +05:30
tapframe
27b52a5a45 major bug fix 2025-09-03 17:03:41 +05:30
tapframe
3608493518 cleaning repo 2025-09-03 16:29:15 +05:30
tapframe
5dcdfebddb release 2025-09-03 16:27:26 +05:30
tapframe
aaa32f9d88 ui change 2025-09-03 16:02:57 +05:30
tapframe
8adbfc5a85 minor ui fixes 2025-09-03 16:00:30 +05:30
tapframe
e3b86bcc90 UI fixes 2025-09-03 15:46:24 +05:30
tapframe
213fbbbb4e some minor UI fixes 2025-09-03 15:30:52 +05:30
tapframe
9fcb6a34b7 changed default hero to carousal 2025-09-03 15:06:05 +05:30
tapframe
56b4e60ecb change 2025-09-03 14:19:30 +05:30
tapframe
412d25c458 UI changes on herocarousal 2025-09-03 14:17:12 +05:30
tapframe
8700b10843 ui changes on new herocarousal 2025-09-03 13:46:20 +05:30
tapframe
de36ec8186 new hero section option 2025-09-03 13:29:00 +05:30
tapframe
dfb856f441 critical bug fixes 2025-09-02 21:50:34 +05:30
tapframe
ed82ef2ad1 ui fix 2025-09-02 20:49:35 +05:30
tapframe
26c914b934 update readme 2025-09-02 20:43:29 +05:30
tapframe
91a5dcdcdf UI update 2025-09-02 20:42:11 +05:30
tapframe
76fde372ff android Trailer Fix 2025-09-02 20:28:40 +05:30
tapframe
de5dc55ce0 update index.html 2025-09-02 01:14:02 +05:30
tapframe
01661572af update 2025-09-02 01:12:31 +05:30
tapframe
69e80f5c3f update readme 2025-09-02 01:03:15 +05:30
tapframe
1d65bccf0e test 2025-09-02 00:59:50 +05:30
tapframe
52196e9d81 test 2025-09-02 00:57:27 +05:30
tapframe
858e8f9c75 update readme 2025-09-02 00:56:40 +05:30
tapframe
12b462376c update readme 2025-09-02 00:55:44 +05:30
tapframe
418a10e25f update readme 2025-09-02 00:54:38 +05:30
tapframe
015dafbda2 added - website 2025-09-02 00:49:29 +05:30
tapframe
a3f90be476 update 2025-09-02 00:47:00 +05:30
tapframe
df7cecd2e3 update index.html 2025-09-02 00:35:16 +05:30
tapframe
79f9a9e1ec update ss 2025-09-02 00:26:16 +05:30
tapframe
1fe3bbc002 update json 2025-09-02 00:18:58 +05:30
tapframe
4a1cba0ab5 update version number 2025-09-02 00:10:52 +05:30
tapframe
dfbee206a9 beta 6 update 2025-09-02 00:07:52 +05:30
tapframe
5d4f651481 removed patreon 2025-09-02 00:00:21 +05:30
tapframe
320e91d52d test 2025-09-01 23:58:02 +05:30
tapframe
a353eeb1a2 test 2025-09-01 23:55:44 +05:30
tapframe
a2384ddb85 test 2025-09-01 23:52:58 +05:30
tapframe
faecc83b3c test 2025-09-01 23:49:50 +05:30
tapframe
dfe1eec11e test alt 2025-09-01 23:43:16 +05:30
tapframe
74ebec9b03 some changes 2025-09-01 23:38:39 +05:30
tapframe
a63168e06d page update 2025-09-01 23:33:40 +05:30
tapframe
2fd2839e18 some changes 2025-09-01 23:08:01 +05:30
tapframe
0f37b236a4 update README 2025-09-01 21:35:51 +05:30
tapframe
46cdf95cd4 small bug fixes 2025-09-01 19:41:55 +05:30
tapframe
9b1368e7c6 some UI changes 2025-09-01 18:17:08 +05:30
tapframe
c1bae1d7f3 minor UI changes 2025-09-01 17:58:42 +05:30
tapframe
5c7ac3dcae minor UI changes 2025-08-31 17:59:00 +05:30
tapframe
7ce3fb849a potential codec fix exoplayer 2025-08-31 17:45:28 +05:30
tapframe
220fc6aa21 improved trailer playback logic 2025-08-31 16:01:38 +05:30
tapframe
6f24275ff0 some fixes 2025-08-31 15:34:18 +05:30
tapframe
99424d37be some ui changes 2025-08-31 14:12:38 +05:30
tapframe
3a182b5982 added smooth transition between thumbnail and trailers 2025-08-31 13:48:48 +05:30
tapframe
b5d92e5887 soem ui changes 2025-08-31 13:05:39 +05:30
tapframe
face30c163 trailer ininital addition 2025-08-31 12:53:32 +05:30
tapframe
5b71ccc56c test 2025-08-30 16:35:21 +05:30
tapframe
4a129b1c32 test 2025-08-30 16:26:54 +05:30
tapframe
2cd254b1cf test 2025-08-30 02:37:22 +05:30
tapframe
b18ba25164 test altstore 2025-08-30 02:17:32 +05:30
tapframe
6d09add277 some ui changes to metadascreen 2025-08-30 01:42:01 +05:30
tapframe
ec364f60ff minor ui changes 2025-08-30 00:35:33 +05:30
tapframe
d914e01346 fixed tmdb ratings 2025-08-29 19:54:56 +05:30
tapframe
12c591216e fixed herosection loading issue 2025-08-29 19:34:28 +05:30
tapframe
9eea58ef98 some ui changes 2025-08-29 12:31:10 +05:30
tapframe
955640f856 metadata selector added 2025-08-29 12:05:44 +05:30
tapframe
87455ff573 test fix poster loading 2025-08-29 11:51:04 +05:30
tapframe
292d00af84 Update AltStore source with comprehensive structure and featured apps 2025-08-27 22:16:10 +05:30
tapframe
3071aeb29f Add nuvio-providers as submodule 2025-08-27 21:55:06 +05:30
tapframe
1266e482da Fix submodule issue and add AltStore source configuration 2025-08-27 21:50:17 +05:30
tapframe
0b495f992a test 2025-08-27 21:38:20 +05:30
tapframe
81acf58e7b ss 2025-08-27 21:24:08 +05:30
tapframe
4542635cc0 ss 2025-08-27 21:16:58 +05:30
tapframe
d553be3ec5 improved tablet alyout 2025-08-27 20:03:56 +05:30
tapframe
575289f654 tablet layout fix 2025-08-27 19:44:05 +05:30
tapframe
ea5b1572b8 update readme 2025-08-27 19:22:31 +05:30
tapframe
a8fb2a848e fixed weird horizontal card glitch on entrance 2025-08-27 13:35:00 +05:30
tapframe
b7bd700bf9 Ui changes 2025-08-27 13:30:19 +05:30
tapframe
bfa0eeb2af set default episode layout to vertical 2025-08-26 15:01:32 +05:30
tapframe
8c7563590b minor ui changes 2025-08-26 14:49:23 +05:30
435 changed files with 69076 additions and 15335 deletions

13
.env.example Normal file
View file

@ -0,0 +1,13 @@
# Supabase Configuration
# Get these values from your Supabase project settings
EXPO_PUBLIC_SUPABASE_URL=your_supabase_project_url
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# MovieBox (MoviesMod) Keys
EXPO_PUBLIC_MOVIEBOX_PRIMARY_KEY=your_moviebox_primary_key
EXPO_PUBLIC_MOVIEBOX_TMDB_API_KEY=your_tmdb_api_key_for_moviebox
# Trakt
EXPO_PUBLIC_TRAKT_CLIENT_ID=your_trakt_client_id
EXPO_PUBLIC_TRAKT_CLIENT_SECRET=your_trakt_client_secret
EXPO_PUBLIC_TRAKT_REDIRECT_URI=stremioexpo://auth/trakt

4
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,4 @@
# These are supported funding model platforms
github: [tapframe]
ko_fi: tapframe

36
.gitignore vendored
View file

@ -2,6 +2,7 @@
# dependencies
node_modules/
!node_modules/react-native-video/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java
# Expo
.expo/
@ -30,6 +31,7 @@ yarn-error.*
*.pem
# local env files
.env
.env*.local
# typescript
@ -39,9 +41,35 @@ release_announcement.md
ALPHA_BUILD_2_ANNOUNCEMENT.md
CHANGELOG.md
.env.local
android/
# Android build artifacts (but keep source files)
android/app/build/
android/build/
android/.gradle/
android/app/libs/*.aar
!android/app/libs/lib-decoder-ffmpeg-release.aar
HEATING_OPTIMIZATIONS.md
ios
android
sliderreadme.md
# sliderreadme.md
.cursor/mcp.json
local-scrapers-repo
worki.json
VERSION_UPDATE_README.md
hackintosh-emulator-fix.sh
/ota-builds
src/screens/xavio.md
/nuvio-providers
/KSPlayer
/exobase
# ffmpegreadme.md
toast.md
ffmpegreadme.md
sliderreadme.md
bottomsheet.md
fastimage.md
# Backup directories
backup_sdk54_upgrade/
SDK54_UPGRADE_SUMMARY.md
SDK54_UPGRADE_SUMMARY.md
build-and-publish-app-releases.sh
bottomnav.md
/TrailerServices

6
.gitmodules vendored Normal file
View file

@ -0,0 +1,6 @@
[submodule "local-scrapers-repo"]
path = local-scrapers-repo
url = https://github.com/tapframe/nuvio-providers.git
[submodule "xavia-ota"]
path = xavia-ota
url = https://github.com/tapframe/NuvioOTA.git

View file

@ -1,2 +1,3 @@
{
"java.compile.nullAnalysis.mode": "automatic"
}

134
App.tsx
View file

@ -8,7 +8,10 @@
import React, { useState, useEffect } from 'react';
import {
View,
StyleSheet
StyleSheet,
I18nManager,
Platform,
LogBox
} from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
@ -24,9 +27,20 @@ import { CatalogProvider } from './src/contexts/CatalogContext';
import { GenreProvider } from './src/contexts/GenreContext';
import { TraktProvider } from './src/contexts/TraktContext';
import { ThemeProvider, useTheme } from './src/contexts/ThemeContext';
import { TrailerProvider } from './src/contexts/TrailerContext';
import { DownloadsProvider } from './src/contexts/DownloadsContext';
import SplashScreen from './src/components/SplashScreen';
import UpdatePopup from './src/components/UpdatePopup';
import MajorUpdateOverlay from './src/components/MajorUpdateOverlay';
import { useGithubMajorUpdate } from './src/hooks/useGithubMajorUpdate';
import { useUpdatePopup } from './src/hooks/useUpdatePopup';
import AsyncStorage from '@react-native-async-storage/async-storage';
import * as Sentry from '@sentry/react-native';
import UpdateService from './src/services/updateService';
import { memoryMonitorService } from './src/services/memoryMonitorService';
import { aiService } from './src/services/aiService';
import { AccountProvider, useAccount } from './src/contexts/AccountContext';
import { ToastProvider } from './src/contexts/ToastContext';
Sentry.init({
dsn: 'https://1a58bf436454d346e5852b7bfd3c95e8@o4509536317276160.ingest.de.sentry.io/4509536317734992',
@ -35,38 +49,85 @@ Sentry.init({
// For more information, visit: https://docs.sentry.io/platforms/react-native/data-management/data-collected/
sendDefaultPii: true,
// Configure Session Replay
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1,
integrations: [Sentry.mobileReplayIntegration(), Sentry.feedbackIntegration()],
// Configure Session Replay conservatively to avoid startup overhead in production
replaysSessionSampleRate: __DEV__ ? 0.1 : 0,
replaysOnErrorSampleRate: __DEV__ ? 1 : 0,
integrations: [Sentry.feedbackIntegration()],
// uncomment the line below to enable Spotlight (https://spotlightjs.com)
// spotlight: __DEV__,
});
// Force LTR layout to prevent RTL issues when Arabic is set as system language
// This ensures posters and UI elements remain visible and properly positioned
I18nManager.allowRTL(false);
I18nManager.forceRTL(false);
// Suppress duplicate key warnings app-wide
LogBox.ignoreLogs([
'Warning: Encountered two children with the same key',
'Keys should be unique so that components maintain their identity across updates'
]);
// This fixes many navigation layout issues by using native screen containers
enableScreens(true);
// Inner app component that uses the theme context
const ThemedApp = () => {
// Log JS engine once at startup
useEffect(() => {
try {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const engine = (global as any).HermesInternal ? 'Hermes' : 'JSC';
console.log('JS Engine:', engine);
} catch {}
}, []);
const { currentTheme } = useTheme();
const [isAppReady, setIsAppReady] = useState(false);
const [hasCompletedOnboarding, setHasCompletedOnboarding] = useState<boolean | null>(null);
// Check onboarding status
// Update popup functionality
const {
showUpdatePopup,
updateInfo,
isInstalling,
handleUpdateNow,
handleUpdateLater,
handleDismiss,
} = useUpdatePopup();
// GitHub major/minor release overlay
const githubUpdate = useGithubMajorUpdate();
// Check onboarding status and initialize services
useEffect(() => {
const checkOnboardingStatus = async () => {
const initializeApp = async () => {
try {
// Check onboarding status
const onboardingCompleted = await AsyncStorage.getItem('hasCompletedOnboarding');
setHasCompletedOnboarding(onboardingCompleted === 'true');
// Initialize update service (skip on Android to prevent update checks)
if (Platform.OS !== 'android') {
await UpdateService.initialize();
}
// Initialize memory monitoring service to prevent OutOfMemoryError
memoryMonitorService; // Just accessing it starts the monitoring
console.log('Memory monitoring service initialized');
// Initialize AI service
await aiService.initialize();
console.log('AI service initialized');
} catch (error) {
console.error('Error checking onboarding status:', error);
console.error('Error initializing app:', error);
// Default to showing onboarding if we can't check
setHasCompletedOnboarding(false);
}
};
checkOnboardingStatus();
initializeApp();
}, []);
// Create custom themes based on current theme
@ -98,21 +159,40 @@ const ThemedApp = () => {
const initialRouteName = hasCompletedOnboarding ? 'MainTabs' : 'Onboarding';
return (
<PaperProvider theme={customDarkTheme}>
<NavigationContainer
theme={customNavigationTheme}
// Disable automatic linking which can cause layout issues
linking={undefined}
>
<View style={[styles.container, { backgroundColor: currentTheme.colors.darkBackground }]}>
<StatusBar
style="light"
/>
{!isAppReady && <SplashScreen onFinish={handleSplashComplete} />}
{shouldShowApp && <AppNavigator initialRouteName={initialRouteName} />}
</View>
</NavigationContainer>
</PaperProvider>
<AccountProvider>
<PaperProvider theme={customDarkTheme}>
<NavigationContainer
theme={customNavigationTheme}
linking={undefined}
>
<DownloadsProvider>
<View style={[styles.container, { backgroundColor: currentTheme.colors.darkBackground }]}>
<StatusBar style="light" />
{!isAppReady && <SplashScreen onFinish={handleSplashComplete} />}
{shouldShowApp && <AppNavigator initialRouteName={initialRouteName} />}
{Platform.OS === 'ios' && (
<UpdatePopup
visible={showUpdatePopup}
updateInfo={updateInfo}
onUpdateNow={handleUpdateNow}
onUpdateLater={handleUpdateLater}
onDismiss={handleDismiss}
isInstalling={isInstalling}
/>
)}
<MajorUpdateOverlay
visible={githubUpdate.visible}
latestTag={githubUpdate.latestTag}
releaseNotes={githubUpdate.releaseNotes}
releaseUrl={githubUpdate.releaseUrl}
onDismiss={githubUpdate.onDismiss}
onLater={githubUpdate.onLater}
/>
</View>
</DownloadsProvider>
</NavigationContainer>
</PaperProvider>
</AccountProvider>
);
}
@ -123,7 +203,11 @@ function App(): React.JSX.Element {
<CatalogProvider>
<TraktProvider>
<ThemeProvider>
<ThemedApp />
<TrailerProvider>
<ToastProvider>
<ThemedApp />
</ToastProvider>
</TrailerProvider>
</ThemeProvider>
</TraktProvider>
</CatalogProvider>

View file

@ -1,232 +0,0 @@
# 🔔 Comprehensive Notification Integration - Implementation Summary
## ✅ **What Was Implemented**
I've successfully integrated notifications with your library and Trakt system, adding automatic background notifications for all saved shows. Here's what's now working:
---
## 🚀 **1. Library Auto-Integration**
### **Automatic Notification Setup**
- **When adding series to library**: Notifications are automatically scheduled for upcoming episodes
- **When removing series from library**: All related notifications are automatically cancelled
- **Real-time sync**: Changes to library immediately trigger notification updates
### **Implementation Details:**
```typescript
// In catalogService.ts - Auto-setup when adding to library
public async addToLibrary(content: StreamingContent): Promise<void> {
// ... existing code ...
// Auto-setup notifications for series when added to library
if (content.type === 'series') {
await notificationService.updateNotificationsForSeries(content.id);
}
}
```
---
## 🎬 **2. Trakt Integration**
### **Comprehensive Trakt Support**
- **Trakt Watchlist**: Automatically syncs notifications for shows in your Trakt watchlist
- **Trakt Collection**: Syncs notifications for shows in your Trakt collection
- **Background Sync**: Periodically checks Trakt for new shows and updates notifications
- **Authentication Handling**: Automatically detects when Trakt is connected/disconnected
### **What Gets Synced:**
- All series from your Trakt watchlist
- All series from your Trakt collection
- Automatic deduplication with local library
- IMDB ID mapping for accurate show identification
---
## ⏰ **3. Background Notifications**
### **Automatic Background Processing**
- **6-hour sync cycle**: Automatically syncs all notifications every 6 hours
- **App foreground sync**: Syncs when app comes to foreground
- **Library change sync**: Immediate sync when library changes
- **Trakt change detection**: Syncs when Trakt data changes
### **Smart Episode Detection:**
- **4-week window**: Finds episodes airing in the next 4 weeks
- **Multiple data sources**: Uses Stremio first, falls back to TMDB
- **Duplicate prevention**: Won't schedule same episode twice
- **Automatic cleanup**: Removes old/expired notifications
---
## 📱 **4. Enhanced Settings Screen**
### **New Features Added:**
- **Notification Stats Display**: Shows upcoming, this week, and total notifications
- **Manual Sync Button**: "Sync Library & Trakt" button for immediate sync
- **Real-time Stats**: Stats update automatically after sync
- **Visual Feedback**: Loading states and success messages
### **Stats Dashboard:**
```
📅 Upcoming: 12 📆 This Week: 3 🔔 Total: 15
```
---
## 🔧 **5. Technical Implementation**
### **Enhanced NotificationService Features:**
#### **Library Integration:**
```typescript
private setupLibraryIntegration(): void {
// Subscribe to library updates from catalog service
this.librarySubscription = catalogService.subscribeToLibraryUpdates(async (libraryItems) => {
await this.syncNotificationsForLibrary(libraryItems);
});
}
```
#### **Trakt Integration:**
```typescript
private async syncTraktNotifications(): Promise<void> {
// Get Trakt watchlist and collection shows
const [watchlistShows, collectionShows] = await Promise.all([
traktService.getWatchlistShows(),
traktService.getCollectionShows()
]);
// Sync notifications for each show
}
```
#### **Background Sync:**
```typescript
private setupBackgroundSync(): void {
// Sync notifications every 6 hours
this.backgroundSyncInterval = setInterval(async () => {
await this.performBackgroundSync();
}, 6 * 60 * 60 * 1000);
}
```
---
## 📊 **6. Data Sources & Fallbacks**
### **Multi-Source Episode Detection:**
1. **Primary**: Stremio addon metadata
2. **Fallback**: TMDB API for episode air dates
3. **Smart Mapping**: Handles both IMDB IDs and TMDB IDs
4. **Season Detection**: Checks current and upcoming seasons
### **Notification Content:**
```
Title: "New Episode: Breaking Bad"
Body: "S5:E14 - Ozymandias is airing soon!"
Data: { seriesId: "tt0903747", episodeId: "..." }
```
---
## 🎯 **7. User Experience Improvements**
### **Seamless Integration:**
- **Zero manual setup**: Works automatically when you add shows
- **Cross-platform sync**: Trakt integration keeps notifications in sync across devices
- **Smart timing**: Respects user's preferred notification timing (1h, 6h, 12h, 24h)
- **Battery optimized**: Efficient background processing
### **Visual Feedback:**
- **Stats dashboard**: See exactly how many notifications are scheduled
- **Sync status**: Clear feedback when syncing completes
- **Error handling**: Graceful handling of API failures
---
## 🔄 **8. Automatic Workflows**
### **When You Add a Show to Library:**
1. Show is added to local library
2. Notification service automatically triggered
3. Upcoming episodes detected (next 4 weeks)
4. Notifications scheduled based on your timing preference
5. Stats updated in settings screen
### **When You Add a Show to Trakt:**
1. Background sync detects new Trakt show (within 6 hours or on app open)
2. Show metadata fetched
3. Notifications scheduled automatically
4. No manual intervention required
### **When Episodes Air:**
1. Notification delivered at your preferred time
2. Old notifications automatically cleaned up
3. Stats updated to reflect current state
---
## 📈 **9. Performance Optimizations**
### **Efficient Processing:**
- **Batch operations**: Processes multiple shows efficiently
- **API rate limiting**: Includes delays to prevent overwhelming APIs
- **Memory management**: Cleans up old notifications automatically
- **Error resilience**: Continues processing even if individual shows fail
### **Background Processing:**
- **Non-blocking**: Doesn't interfere with app performance
- **Intelligent scheduling**: Only syncs when necessary
- **Resource conscious**: Optimized for battery life
---
## 🎉 **10. What This Means for Users**
### **Before:**
- Manual notification setup required
- No integration with library or Trakt
- Limited to manually added shows
- No background updates
### **After:**
- ✅ **Automatic**: Add any show to library → notifications work automatically
- ✅ **Trakt Sync**: Your Trakt watchlist/collection → automatic notifications
- ✅ **Background**: Always up-to-date without manual intervention
- ✅ **Smart**: Finds episodes from multiple sources
- ✅ **Visual**: Clear stats and sync controls
---
## 🔧 **11. How to Use**
### **For Library Shows:**
1. Add any series to your library (heart icon)
2. Notifications automatically scheduled
3. Check stats in Settings → Notification Settings
### **For Trakt Shows:**
1. Connect your Trakt account
2. Add shows to Trakt watchlist or collection
3. Notifications sync automatically (within 6 hours or on app open)
4. Use "Sync Library & Trakt" button for immediate sync
### **Manual Control:**
- Go to Settings → Notification Settings
- View notification stats
- Use "Sync Library & Trakt" for immediate sync
- Adjust timing preferences (1h, 6h, 12h, 24h before airing)
---
## 🚀 **Result**
Your notification system now provides a **Netflix-like experience** where:
- Adding shows automatically sets up notifications
- Trakt integration keeps everything in sync
- Background processing ensures you never miss episodes
- Smart episode detection works across multiple data sources
- Visual feedback shows exactly what's scheduled
The system is now **fully automated** and **user-friendly**, requiring zero manual setup while providing comprehensive coverage of all your shows from both local library and Trakt integration.

310
README.md
View file

@ -1,172 +1,184 @@
# Nuvio Streaming App
<!-- Improved compatibility of back to top link -->
<a id="readme-top"></a>
<p align="center">
<img src="assets/titlelogo.png" alt="Nuvio Logo" width="300"/>
</p>
<!-- PROJECT SHIELDS -->
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![License][license-shield]][license-url]
<p align="center">
A modern streaming app built with React Native and Expo, featuring Stremio addon integration, Trakt synchronization, and a beautiful user interface.
</p>
<!-- PROJECT LOGO -->
<br />
<div align="center">
<img src="assets/titlelogo.png" alt="Nuvio Logo" width="120" />
<h1 align="center">🎬 Nuvio Media Hub</h1>
<p align="center">
A modern media hub built with React Native and Expo
<br />
Stremio Addon ecosystem • Crossplatform • Offline metadata & sync
<br />
<br />
<a href="#getting-started"><strong>Get Started »</strong></a>
<br />
<br />
<a href="#demo">View Screenshots</a>
·
<a href="https://github.com/tapframe/NuvioStreaming/issues/new?labels=bug&template=bug_report.md">Report Bug</a>
·
<a href="https://github.com/tapframe/NuvioStreaming/issues/new?labels=enhancement&template=feature_request.md">Request Feature</a>
</p>
</div>
---
<!-- TABLE OF CONTENTS -->
<details>
<summary>Table of Contents</summary>
<ol>
<li>
<a href="#about-the-project">About The Project</a>
</li>
<li><a href="#demo">Screenshots</a></li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#installation">Installation</a></li>
<li><a href="#build">Build</a></li>
</ul>
</li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="#support">Support</a></li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#acknowledgments">Acknowledgments</a></li>
<li><a href="#built-with">Built With</a></li>
</ol>
</details>
## ⚠️ Alpha Testing
This app is currently in alpha testing. Please report any bugs or issues you encounter.
<!-- ABOUT THE PROJECT -->
## About The Project
[Download Latest Release](https://github.com/tapframe/NuvioStreaming/tags)
Nuvio Media Hub is a crossplatform app for managing, discovering, and streaming your media via a flexible addon ecosystem. Built with React Native + Expo, it integrates providers and sync services while keeping a simple, fast UI.
---
## ✨ Key Features
<!-- DEMO / SCREENSHOTS -->
## Demo
<a id="demo"></a>
### Content & Discovery
- **Smart Home Screen:** Personalized content recommendations and continue watching
- **Discover Section:** Browse trending and popular movies & TV shows
- **Rich Metadata:** Detailed information, cast, ratings, and similar content
- **Powerful Search:** Find content quickly with instant results
| Home | Details |
|:----:|:-------:|
| ![Home](screenshots/Simulator%20Screenshot%20-%20iPhone%2016%20Pro%20-%202025-08-27%20at%2021.08.32-portrait.png) | ![Details](screenshots/WhatsApp%20Image%202025-09-02%20at%2000.24.31-portrait.png) |
### Streaming & Playback
- **Advanced Video Player:**
- Built-in player with gesture controls
- External player support
- Auto-quality selection
- Subtitle customization
- **Smart Stream Selection:** Automatically finds the best available streams
- **Auto-Play:** Seamless playback of next episodes
- **Continue Watching:** Resume from where you left off
<p align="right">(<a href="#readme-top">back to top</a>)</p>
### Integration & Sync
- **Trakt Integration:**
- Account synchronization
- Watch history tracking
- Library management
- Progress syncing
- **Stremio Addons:**
- Compatible with Stremio addon system
- Easy addon management
- Multiple source support
<!-- GETTING STARTED -->
## Getting Started
### User Experience
- **Modern UI/UX:** Clean, intuitive interface with smooth animations
- **Performance:** Optimized for smooth scrolling and quick loading
- **Customization:** Theme options and display preferences
- **Cross-Platform:** Works on both iOS and Android
Follow the steps below to run the app locally.
---
### Installation
## 📸 Screenshots
```bash
git clone https://github.com/tapframe/NuvioStreaming.git
cd NuvioStreaming
npm install
# If you hit peer dependency conflicts:
# npm install --legacy-peer-deps
npx expo start
```
| Home & Continue Watching | Discover & Browse | Search & Details |
|:-----------------------:|:-----------------:|:----------------:|
| ![Home](src/assets/home.jpg) | ![Discover](src/assets/discover.jpg) | ![Search](src/assets/search.jpg) |
| **Content Details** | **Episodes & Seasons** | **Ratings & Info** |
| ![Metadata](src/assets/metadascreen.jpg) | ![Seasons](src/assets/seasonandepisode.jpg) | ![Rating](src/assets/ratingscreen.jpg) |
### Build
---
```bash
npx expo prebuild
npx expo run:android # Android
npx expo run:ios # iOS
```
## 🧰 Tools & Technologies
<details>
<summary>Alternative iOS Installation</summary>
### AltStore
<img src="https://upload.wikimedia.org/wikipedia/commons/2/20/AltStore_logo.png" width="24" height="24" align="left"> [![Add to AltStore](https://img.shields.io/badge/Add%20to-AltStore-blue?style=for-the-badge)](https://tinyurl.com/NuvioAltstore)
### SideStore
<img src="https://github.com/SideStore/assets/blob/main/icon.png?raw=true" width="24" height="24" align="left"> [![Add to SideStore](https://img.shields.io/badge/Add%20to-SideStore-green?style=for-the-badge)](https://tinyurl.com/NuvioSidestore)
**Manual URL:** `https://raw.githubusercontent.com/tapframe/NuvioStreaming/main/nuvio-source.json`
</details>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Contributing
Contributions make the opensource community amazing! Any contributions are greatly appreciated.
1. Fork the project
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Support
If you find Nuvio helpful, consider supporting development:
* **KoFi** `https://ko-fi.com/tapframe`
* **GitHub Star** Star the repo to show support
* **Share** Tell others about the project
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## License
Distributed under the GNU GPLv3 License. See `LICENSE` for more information.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Contact
**Project Links:**
* GitHub: `https://github.com/tapframe`
* Issues: `https://github.com/tapframe/NuvioStreaming/issues`
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Acknowledgments
* [React Native](https://reactnative.dev/)
* [Expo](https://expo.dev/)
* [TypeScript](https://www.typescriptlang.org/)
* Community contributors and testers
**Disclaimer:** This application functions as a media hub with addon/plugin support. It does not contain any builtin content or host media content. Content access is only available through userinstalled plugins and addons. Any legal concerns should be directed to the specific websites providing the content.
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Built With
<p align="left">
<a href="https://skillicons.dev">
<img src="https://skillicons.dev/icons?i=react,typescript,nodejs,expo,github,githubactions&theme=light&perline=6" />
</a>
</p>
<br/>
React Native • Expo • TypeScript
</p>
---
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## 🚀 Getting Started
### Prerequisites
- Node.js 18 or newer
- npm or yarn
- Expo Go app (for development)
- Android Studio (for Android builds)
- Xcode (for iOS builds)
### Development Setup
1. Clone the repository:
```bash
git clone https://github.com/tapframe/NuvioStreaming.git
cd NuvioStreaming
```
2. Install dependencies:
```bash
npm install
# or
yarn install
```
3. Start the development server:
```bash
npx expo start
```
4. Run on device/simulator:
- Scan QR code with Expo Go app
- Or run native builds:
```bash
npx expo run:android
# or
npx expo run:ios
```
---
## 🤝 Contributing
We welcome contributions! Here's how you can help:
1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Open a Pull Request
---
## 🐛 Bug Reports & Feature Requests
Found a bug or have an idea? Please open an [issue](https://github.com/tapframe/NuvioStreaming/issues) with:
- Clear description of the problem/suggestion
- Steps to reproduce (for bugs)
- Expected behavior
- Screenshots if applicable
---
## 📄 License
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html)
This application is **free software**: you can use, study, share, and modify it as you wish.
It is distributed under the terms of the [GNU General Public License](https://www.gnu.org/licenses/gpl.html) version 3 or later, published by the Free Software Foundation.
---
## ⚖️ DMCA Disclaimer
We hereby issue this notice to clarify that this application functions similarly to a standard web browser by fetching video files from the internet.
- **No content is hosted by this repository or the Nuvio application.**
- Any content accessed is hosted by third-party websites.
- Users are solely responsible for their usage and must comply with their local laws.
If you believe content is violating copyright laws, please contact the **actual file hosts**, **not** the developers of this repository or the Nuvio app.
---
## 🙏 Acknowledgments
Built with help from the amazing communities behind:
- React Native & Expo
- TMDB API
- Trakt.tv
- Stremio
---
**Thank You for using Nuvio!**
<!-- MARKDOWN LINKS & IMAGES -->
[contributors-shield]: https://img.shields.io/github/contributors/tapframe/NuvioStreaming.svg?style=for-the-badge
[contributors-url]: https://github.com/tapframe/NuvioStreaming/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/tapframe/NuvioStreaming.svg?style=for-the-badge
[forks-url]: https://github.com/tapframe/NuvioStreaming/network/members
[stars-shield]: https://img.shields.io/github/stars/tapframe/NuvioStreaming.svg?style=for-the-badge
[stars-url]: https://github.com/tapframe/NuvioStreaming/stargazers
[issues-shield]: https://img.shields.io/github/issues/tapframe/NuvioStreaming.svg?style=for-the-badge
[issues-url]: https://github.com/tapframe/NuvioStreaming/issues
[license-shield]: https://img.shields.io/github/license/tapframe/NuvioStreaming.svg?style=for-the-badge
[license-url]: http://www.gnu.org/licenses/gpl-3.0.en.html

File diff suppressed because it is too large Load diff

View file

@ -14,6 +14,7 @@ react {
hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
// Use Expo CLI to bundle the app, this ensures the Metro config
// works correctly with Expo projects.
cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim())
@ -63,9 +64,9 @@ react {
}
/**
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
* Set this to true in release builds to optimize the app using [R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization).
*/
def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()
def enableMinifyInReleaseBuilds = (findProperty('android.enableMinifyInReleaseBuilds') ?: false).toBoolean()
/**
* The preferred build flavor of JavaScriptCore (JSC)
@ -78,9 +79,9 @@ def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInRelea
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
apply from: new File(["node", "--print", "require('path').dirname(require.resolve('@sentry/react-native/package.json'))"].execute().text.trim(), "sentry.gradle")
// apply from: new File(["node", "--print", "require('path').dirname(require.resolve('@sentry/react-native/package.json'))"].execute().text.trim(), "sentry.gradle")
android {
ndkVersion rootProject.ext.ndkVersion
@ -93,16 +94,39 @@ android {
applicationId 'com.nuvio.app'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0.0"
versionCode 21
versionName "1.2.6"
buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\""
}
// Split APKs by architecture only for smaller downloads
splits {
abi {
reset()
enable true
universalApk false // If true, also generate a universal APK
include "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
reset()
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
universalApk true
}
density {
enable false
}
}
// Generate unique version codes for each split APK
def abiVersionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4]
applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseVersionCode = 21 // Current versionCode 21 from defaultConfig
def abiName = output.getFilter(com.android.build.OutputFile.ABI)
def versionCode = baseVersionCode * 100 // Base multiplier
if (abiName != null) {
versionCode += abiVersionCodes.get(abiName)
}
output.versionCodeOverride = versionCode
}
}
signingConfigs {
@ -121,15 +145,18 @@ android {
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.debug
shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)
minifyEnabled enableProguardInReleaseBuilds
def enableShrinkResources = findProperty('android.enableShrinkResourcesInReleaseBuilds') ?: 'false'
shrinkResources enableShrinkResources.toBoolean()
minifyEnabled enableMinifyInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true)
def enablePngCrunchInRelease = findProperty('android.enablePngCrunchInReleaseBuilds') ?: 'true'
crunchPngs enablePngCrunchInRelease.toBoolean()
}
}
packagingOptions {
jniLibs {
useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false)
def enableLegacyPackaging = findProperty('expo.useLegacyPackaging') ?: 'false'
useLegacyPackaging enableLegacyPackaging.toBoolean()
}
}
androidResources {
@ -167,15 +194,15 @@ dependencies {
if (isGifEnabled) {
// For animated gif support
implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}")
implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}")
}
if (isWebpEnabled) {
// For webp support
implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}")
implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}")
if (isWebpAnimatedEnabled) {
// Animated webp support
implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}")
implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}")
}
}
@ -184,4 +211,7 @@ dependencies {
} else {
implementation jscFlavor
}
// Include only FFmpeg decoder AAR to avoid duplicates with Maven Media3
implementation files("libs/lib-decoder-ffmpeg-release.aar")
}

Binary file not shown.

View file

@ -12,3 +12,17 @@
-keep class com.facebook.react.turbomodule.** { *; }
# Add any project specific keep options here:
# Media3 / ExoPlayer keep (extensions and reflection)
-keep class androidx.media3.** { *; }
-dontwarn androidx.media3.**
# FastImage / Glide ProGuard rules
-keep public class com.dylanvann.fastimage.* {*;}
-keep public class com.dylanvann.fastimage.** {*;}
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}

View file

@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" tools:replace="android:usesCleartextTraffic" />
</manifest>

View file

@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<queries>
<intent>
<action android:name="android.intent.action.VIEW"/>
@ -12,11 +13,13 @@
<data android:scheme="https"/>
</intent>
</queries>
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true">
<meta-data android:name="expo.modules.updates.ENABLED" android:value="false"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
<activity android:name=".MainActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true" android:screenOrientation="unspecified">
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true" android:enableOnBackInvokedCallback="false">
<meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
<meta-data android:name="expo.modules.updates.EXPO_RUNTIME_VERSION" android:value="@string/expo_runtime_version"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ERROR_RECOVERY_ONLY"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="30000"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://grim-reyna-tapframe-69970143.koyeb.app/api/manifest"/>
<activity android:name=".MainActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode|locale|layoutDirection" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true" android:screenOrientation="unspecified">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
@ -25,8 +28,7 @@
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="stremioexpo"/>
<data android:scheme="com.nuvio.app"/>
<data android:scheme="nuvio"/>
<data android:scheme="exp+nuvio"/>
</intent-filter>
</activity>

View file

@ -5,13 +5,13 @@ import android.content.res.Configuration
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.ReactHost
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.common.ReleaseLevel
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import expo.modules.ApplicationLifecycleDispatcher
import expo.modules.ReactNativeHostWrapper
@ -19,21 +19,19 @@ import expo.modules.ReactNativeHostWrapper
class MainApplication : Application(), ReactApplication {
override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(
this,
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> {
val packages = PackageList(this).packages
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
return packages
}
this,
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
}
override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry"
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}
)
@ -42,11 +40,12 @@ class MainApplication : Application(), ReactApplication {
override fun onCreate() {
super.onCreate()
SoLoader.init(this, OpenSourceMergedSoMapping)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load()
DefaultNewArchitectureEntryPoint.releaseLevel = try {
ReleaseLevel.valueOf(BuildConfig.REACT_NATIVE_RELEASE_LEVEL.uppercase())
} catch (e: IllegalArgumentException) {
ReleaseLevel.STABLE
}
loadReactNative(this)
ApplicationLifecycleDispatcher.onApplicationCreate(this)
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -3,4 +3,5 @@
<color name="iconBackground">#020404</color>
<color name="colorPrimary">#023c69</color>
<color name="colorPrimaryDark">#020404</color>
<color name="activityBackground">#020404</color>
</resources>

View file

@ -3,4 +3,5 @@
<string name="expo_splash_screen_resize_mode" translatable="false">contain</string>
<string name="expo_splash_screen_status_bar_translucent" translatable="false">false</string>
<string name="expo_system_ui_user_interface_style" translatable="false">dark</string>
<string name="expo_runtime_version">1.2.6</string>
</resources>

View file

@ -1,15 +1,10 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:textColor">@android:color/black</item>
<item name="android:editTextStyle">@style/ResetEditText</item>
<style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
<item name="android:enforceNavigationBarContrast" tools:targetApi="29">true</item>
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="android:statusBarColor">#020404</item>
</style>
<style name="ResetEditText" parent="@android:style/Widget.EditText">
<item name="android:padding">0dp</item>
<item name="android:textColorHint">#c8c8c8</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:windowBackground">@color/activityBackground</item>
</style>
<style name="Theme.App.SplashScreen" parent="AppTheme">
<item name="android:windowBackground">@drawable/ic_launcher_background</item>

View file

@ -1,41 +1,24 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = findProperty('android.buildToolsVersion') ?: '35.0.0'
minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '24')
compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '35')
targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34')
kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.25'
ndkVersion = "26.1.10909125"
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath('com.android.tools.build:gradle')
classpath('com.facebook.react:react-native-gradle-plugin')
classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath('com.android.tools.build:gradle')
classpath('com.facebook.react:react-native-gradle-plugin')
classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
}
}
apply plugin: "com.facebook.react.rootproject"
allprojects {
repositories {
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android'))
}
maven {
// Android JSC is installed from npm
url(new File(['node', '--print', "require.resolve('jsc-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), '../dist'))
}
google()
mavenCentral()
maven { url 'https://www.jitpack.io' }
}
repositories {
google()
mavenCentral()
maven { url 'https://www.jitpack.io' }
}
}
apply plugin: "expo-root-project"
apply plugin: "com.facebook.react.rootproject"

View file

@ -10,12 +10,12 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
@ -41,6 +41,11 @@ newArchEnabled=true
# If set to false, you will be using JSC instead.
hermesEnabled=true
# Use this property to enable edge-to-edge display support.
# This allows your app to draw behind system bars for an immersive UI.
# Note: Only works with ReactActivity and should not be used with custom Activity.
edgeToEdgeEnabled=true
# Enable GIF support in React Native images (~200 B increase)
expo.gif.enabled=true
# Enable webp support in React Native images (~85 KB increase)
@ -54,3 +59,7 @@ EX_DEV_CLIENT_NETWORK_INSPECTOR=true
# Use legacy packaging to compress native libraries in the resulting APK.
expo.useLegacyPackaging=false
# Specifies whether the app is configured to use edge-to-edge via the app config or plugin
# WARNING: This property has been deprecated and will be removed in Expo SDK 55. Use `edgeToEdgeEnabled` or `react.edgeToEdgeEnabled` to determine whether the project is using edge-to-edge.
expo.edgeToEdgeEnabled=true

Binary file not shown.

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

7
android/gradlew vendored Normal file → Executable file
View file

@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -115,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.

4
android/gradlew.bat vendored
View file

@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell

View file

@ -1,38 +1,39 @@
pluginManagement {
includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().toString())
def reactNativeGradlePlugin = new File(
providers.exec {
workingDir(rootDir)
commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })")
}.standardOutput.asText.get().trim()
).getParentFile().absolutePath
includeBuild(reactNativeGradlePlugin)
def expoPluginsPath = new File(
providers.exec {
workingDir(rootDir)
commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })")
}.standardOutput.asText.get().trim(),
"../android/expo-gradle-plugin"
).absolutePath
includeBuild(expoPluginsPath)
}
plugins {
id("com.facebook.react.settings")
id("expo-autolinking-settings")
}
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') {
ex.autolinkLibrariesFromCommand()
} else {
def command = [
'node',
'--no-warnings',
'--eval',
'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))',
'react-native-config',
'--json',
'--platform',
'android'
].toList()
ex.autolinkLibrariesFromCommand(command)
ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand)
}
}
expoAutolinking.useExpoModules()
rootProject.name = 'Nuvio'
dependencyResolutionManagement {
versionCatalogs {
reactAndroidLibs {
from(files(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../gradle/libs.versions.toml")))
}
}
}
apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
useExpoModules()
expoAutolinking.useExpoVersionCatalog()
include ':app'
includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile())
includeBuild(expoAutolinking.reactNativeGradlePlugin)

View file

@ -2,20 +2,22 @@
"expo": {
"name": "Nuvio",
"slug": "nuvio",
"version": "1.0.0",
"version": "1.2.6",
"orientation": "default",
"backgroundColor": "#020404",
"icon": "./assets/ios/AppIcon.appiconset/Icon-App-60x60@3x.png",
"userInterfaceStyle": "dark",
"scheme": "stremioexpo",
"scheme": "nuvio",
"newArchEnabled": true,
"splash": {
"image": "./assets/splash-icon.png",
"image": "./src/assets/splash-icon-new.png",
"resizeMode": "contain",
"backgroundColor": "#020404"
},
"ios": {
"supportsTablet": true,
"icon": "./assets/ios/AppIcon.appiconset/Icon-App-60x60@3x.png",
"buildNumber": "21",
"infoPlist": {
"NSAppTransportSecurity": {
"NSAllowsArbitraryLoads": true
@ -32,7 +34,8 @@
"UIFileSharingEnabled": true
},
"bundleIdentifier": "com.nuvio.app",
"associatedDomains": []
"associatedDomains": [],
"jsEngine": "hermes"
},
"android": {
"adaptiveIcon": {
@ -45,17 +48,16 @@
"WAKE_LOCK"
],
"package": "com.nuvio.app",
"versionCode": 1,
"versionCode": 21,
"architectures": [
"arm64-v8a",
"armeabi-v7a",
"x86",
"x86_64"
]
},
"web": {
"favicon": "./assets/favicon.png"
],
"jsEngine": "hermes"
},
"extra": {
"eas": {
"projectId": "909107b8-fe61-45ce-b02f-b02510d306a6"
@ -71,7 +73,28 @@
"organization": "tapframe"
}
],
"expo-localization"
]
"expo-localization",
[
"expo-updates",
{
"username": "nayifleo"
}
],
[
"expo-libvlc-player",
{
"localNetworkPermission": "Allow $(PRODUCT_NAME) to access your local network",
"supportsBackgroundPlayback": true
}
],
"react-native-bottom-tabs"
],
"updates": {
"enabled": true,
"checkAutomatically": "ON_ERROR_RECOVERY",
"fallbackToCacheTimeout": 30000,
"url": "https://grim-reyna-tapframe-69970143.koyeb.app/api/manifest"
},
"runtimeVersion": "1.2.6"
}
}

1
app/Streams.tsx Normal file
View file

@ -0,0 +1 @@

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1 @@
{"version":"1","generator":"@dotlottie/dotlottie-js@1.2.0","author":"@dotlottie/dotlottie-js@1.2.0","animations":[{"id":"7e326d80-25fe-4203-94a1-718eb3177efe","playMode":"normal"}]}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#151515</color>
<color name="ic_launcher_background">#2f2f2f</color>
</resources>

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController modalTransitionStyle="crossDissolve" id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" autoresizesSubviews="NO" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView autoresizesSubviews="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="BootSplashLogo-7d142f" translatesAutoresizingMaskIntoConstraints="NO" id="3lX-Ut-9ad">
<rect key="frame" x="127.5" y="273.5" width="120" height="120"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" image="YES" notEnabled="YES"/>
</accessibility>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
<color key="backgroundColor" name="BootSplashBackground-7d142f"/>
<constraints>
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="Fh9-Fy-1nT"/>
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="nvB-Ic-PnI"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="0.0" y="0.0"/>
</scene>
</scenes>
<resources>
<image name="BootSplashLogo-7d142f" width="120" height="120"/>
<namedColor name="BootSplashBackground-7d142f">
<color red="0.00784313725490196" green="0.0156862745098039" blue="0.0156862745098039" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
</resources>
</document>

View file

@ -0,0 +1,20 @@
{
"colors": [
{
"idiom": "universal",
"color": {
"color-space": "srgb",
"components": {
"blue": "0.0156862745098039",
"green": "0.0156862745098039",
"red": "0.00784313725490196",
"alpha": "1.000"
}
}
}
],
"info": {
"author": "xcode",
"version": 1
}
}

View file

@ -0,0 +1,23 @@
{
"images": [
{
"idiom": "universal",
"filename": "logo-7d142f.png",
"scale": "1x"
},
{
"idiom": "universal",
"filename": "logo-7d142f@2x.png",
"scale": "2x"
},
{
"idiom": "universal",
"filename": "logo-7d142f@3x.png",
"scale": "3x"
}
],
"info": {
"author": "xcode",
"version": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 718 B

After

Width:  |  Height:  |  Size: 785 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Some files were not shown because too many files have changed in this diff Show more