2668 Commits

Author SHA1 Message Date
zoriya d3f4432a37 Merge master into web 2026-03-20 20:44:16 +01:00
Marc Rousavy a01d203bcb chore: Upgrade to Nitro 0.35.0 (#4849)
* chore: Upgrade to Nitro 0.35.0

* Replace `bigint` with `UInt64`

* chore: Regenerate specs now for Nitro 0.35.0

* fix: Use Int64 as it can be -1

* Remove unnecessary patches

* fix: change duration type to number

* fix: avoid mutating VideoInformation fields after init

* chore: regenerate specs with new duration type

* fix: use Double for duration in VideoInformation

* docs: react-native-nitro-modules version

* chore: update react-native-nitro-modules version (rnv & drm)

---------

Co-authored-by: fnwk <filip.wnek200@gmail.com>
2026-03-18 22:44:49 +01:00
Kamil Moskała 309c31e6bb chore: release v7.0.0-beta.8 2026-03-18 20:39:36 +01:00
Kamil Moskała f3382f97f4 fix: video in fullscreen freeze after swiping (#4858)
* fix: video in fullscreen freezing after swiping

* fix(ios): use optional chainin
2026-03-18 18:40:09 +01:00
Kamil Moskała 0a403dd62d fix(ios): stabilize NowPlaying controls (#4857)
* fix(ios): stabilize NowPlaying controls

* fix(ios): dispatch NowPlaying update to main thread (#4862)

* docs: remove comment (#4863)

* rename player with `_`
2026-03-18 18:35:42 +01:00
Kamil Moskała eccf78b650 chore: release 7.0.0-beta.7 2026-03-10 20:38:19 +01:00
Kamil Moskała 1b0726cf0e fix(ios): notification controls flow (#4854)
* fix(ios): load artwork asynchronously to unblock notification controls

* fix(ios): remove playback observer on player removal and guard artwork callback

* fix: cleaning up player

* refactor: `if` syntax

* fix: add missing cleaner

* fix: remove `rounded` from current time

* chore: update pod versions

* refactor(ios): use targeted update functions at each call site

* refactor(ios): use async/await to load artwork metadata

* fix(ios): update static now playing info after setting external metadata

* fix: find new player before updating playback state

* fix(ios): take over notification controls when registering an already-playing player

* fix(ios): clear stale artwork and guard against item change in async artwork load

* fix: guard notification controls updates against stale player item

* fix: update playback duration periodically to handle streams with initially unknown duration
2026-03-09 17:44:12 +01:00
robertert ddcb9e6dd9 fix(ios): fixed audio focus change on iOS (#4811)
* fix: fixed audio focus change on ios

* Fix formatting for audio session category options

---------

Co-authored-by: Kamil Moskała <91079590+moskalakamil@users.noreply.github.com>
2026-03-09 13:54:44 +01:00
Kamil Moskała e96d9565bd fix(ios): restore inline UI after PIP stop to prevent black screen (#4852)
* fix(ios): restore inline UI after PIP stop to prevent black screen

* fix: restore pip when view is attached
2026-03-09 12:32:44 +01:00
Kamil bb2debc566 chore: release 7.0.0-beta.6 2026-02-06 12:10:01 +01:00
Kamil Moskała 8da799832a fix(ios): notification controls (#4838)
* fix: update observer thread

* fix(ios): fix showNotificationControls not working when set during initialization

* fix(ios): set custom metadata on AVPlayerItem for now playing info

* refactor: warn when wront artwork url

* docs: update file header

* chore: warn when failed to load artwork image
2026-02-06 11:55:59 +01:00
Kamil Moskała a1cc9eb7e3 docs: change fundaments with fundamentals (#4836) 2026-02-04 20:25:35 +01:00
Kamil Moskała 0b273d16de docs: refactor tabs (#4827)
* docs: refactor tabs

* docs: update video-view docs

* docs: lowercase tabs

* feat(docs): add downloading section

* chore: add chapters example video

* docs: update sidebar type

* docs: update tab heading

* docs: add title to fundaments

* docs: lowercase plugin

* docs(sidebar): remove link to offline sdk

* docs: add `ads` tab

* chore: add `build` to eslint ignore

* docs: remove theme mermaid

* refactor: update deploy values

* chore: upper case tabs

* refactor: update configuration tabs name

* feat: add `ask for plugin` tab

* refactor: update analytics tab

* docs: update player class tip

* docs: make chapters paid

* docs: update utm's

* docs(downloading): update intro

* chore: bump `docusaurus-ui` package to 0.1.2

* fix: update paths

* docs: update dashes

* docs: update downloading events example imports

* docs: update readme

* docs: update case

* refactor: update intro & offer
2026-02-04 20:19:49 +01:00
EranK3 a7b2e970e3 fix(ios): prevent KVO crash in HybridVideoPlayer.release() (#4828)
* fix(ios): prevent KVO crash in HybridVideoPlayer.release()

Fix a crash that occurs when rapidly creating/destroying video players
(e.g., fast swiping through a FlatList of videos). The crash message is:
"Cannot remove an observer for the key path 'currentItem.status'"

Root cause:
When release() was called, it would set playerItem = nil and then
playerObserver = nil, which triggered the observer's deinit. However,
the KVO observers were still registered on the playerItem, causing
a crash when the system tried to remove them.

Solution:
1. Explicitly invalidate all KVO observers BEFORE changing any state
2. Change invalidatePlayerItemObservers() from private to internal
   so it can be called from HybridVideoPlayer.release()
3. Skip self.player.replaceCurrentItem(with: nil) which was also
   triggering the crash by changing currentItem while observers
   were still active

This ensures clean KVO removal before any state changes that could
interfere with the observer lifecycle.

* refactor: address review feedback - clean up comments and reorganize release()

- Remove verbose KVO CRASH FIX comments
- Move observer invalidation calls to "Clear player observer" section
- Restore replaceCurrentItem(with: nil) after observer cleanup

* refactor: reorder cleaners

---------

Co-authored-by: Eran Kaufman <eran@sefirot.io>
Co-authored-by: Kamil Moskała <91079590+moskalakamil@users.noreply.github.com>
2026-02-03 12:03:18 +01:00
Kamil 07a04a7df8 chore: release 7.0.0-beta.5 2026-02-03 00:16:51 +01:00
Kamil Moskała 5c8d73a545 fix(ios): handle fullscreen transition cancellation events (#4833) 2026-02-03 00:09:08 +01:00
Kamil Moskała 480ddfd715 fix: use correct languageCode on external subtitle (#4831) 2026-01-31 11:32:21 +01:00
Kamil b64c94faef chore: release 7.0.0-beta.4 2026-01-30 23:51:44 +01:00
Kamil Moskała d32406d786 fix: external subtitle asset composition (#4830)
* fix: external subtitle asset composition

* fix: filter for supported subtitles before adding them
2026-01-30 22:44:10 +01:00
Kamil ff93ea675e chore: release 7.0.0-beta.3 2026-01-22 12:09:42 +01:00
Kamil Moskała f6616272c4 chore: resolve lint & tsc errors (#4823) 2026-01-22 10:47:46 +01:00
Kamil Moskała b30eeef89c chore: resolve lint & tsc errors (#4823) 2026-01-22 00:20:06 +01:00
Kamil Moskała 86133e38cd fix: video not loading when external subtitles are malformed (#4822) 2026-01-21 23:37:51 +01:00
Kamil Moskała 28e295a6ee fix: access AudioFocusChangeListener on main thread (#4821) 2026-01-20 19:44:48 +01:00
Filip Wnęk 44812c29d0 docs: update README with feature descriptions and image size 2026-01-14 18:05:59 +01:00
Filip Wnęk 2a4f2da296 docs: add pro player banner to README (#4818) 2026-01-14 14:23:07 +01:00
Filip Wnęk 69b85ef51f feat: add Pro Player section to README (#4817) 2026-01-13 22:26:27 +01:00
Kamil Moskała 69f3dd9e31 docs: update landing page (#4807) 2025-12-29 20:52:14 +01:00
Kamil Moskała 6aaeebce8a docs: add eslint (#4805)
* docs: add eslint

* chore: remove @eslint/css

* feat(docs): add custom eslint rule for css variables

* ci: check lint on css changes in docs

* ci: update lefthook configuration
2025-12-24 00:07:13 +01:00
Kamil Moskała 84d7abb89f docs: restyle (#4803)
* docs: add twg theme

* docs: import theme css
2025-12-23 12:13:05 +01:00
Krzysztof Moch b2ea78bd45 docs: sync with branches changes 2025-12-22 12:32:29 +01:00
Krzysztof Moch 605feed68a chore: release 7.0.0-beta.2 2025-12-19 14:56:28 +01:00
Krzysztof Moch ff882c23d0 refactor: don't use nitro dispose (#4802) 2025-12-19 13:19:46 +01:00
Krzysztof Moch 1eb317a566 docs: update README 2025-12-18 13:23:31 +01:00
Thibault Capelli 00a6b19736 fix(android): local asset for android in release (#4784)
* fix: hermes path for android release

* chore: update bun.lock

* fix: handle raw ressources in Android release mode

* fix: replace custom AppContextHolder logic with NitroModules.applicationContext
2025-12-18 13:19:27 +01:00
Krzysztof Moch 39f88c8b05 chore: release 7.0.0-beta.1 2025-12-11 21:41:28 +01:00
Krzysztof Moch 3c9bae7741 refactor: events logic (#4798) 2025-12-11 17:38:23 +01:00
Krzysztof Moch 95ddeeb999 chore: release 7.0.0-beta.0 2025-12-09 18:33:21 +01:00
Krzysztof Moch 0f318bacbf chore: prepare for beta release (#4796) 2025-12-09 17:35:37 +01:00
Kamil Moskała caa17d0458 chore: release 7.0.0-alpha.12 (#4794) 2025-12-08 22:08:26 +01:00
Kamil Moskała 9db3e41575 fix(nitrogen): release build issue for plugins (#4793)
* chore: bump example version

* fix(nitrogen): release build with plugins issue

* refactor: create new nitrogen files
2025-12-08 21:26:26 +01:00
Krzysztof Moch 147df1801a chore: release 7.0.0-alpha.11 2025-11-30 15:46:42 +01:00
Krzysztof Moch 556d1bea4f fix: handles view not found error gracefully (#4788) 2025-11-30 15:42:31 +01:00
Krzysztof Moch 843c936fa0 chore: release 7.0.0-alpha.10 2025-11-23 15:19:30 +01:00
Krzysztof Moch 99d3861c8c fix(android): notification and app name retrieval (#4781) 2025-11-23 14:00:20 +01:00
Krzysztof Moch 72f0a56676 chore: remove console log 2025-11-16 18:33:09 +01:00
Krzysztof Moch fc360200ca chore: release 7.0.0-alpha.9 2025-11-16 18:29:55 +01:00
Krzysztof Moch 2e88f36a5a fix: player initialization bugs (#4775) 2025-11-16 18:27:59 +01:00
Alexander Tsirel 8ee914f1da fix(iOS): disable allowsVideoFrameAnalysis (#4643) 2025-11-11 14:06:33 +01:00
Krzysztof Moch b0ec47d58c fix(android): restore views after PiP exit (#4766) 2025-11-07 16:49:24 +01:00