diff --git a/.github/actions/setup-node/action.yml b/.github/actions/setup-node/action.yml index ec4ef52a67..03010edc19 100644 --- a/.github/actions/setup-node/action.yml +++ b/.github/actions/setup-node/action.yml @@ -13,7 +13,7 @@ runs: - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: 18.x + node-version: 20.x - name: Cache dependencies id: yarn-cache diff --git a/.github/scripts/validate.js b/.github/scripts/validate.js index 6f4cb3d049..59a8776abf 100644 --- a/.github/scripts/validate.js +++ b/.github/scripts/validate.js @@ -25,28 +25,40 @@ const BOT_LABELS = [ 'Missing Repro', 'Waiting for Review', 'Newer Version Available', + '6.x.x', + '7.0', ...Object.values(PLATFORM_LABELS), ]; const SKIP_LABEL = 'No Validation'; +const ISSUE_BOOST_INFO = (issueNumber) => ` +Need faster resolution? Consider [Issue Boost](https://www.thewidlarzgroup.com/issue-boost/?utm_source=rnv&utm_medium=bug-report&utm_campaign=bot-message&utm_id=${issueNumber}) – it allows us to dedicate time specifically to your issue and fix it faster πŸš€`; + const MESSAGE = { - FEATURE_REQUEST: `Thanks for the feature request! Check out our roadmap [here](https://github.com/TheWidlarzGroup/react-native-video/discussions/3351). If your request is already there – great! If not, give us some time, and we'll get back to you with information on when TheWidlarzGroup can address it as part of our free open-source support. Alternatively, [contact us](https://www.thewidlarzgroup.com/?utm_source=rnv&utm_medium=feature-request&utm_campaign=bot&utm_id=bot-message#Contact) to discuss ways to speed up the process.`, - BUG_REPORT: `Thank you for your bug report. We will review it and get back to you if we need more information.`, + FEATURE_REQUEST: (issueNumber) => `Thanks for the feature request! πŸš€ + \nYou can check out our [public roadmap](https://github.com/orgs/TheWidlarzGroup/projects/6) to see what we're currently working on. All requests are automatically added there, so you can track progress anytime. + \nWe review and implement new features when time allows, but this can take a while. If you'd like to speed things up and make this a priority, consider [Issue Boost](https://www.thewidlarzgroup.com/issue-boost/?utm_source=rnv&utm_medium=feature-request&utm_campaign=bot-message&utm_id=${issueNumber}), our commercial option that lets us dedicate time specifically to your request. + \nThanks for your input and patience! πŸ™Œ`, + BUG_REPORT: (issueNumber) => `Hey! πŸ‘‹ + Thanks for reporting this issue. We try to fix bugs as quickly as possible, but since our time is limited, we prioritize sponsored issues first, then focus on critical problems affecting many users, and finally, we handle other reports when we can. Some issues might take a while to be resolved. + \nIf you want to speed up this process, check out [Issue Boost](https://www.thewidlarzgroup.com/issue-boost/?utm_source=rnv&utm_medium=bug-report&utm_campaign=bot-message-valid&utm_id=${issueNumber}) – it allows us to dedicate time specifically to your issue and fix it faster. + \nThanks for your patience and support! πŸš€`, MISSING_INFO: (missingFields) => { - return `Thank you for your issue report. Please note that the following information is missing or incomplete:\n\n${missingFields + return `Hey! πŸ‘‹ + Thanks for the bug report. To help us resolve your issue effectively, we still need some key information:\n\n${missingFields .map((field) => `- ${field.replace('missing-', '')}`) - .join( - '\n', - )}\n\nPlease update your issue with this information to help us address it more effectively. - \n > Note: issues without complete information have a lower priority`; + .join('\n')} + + Please edit your issue and fill in the missing details. + > Issues with incomplete info are treated with lower priority, so this helps speed things up.`; }, OUTDATED_VERSION: (issueVersion, latestVersion) => { return ( - `There is a newer version of the library available. ` + - `You are using version ${issueVersion}, while the latest stable version is ${latestVersion}. ` + - `Please update to the latest version and check if the issue still exists.` + - `\n > Note: If the issue still exists, please update the issue report with the latest information.` + `Heads up! ⚠️ You're using version **${issueVersion}**, but the latest stable version is **${latestVersion}**. ` + + `Please update to the newest version and check if the issue still occurs.\n\n` + + `> Keeping your dependencies up-to-date often resolves many common problems.` + + `\n\nStill having the issue after upgrading? Update the report with the new version details so we can investigate.` ); }, }; @@ -114,6 +126,17 @@ const validateBugReport = async (body, labels) => { if (!isVersionValid) { labels.add('missing-version'); + } else { + // Add version-specific labels + const versionMatch = words.find((word) => versionPattern.test(word)); + if (versionMatch) { + const majorVersion = versionMatch.split('.')[0]; + if (majorVersion === '6') { + labels.add('6.x.x'); + } else if (majorVersion === '7') { + labels.add('7.0'); + } + } } const latestVersion = await checkLatestVersion(); @@ -178,7 +201,8 @@ const handleIssue = async ({github, context}) => { const handleFeatureRequest = async ({github, context, body, labels}) => { validateFeatureRequest(body, labels); - const comment = MESSAGE.FEATURE_REQUEST; + const comment = MESSAGE.FEATURE_REQUEST(context.payload.issue.number); + await hidePreviousComments({github, context}); await createComment({github, context, body: comment}); }; @@ -212,6 +236,8 @@ const handleMissingInformation = async ({github, context, labels}) => { )}`; } + comment += `\n\n${ISSUE_BOOST_INFO(context.payload.issue.number)}`; + await hidePreviousComments({github, context}); await createComment({github, context, body: comment}); } @@ -220,7 +246,7 @@ const handleMissingInformation = async ({github, context, labels}) => { }; const handleValidReport = async ({github, context, labels}) => { - let comment = MESSAGE.BUG_REPORT; + let comment = MESSAGE.BUG_REPORT(context.payload.issue.number); const outdatedVersionLabel = Array.from(labels).find((label) => label.startsWith('outdated-version'), diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index 5e0759aac4..126cb54cac 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -190,11 +190,14 @@ jobs: restore-keys: | ${{ runner.os }}-pods- + - name: Install gem dependencies + run: bundle install + - name: Generate Native Project - run: export RNV_SAMPLE_VIDEO_CACHING=true && pod install + run: export RNV_SAMPLE_VIDEO_CACHING=true && bundle exec pod install - name: Install Pods - run: export RNV_SAMPLE_VIDEO_CACHING=true && pod install + run: export RNV_SAMPLE_VIDEO_CACHING=true && bundle exec pod install - name: Install xcpretty run: gem install xcpretty diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml deleted file mode 100644 index 2c9c3ac71a..0000000000 --- a/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,46 +0,0 @@ - -name: deploy docs -on: - workflow_dispatch: - push: - branches: - - master - paths: - - '.github/workflows/deploy-docs.yml' - - 'docs/**' - -jobs: - deploy-docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup - uses: ./.github/actions/setup-bun - with: - working-directory: ./docs - - - name: Cache build - uses: actions/cache@v4 - with: - path: | - docs/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }}-${{ hashFiles('**/package.json') }} - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }} - ${{ runner.os }}-nextjs- - - - name: Build docs - run: | - bun --cwd docs build - touch docs/out/.nojekyll - - - name: Deploy docs to GitHub Pages - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: docs/out - -permissions: - contents: write \ No newline at end of file diff --git a/.github/workflows/test-build-docs.yml b/.github/workflows/test-build-docs.yml deleted file mode 100644 index 052814c81f..0000000000 --- a/.github/workflows/test-build-docs.yml +++ /dev/null @@ -1,35 +0,0 @@ - -name: Test Docs build -on: - workflow_dispatch: - pull_request: - paths: - - '.github/workflows/test-build-docs.yml' - - 'docs/**' - -jobs: - build-docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup - uses: ./.github/actions/setup-bun - with: - working-directory: ./docs - - - name: Cache build - uses: actions/cache@v4 - with: - path: | - docs/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }}-${{ hashFiles('**/package.json') }} - restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }} - ${{ runner.os }}-nextjs- - - - name: Build docs - run: | - bun --cwd docs build - touch docs/out/.nojekyll \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..fc49386465 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "examples/react-native-offline-video-download-starter"] + path = examples/react-native-offline-video-download-starter + url = https://github.com/TheWidlarzGroup/react-native-offline-video-starter.git + branch = main diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f3a89842a..36cf9a8bcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,70 @@ +## [6.16.1](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.16.0...v6.16.1) (2025-07-08) + +# [6.16.0](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.15.0...v6.16.0) (2025-07-02) + + +### Bug Fixes + +* **android:** create custom event class for dispatcher ([#4575](https://github.com/TheWidlarzGroup/react-native-video/issues/4575)) ([94967fc](https://github.com/TheWidlarzGroup/react-native-video/commit/94967fc4a61e00c521242d29fd28bed13bbba7c4)) +* **android:** speed control is not applied ([#4572](https://github.com/TheWidlarzGroup/react-native-video/issues/4572)) ([b56b647](https://github.com/TheWidlarzGroup/react-native-video/commit/b56b647d85aa24df2ba2ad436eb5ada67735417f)) +* **ios:** allow audio mixing when none of the players are playing ([#4579](https://github.com/TheWidlarzGroup/react-native-video/issues/4579)) ([2d7e039](https://github.com/TheWidlarzGroup/react-native-video/commit/2d7e03942d5e2525e5c71dc914926ba07f67d54a)) +* **ios:** retain cycle and memory leak involving the RCTVideo instance when using Google IMA ads in react-native-video. ([#4574](https://github.com/TheWidlarzGroup/react-native-video/issues/4574)) ([b51b579](https://github.com/TheWidlarzGroup/react-native-video/commit/b51b579ff00067231fb1d0754e1a86692f44bc50)) + + +### Features + +* **android:** replace custom VideoView with media3 `PlayerView` ([#4581](https://github.com/TheWidlarzGroup/react-native-video/issues/4581)) ([978683b](https://github.com/TheWidlarzGroup/react-native-video/commit/978683b64582e6363d7b5a1817e22fec342d1c47)) + +# [6.15.0](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.14.1...v6.15.0) (2025-06-12) + + +### Bug Fixes + +* **web:** add missing component type ([9f03cc5](https://github.com/TheWidlarzGroup/react-native-video/commit/9f03cc5a0983e05515d3d194204a7c9eb71b383d)) + + +### Features + +* allow audio mixing if one of the video views require it ([#4559](https://github.com/TheWidlarzGroup/react-native-video/issues/4559)) ([3576a13](https://github.com/TheWidlarzGroup/react-native-video/commit/3576a134e678e6273d9195d7a17c9828c30426e2)) +* **ios:** forward real fullscreen events from AVPlayer instead of guessing ([#4509](https://github.com/TheWidlarzGroup/react-native-video/issues/4509)) ([88c20d1](https://github.com/TheWidlarzGroup/react-native-video/commit/88c20d1c065b2778a66ddde4a3b92bd58bec043b)) +* **plugin:** overrideMediaSourceFactory ([#4566](https://github.com/TheWidlarzGroup/react-native-video/issues/4566)) ([9cf7802](https://github.com/TheWidlarzGroup/react-native-video/commit/9cf780276af7f0a890025a13e1685e49c6589f0e)) + +## [6.14.1](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.14.0...v6.14.1) (2025-05-28) + + +### Features + +* **android:** allow plugins to override drm session manager ([#4558](https://github.com/TheWidlarzGroup/react-native-video/issues/4558)) ([9449eb3](https://github.com/TheWidlarzGroup/react-native-video/commit/9449eb34f3ebcf7ac08bde1ee55e5cc26a142217)) + +# [6.14.0](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.13.0...v6.14.0) (2025-05-10) + + +### Bug Fixes + +* **ios:** default cropStart fallback ([#4540](https://github.com/TheWidlarzGroup/react-native-video/issues/4540)) ([ecfe12a](https://github.com/TheWidlarzGroup/react-native-video/commit/ecfe12aa816a3126e023d0c14896681d92fe8926)) +* **ios:** set `_isBuffering = true` only if newValue is also true ([#4532](https://github.com/TheWidlarzGroup/react-native-video/issues/4532)) ([089e938](https://github.com/TheWidlarzGroup/react-native-video/commit/089e938aebc222378f4d16006f585f20a8b0eed1)) +* **ios:** swfit modular headers ([#4527](https://github.com/TheWidlarzGroup/react-native-video/issues/4527)) ([987be4b](https://github.com/TheWidlarzGroup/react-native-video/commit/987be4b293dc21a40b0b183433707bc9a733b715)) + + +### Features + +* **web:** allow `style` prop overrides ([#4528](https://github.com/TheWidlarzGroup/react-native-video/issues/4528)) ([fc1e3f4](https://github.com/TheWidlarzGroup/react-native-video/commit/fc1e3f4fd17faf1503b6b3d7cc604dbe1bc659c1)) + +# [6.13.0](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.12.0...v6.13.0) (2025-04-18) + + +### Bug Fixes + +* **macCatalyst:** allowsVideoFrameAnalysis not available in catalyst until 18.0 ([#4515](https://github.com/TheWidlarzGroup/react-native-video/issues/4515)) ([b17c319](https://github.com/TheWidlarzGroup/react-native-video/commit/b17c319c32ad8080ad911ec4be7fa02bc4a6d6ee)) +* **tvos:** build ([#4511](https://github.com/TheWidlarzGroup/react-native-video/issues/4511)) ([4034046](https://github.com/TheWidlarzGroup/react-native-video/commit/40340467d7df2ad606f25606041630c489c385f6)) + + +### Features + +* **ios:** add `overridePlayerAsset` to `AVPlayerPlugin` ([#4522](https://github.com/TheWidlarzGroup/react-native-video/issues/4522)) ([b1b3db3](https://github.com/TheWidlarzGroup/react-native-video/commit/b1b3db301097e82c8d449c08f7d334a2eaeac0ea)) + # [6.12.0](https://github.com/TheWidlarzGroup/react-native-video/compare/v6.11.0...v6.12.0) (2025-04-06) diff --git a/README.md b/README.md index d16322a688..36f6108125 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,139 @@ -# react-native-video -🎬 `