Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
288 commits
Select commit Hold shift + click to select a range
13e9485
prepare release 0.40.0
Mar 20, 2025
296405a
Merge pull request #619 from bitmovin/release/v0.40.0
rolandkakonyi Mar 20, 2025
83e2ae1
bump changelog date to today
Mar 20, 2025
23a59ff
Merge pull request #620 from bitmovin/main
rolandkakonyi Mar 20, 2025
ac3b2cf
add unreleased section to CHANGELOG
rolandkakonyi Mar 21, 2025
96ecd5c
Align IMA dependency with Android player (#621)
krocard Mar 21, 2025
b0158f9
chore(ios): update ios player version to 3.86.0
Mar 27, 2025
66fc15d
Merge pull request #624 from bitmovin/update_ios_player_to_3.86.0
hawk23 Mar 28, 2025
385e4fd
Add DecoderConfig to Player (#622)
testcenter Mar 31, 2025
4686ba7
Upgrade react native screens (#626)
saravanans-github Apr 2, 2025
94cacfc
prepare release 0.41.0
Apr 2, 2025
9942405
Merge pull request #628 from bitmovin/release/v0.41.0
testcenter Apr 2, 2025
2561e3c
bump changelog date to today
Apr 2, 2025
4dbbd8b
Merge pull request #629 from bitmovin/main
testcenter Apr 2, 2025
56bd6d9
Add unreleased section to changelog
testcenter Apr 2, 2025
0e7b0da
chore(ios): update ios player version to 3.87.0
Apr 15, 2025
6cf1924
Merge pull request #631 from bitmovin/update_ios_player_to_3.87.0
rolandkakonyi Apr 15, 2025
a515ba4
chore(ios): update ios player version to 3.88.0
Apr 23, 2025
a8bcbda
Merge pull request #632 from bitmovin/update_ios_player_to_3.88.0
rolandkakonyi Apr 23, 2025
c542660
Update doc for media control config
hawk23 May 7, 2025
57feb46
chore(ios): update ios player version to 3.89.0
May 8, 2025
fdd604c
Merge pull request #635 from bitmovin/update_ios_player_to_3.89.0
rolandkakonyi May 9, 2025
3a8b5e1
Merge pull request #634 from bitmovin/feature/update-doc-for-media-co…
hawk23 May 9, 2025
21875b9
chore(android): update android player version to 3.109.0+jason
May 9, 2025
63b9a76
Add changelog
zigavehovec May 12, 2025
cddd997
Merge pull request #636 from bitmovin/update_android_player_to_3.109.…
zigavehovec May 12, 2025
99edc50
add media track role API definition
rolandkakonyi May 23, 2025
32e51d0
add ruby version file
rolandkakonyi May 23, 2025
abdb5cf
Merge branch 'feature/add-ruby-version-file' into feature/add-roles-A…
rolandkakonyi May 23, 2025
1e2f433
map roles on Android
rolandkakonyi May 23, 2025
c5d323e
Merge pull request #638 from bitmovin/feature/add-ruby-version-file
rolandkakonyi May 23, 2025
830062d
map characteristics on iOS
rolandkakonyi May 23, 2025
c2c8bf6
fix audio track API docs
rolandkakonyi May 23, 2025
bc646e1
refactor SubtitleFormat into a separate file
rolandkakonyi May 23, 2025
463b8d9
chore(android): update android player version to 3.111.0+jason
May 23, 2025
0b06bd1
add changelog entry
rolandkakonyi May 26, 2025
753f879
chore(ios): update ios player version to 3.90.0
May 26, 2025
958246a
Merge branch 'development' into update_ios_player_to_3.90.0
rolandkakonyi May 26, 2025
3d78641
add changelog entry
rolandkakonyi May 26, 2025
0ad5780
Merge pull request #641 from bitmovin/update_ios_player_to_3.90.0
rolandkakonyi May 26, 2025
c696b19
Merge branch 'development' into feature/add-roles-API-for-AudioTrack-…
rolandkakonyi May 26, 2025
70ba0a3
Update changelog
strangesource May 26, 2025
9752989
Merge branch 'development' into update_android_player_to_3.111.0+jason
strangesource May 26, 2025
3a28da2
Merge pull request #639 from bitmovin/update_android_player_to_3.111.…
strangesource May 26, 2025
691f04d
Clarify API docs
rolandkakonyi May 27, 2025
d057b2e
Improve changelog entry
rolandkakonyi May 28, 2025
e72b115
chore(android): update android player version to 3.112.0+jason
May 28, 2025
bd49b46
Merge pull request #640 from bitmovin/feature/add-roles-API-for-Audio…
rolandkakonyi Jun 2, 2025
3d1bb03
Update changelog
strangesource Jun 2, 2025
6692846
Merge pull request #642 from bitmovin/update_android_player_to_3.112.…
strangesource Jun 2, 2025
c8e79a9
prepare release 0.42.0
Jun 2, 2025
563060c
Merge pull request #643 from bitmovin/release/v0.42.0
rolandkakonyi Jun 2, 2025
95a57c9
bump changelog date to today
Jun 2, 2025
49fdac4
Merge pull request #644 from bitmovin/main
rolandkakonyi Jun 2, 2025
b112f9c
Add empty Unreleased section to CHANGELOG.md
rolandkakonyi Jun 2, 2025
644cd08
chore(ios): update ios player version to 3.91.0
Jun 16, 2025
31dc79e
Merge pull request #646 from bitmovin/update_ios_player_to_3.91.0
rolandkakonyi Jun 16, 2025
b1625dc
chore(android): update android player version to 3.114.0+jason
Jun 18, 2025
9c7276e
Add audioQuality to audioTrack
testcenter Jun 24, 2025
05b670b
chore(ios): update ios player version to 3.92.0
Jun 24, 2025
be815e4
Merge pull request #648 from bitmovin/update_ios_player_to_3.92.0
rolandkakonyi Jun 24, 2025
53ba728
Specify kotlin gradle plugin version
zigavehovec Jun 25, 2025
f6dbc45
Fix kotlin gradle plugin for integration tests
zigavehovec Jun 25, 2025
b1936f3
Add changelog
zigavehovec Jun 25, 2025
9b8d094
Revert "Add changelog"
zigavehovec Jun 25, 2025
844c9b5
Add changelog
zigavehovec Jun 25, 2025
bf9d78e
Merge pull request #647 from bitmovin/update_android_player_to_3.114.…
zigavehovec Jun 25, 2025
06eca56
Merge branch 'development' into PRN-171/AudioQuality
zigavehovec Jun 27, 2025
c516067
Add missing fields + improve comments
zigavehovec Jun 27, 2025
7e77ecb
Format + log audio track events
zigavehovec Jun 27, 2025
4f5b77a
Add changelog
zigavehovec Jun 27, 2025
42ad53e
Add tests
zigavehovec Jun 27, 2025
98d7f6d
Format tests
zigavehovec Jun 27, 2025
0527830
chore(android): update android player version to 3.115.0+jason
Jun 27, 2025
7a42384
Merge pull request #650 from bitmovin/PRN-171/AudioQuality
zigavehovec Jun 30, 2025
6893ec2
Update Changelog
zigavehovec Jun 30, 2025
e2d9d26
Merge pull request #651 from bitmovin/update_android_player_to_3.115.…
zigavehovec Jun 30, 2025
5f5c0f6
prepare release 0.43.0
Jun 30, 2025
5337fb8
Update CHANGELOG.md
zigavehovec Jun 30, 2025
8456a9a
Merge pull request #652 from bitmovin/release/v0.43.0
zigavehovec Jun 30, 2025
8f78793
bump changelog date to today
Jun 30, 2025
a57fd6e
Merge pull request #653 from bitmovin/main
zigavehovec Jun 30, 2025
fe4a9ef
Add Unreleased to changleog
zigavehovec Jun 30, 2025
6cdd21b
chore(ios): update ios player version to 3.92.1
Jul 4, 2025
47f46b7
Merge pull request #654 from bitmovin/update_ios_player_to_3.92.1
rolandkakonyi Jul 4, 2025
7da3a84
chore(android): update android player version to 3.117.0+jason
Jul 8, 2025
a883adc
Add changelog entry
strangesource Jul 8, 2025
5bdca70
Merge pull request #656 from bitmovin/update_android_player_to_3.117.…
strangesource Jul 8, 2025
6ef04de
add expect helper for integration tests and add more tests
rolandkakonyi Jul 10, 2025
29ff3a3
chore(ios): update ios player version to 3.93.0
Jul 10, 2025
f619d33
Add iOS SDK `3.93.0` update entry
123mpozzi Jul 10, 2025
dafaa89
Merge pull request #657 from bitmovin/update_ios_player_to_3.93.0
123mpozzi Jul 10, 2025
64ca3fc
Merge remote branch 'origin/development' into feature/add-expect-to-i…
rolandkakonyi Jul 14, 2025
8f9b7f0
chore(android): update android player version to 3.118.0+jason
Jul 14, 2025
1dd9e14
Add null safety check to 2 getMap calls to allow compatibility with r…
joshreed104 Jul 15, 2025
59ea3f2
Updates CHANGELOG.md
joshreed104 Jul 15, 2025
be063a9
address feedback
rolandkakonyi Jul 14, 2025
5c73c01
Add missing await
rolandkakonyi Jul 15, 2025
2189da1
Add missing await
rolandkakonyi Jul 15, 2025
cab61e9
fix casting
rolandkakonyi Jul 15, 2025
790679e
implement unified assert helper for internal expect usage
rolandkakonyi Jul 15, 2025
6b8cb20
Merge branch 'feature/add-expect-to-integration-tests' of github.com:…
rolandkakonyi Jul 15, 2025
ac817fe
Add type check to toBeCloseTo method in Expect helper
rolandkakonyi Jul 15, 2025
af7efa2
Improve type safety in Expect helper methods
rolandkakonyi Jul 15, 2025
dc0deb8
add deep equal support and other improvements to expect
rolandkakonyi Jul 15, 2025
3b93a8f
rename toBeNotNull to toNotBeNull
rolandkakonyi Jul 15, 2025
4745f20
fix linting and formatting
rolandkakonyi Jul 15, 2025
36b8fcb
Merge branch 'development' into feature/add-expect-to-integration-tests
rolandkakonyi Jul 15, 2025
ba5b276
Add toNotEqual assertion method to Expect helper
rolandkakonyi Jul 15, 2025
6ad3ea5
fix audio track tests
rolandkakonyi Jul 15, 2025
aa84890
improve integration testing
rolandkakonyi Jul 15, 2025
8faf3e7
Merge branch 'development' into feature/add-expect-to-integration-tests
rolandkakonyi Jul 15, 2025
2893ad5
add promise type checks
rolandkakonyi Jul 16, 2025
2a6b467
Merge pull request #658 from bitmovin/feature/add-expect-to-integrati…
rolandkakonyi Jul 17, 2025
ef1d432
Update CHANGELOG.md
matamegger Jul 18, 2025
7b2f33a
Merge pull request #660 from joshreed104/feature/readable-map-null-check
matamegger Jul 18, 2025
26e26f2
fix(android): remove usaged of no longer existing experimental flag
matamegger Jul 22, 2025
da327b7
chore: add changelog entry
matamegger Jul 22, 2025
fb47270
Merge pull request #659 from bitmovin/update_android_player_to_3.118.…
matamegger Jul 22, 2025
f9f1d6e
chore: exclude cocoapods cach from swiftlint
matamegger Jul 25, 2025
eeb8f4d
prepare release 0.44.0
Jul 25, 2025
8847f04
Merge pull request #662 from bitmovin/release/v0.44.0
matamegger Jul 25, 2025
f22ae51
bump changelog date to today
Jul 25, 2025
2cf8b93
Merge pull request #663 from bitmovin/main
matamegger Jul 25, 2025
d023945
chore(android): update android player version to 3.119.0+jason
Jul 25, 2025
6193914
Merge pull request #664 from bitmovin/update_android_player_to_3.119.…
matamegger Jul 25, 2025
3b2b683
chore(ios): update ios player version to 3.94.0
Jul 29, 2025
ba35aad
Merge pull request #667 from bitmovin/update_ios_player_to_3.94.0
rolandkakonyi Jul 29, 2025
ea0eea8
add alpha release support
rolandkakonyi Jul 29, 2025
8721565
Merge pull request #668 from bitmovin/feature/add-alpha-release-support
rolandkakonyi Jul 29, 2025
17a777c
chore(release): alpha release 0.44.1-alpha.0
Jul 29, 2025
6fb4a2e
skip git hooks on CI when committing
rolandkakonyi Jul 29, 2025
b69afef
Expo support (#661)
rolandkakonyi Aug 4, 2025
975bcb7
prepare release 1.0.0
Aug 4, 2025
1c56292
Merge pull request #670 from bitmovin/release/v1.0.0
rolandkakonyi Aug 4, 2025
865bead
bump changelog date to today
Aug 4, 2025
f634518
Merge pull request #671 from bitmovin/main
rolandkakonyi Aug 4, 2025
8a29704
udpate player versions on both v0 and v1
rolandkakonyi Aug 4, 2025
32a95bf
fix PR base
rolandkakonyi Aug 4, 2025
205af7d
Update CHANGELOG.md with platform min. version change announcements f…
rolandkakonyi Aug 4, 2025
8bce755
remove unnecessary step
rolandkakonyi Aug 4, 2025
2e739a5
improve job naming
rolandkakonyi Aug 4, 2025
931d97b
fix conflicting branch names
rolandkakonyi Aug 4, 2025
0162f33
Bump form-data from 4.0.3 to 4.0.4
dependabot[bot] Aug 4, 2025
dac5c58
Update CONTRIBUTING.md for development setup
rolandkakonyi Aug 4, 2025
ce2022e
Update CONTRIBUTING.md
rolandkakonyi Aug 4, 2025
cf729e4
Improve formatting of CONTRIBUTING.md
rolandkakonyi Aug 4, 2025
d6fba5e
Merge pull request #678 from bitmovin/dependabot/npm_and_yarn/form-da…
rolandkakonyi Aug 4, 2025
515a517
Update README.md
rolandkakonyi Aug 4, 2025
929f1d5
Update README.md with troubleshooting steps
rolandkakonyi Aug 4, 2025
da30736
update outdated macos version for GitHub Actions runners
rolandkakonyi Aug 4, 2025
04054fa
remove backup file during release process
rolandkakonyi Aug 4, 2025
3d2f1f5
Merge remote-tracking branch 'origin/development' into feature/open-p…
rolandkakonyi Aug 4, 2025
1ab7e28
adapt finish release to allow both v0 and v1 releases
rolandkakonyi Aug 4, 2025
11accf5
Merge pull request #672 from bitmovin/feature/open-player-update-PRs-…
rolandkakonyi Aug 5, 2025
8d6fdcf
fix regex in updating player dependencies
rolandkakonyi Aug 5, 2025
f084073
fix branch filter to support development-v0
rolandkakonyi Aug 5, 2025
ae02a8e
Merge branch 'development' of github.com:bitmovin/bitmovin-player-rea…
rolandkakonyi Aug 5, 2025
81e20ce
feat: optimize iOS/tvOS CI with aggressive caching strategy
rolandkakonyi Aug 5, 2025
6dcd43a
fix: use original yarn build commands for reliability
Aug 5, 2025
4a61d48
feat: optimize tvOS build to share setup with iOS
Aug 5, 2025
4166d8a
chore: remove inline comments from workflow
Aug 5, 2025
959a302
chore: remove debug logging and trivial comments
Aug 6, 2025
024b3dc
fix: improve CI workflow based on feedback
Aug 6, 2025
81fb685
feat: optimize Android CI build performance (#681)
rolandkakonyi Aug 6, 2025
e3023b6
Merge remote-tracking branch 'origin/development' into feature/speed-…
Aug 6, 2025
73426d4
feat: implement comprehensive iOS optimization based on Android success
Aug 6, 2025
71b7534
refactor: use environment variables for xcodebuild arguments
Aug 6, 2025
d222904
fix: correct XCODEBUILD_ARGS quoting in CI workflow
Aug 6, 2025
b1ac2e0
fix: remove hardcoded destination from build scripts
Aug 6, 2025
d39402a
fix: use eval to handle XCODEBUILD_ARGS with proper quoting
Aug 6, 2025
b06d5ea
fix: remove conflicting -arch parameter from XCODEBUILD_ARGS
Aug 6, 2025
c09fb86
perf: increase timeout and add aggressive build optimizations
Aug 6, 2025
1b5872d
refactor: deduplicate build flags using job-level environment variables
Aug 6, 2025
be1b839
fix: use generic simulator destinations for iOS/tvOS
Aug 6, 2025
f10d83e
fix: skip tvOS build due to unavailable simulators on macOS-15
Aug 6, 2025
d465f87
fix: restore tvOS build with proper prebuild configuration
Aug 7, 2025
7d23d56
fix: force clean tvOS prebuild to avoid iOS/tvOS conflicts
Aug 7, 2025
4a536a3
ci: increase timeout to 45 minutes for unified iOS/tvOS builds
Aug 7, 2025
0d29faf
fix: specify tvOS Simulator destination for tvOS builds
Aug 7, 2025
0d157c3
perf: optimize iOS/tvOS CI triggers to exclude JS/TS source files
Aug 7, 2025
4df18ac
refactor: separate iOS code style check into independent job
Aug 7, 2025
89c25e8
fix: use proper SwiftLint action for Ubuntu iOS linting job
Aug 7, 2025
3f5043f
fix: remove superfluous SwiftLint disable comments
Aug 7, 2025
1596da0
chore(ios): update ios player version to 3.94.1
Aug 8, 2025
644a559
Optimize iOS/tvOS CI with aggressive caching strategy (#680)
rolandkakonyi Aug 8, 2025
c127a22
fix: include podspec in CocoaPods cache key
Aug 8, 2025
aff4e73
Merge branch 'development' into feature/speed-up-ci-ios
rolandkakonyi Aug 8, 2025
299872d
test: trigger CI
Aug 8, 2025
231ce8d
Merge branch 'feature/speed-up-ci-ios' of https://github.com/bitmovin…
Aug 8, 2025
0eac6fd
Merge pull request #682 from bitmovin/update_ios_player_to_3.94.1
rolandkakonyi Aug 8, 2025
c5ea03b
refactor: remove wasteful artifact upload and clean job titles
Aug 8, 2025
ca9d81e
optimize: improve iOS CI workflow performance and maintainability
Aug 8, 2025
25183c0
feat: implement full parallelization for iOS CI (Android-style)
Aug 8, 2025
ebf5c33
feat: add prebuild caching to match Android CI pattern
Aug 8, 2025
9dfaf04
fix: increase job timeouts for parallel builds
Aug 8, 2025
8e0785c
Remove test trigger change
rolandkakonyi Aug 8, 2025
e4b1a3b
Merge pull request #684 from bitmovin/feature/speed-up-ci-ios
rolandkakonyi Aug 8, 2025
513a9c7
chore(android): update android player version to 3.121.0+jason
Aug 8, 2025
3bd2509
fix update PR generation for player updates
rolandkakonyi Aug 11, 2025
b20d215
chore(android): update android player version to 3.121.0+jason
Aug 11, 2025
90c5ecf
fix CI
rolandkakonyi Aug 11, 2025
1846a2f
Merge branch 'update_android_player_to_3.121.0+jason' of https://gith…
rolandkakonyi Aug 11, 2025
49f2654
chore(android): update android player version to 3.122.0+jason
Aug 14, 2025
90a91f6
chore(android): update android player version to 3.123.0+jason
Aug 22, 2025
47e7848
Merge pull request #687 from bitmovin/update_android_player_to_3.121.…
matamegger Aug 22, 2025
6cdfa26
Merge branch 'development' into update_android_player_to_3.122.0+jason
matamegger Aug 22, 2025
dfc4f38
Merge pull request #689 from bitmovin/update_android_player_to_3.122.…
matamegger Aug 22, 2025
12ebb79
Merge branch 'development' into update_android_player_to_3.123.0+jason
matamegger Aug 22, 2025
303d9ec
Merge pull request #691 from bitmovin/update_android_player_to_3.123.…
matamegger Aug 25, 2025
5fee263
sanitize infinite values on event payloads
rolandkakonyi Sep 1, 2025
0006034
improve swift code style
rolandkakonyi Sep 1, 2025
3697cd5
add changelog entry
rolandkakonyi Sep 1, 2025
60348e8
fix swiftlint violations
rolandkakonyi Sep 1, 2025
f189918
Fix typo
rolandkakonyi Sep 1, 2025
5ade300
Introduce python script to create or update a changelog entry for SDK…
matamegger Sep 1, 2025
48382c6
Update github actions workflow
matamegger Sep 1, 2025
df19734
Improve Kotlin code style
rolandkakonyi Sep 1, 2025
49edcc4
refactor swift NonFiniteSanitizer
rolandkakonyi Sep 1, 2025
3126b21
clean up Android implementation of NonFiniteSanitizer
rolandkakonyi Sep 1, 2025
0f9a4a3
Correct workflow file
matamegger Sep 1, 2025
42df5ba
add prefix for sentinel to avoid false positive matching of sentinels
rolandkakonyi Sep 1, 2025
15ec8e9
avoid in-place mutation during normalization
rolandkakonyi Sep 1, 2025
484aead
use const instead of val
rolandkakonyi Sep 1, 2025
7b74ab4
fix feature configurations via expo config plugin
rolandkakonyi Sep 1, 2025
a600c8c
improve Expo config plugin type safety
rolandkakonyi Sep 2, 2025
103439b
Merge pull request #696 from bitmovin/feature/fix-live-stream-crash-r…
rolandkakonyi Sep 2, 2025
8bf36ec
Rename sdk update changelog update script
matamegger Sep 2, 2025
116b8c9
Move player sdk update changelog update script
matamegger Sep 2, 2025
1b77572
Doc and regex tweaks
matamegger Sep 2, 2025
a407d34
Merge branch 'development' into feature/fix-expo-config-plugin
rolandkakonyi Sep 2, 2025
43795ed
do not require player license key as it can be optionally provided vi…
rolandkakonyi Sep 2, 2025
d82efce
Merge pull request #697 from bitmovin/untracked/automated_sdk_update_…
matamegger Sep 2, 2025
5569d16
fix tvOS simulator crash
rolandkakonyi Sep 2, 2025
d5e57d0
fix formatting
rolandkakonyi Sep 2, 2025
74c303e
Merge branch 'development' into feature/fix-example-app-tvOS-simulato…
rolandkakonyi Sep 2, 2025
e1dfb15
Merge branch 'development' into feature/fix-expo-config-plugin
rolandkakonyi Sep 2, 2025
5eba8a9
Merge pull request #698 from bitmovin/feature/fix-expo-config-plugin
rolandkakonyi Sep 3, 2025
df7a3c0
Merge branch 'development' into feature/fix-example-app-tvOS-simulato…
rolandkakonyi Sep 3, 2025
9fe5a92
Exclude PiP on iOS simulator too
rolandkakonyi Sep 3, 2025
58d8177
Merge pull request #699 from bitmovin/feature/fix-example-app-tvOS-si…
rolandkakonyi Sep 3, 2025
15fb875
Add changelog entries for native player dependency updates
rolandkakonyi Sep 3, 2025
7219c14
prepare release 1.1.0
Sep 3, 2025
65a2c61
Merge pull request #700 from bitmovin/release/v1.1.0
rolandkakonyi Sep 3, 2025
c900203
Fix changelog
rolandkakonyi Sep 3, 2025
c7392ce
prepare release 1.1.0
Sep 3, 2025
140cc40
Merge pull request #701 from bitmovin/release/v1.1.0
rolandkakonyi Sep 3, 2025
54c78ae
bump changelog date to today
Sep 3, 2025
09d9b58
Merge branch 'bitmovin_release_aug_2025' into update_bitmovin_sep_2025
joornby-angel Sep 16, 2025
1191912
merge conflict fixes
joornby-angel Sep 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
/.expo
lib/
node_modules/
example/node_modules/
example/android/
example/ios/
example/ios/Pods/
integration_test/node_modules/
integration_test/android/
integration_test/ios/
integration_test/ios/Pods/
7 changes: 3 additions & 4 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
const prettierConfig = require('./prettier.config');
module.exports = {
root: true,
extends: ['@react-native-community', 'prettier'],
extends: ['expo', 'prettier'],
plugins: ['prettier'],
rules: {
'prettier/prettier': ['error', prettierConfig],
'prettier/prettier': 'error',
},
};
47 changes: 40 additions & 7 deletions .github/actions/setup-environment/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,30 @@ inputs:
description: Setup Java and Gradle cache
default: false
required: false
tv:
description: Prebuild TV projects
default: false
required: false

runs:
using: composite
steps:
- name: Set up Java
if: ${{ inputs.java == 'true' }}
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: 'temurin'
java-version: '17'

- name: Set up Gradle cache
if: ${{ inputs.java == 'true' }}
uses: gradle/gradle-build-action@v2
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: ${{ github.ref != 'refs/heads/development' }}

- name: Setup node and npm registry
if: ${{ inputs.node == 'true' || inputs.subprojects == 'true' }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org/'
Expand All @@ -55,17 +59,46 @@ runs:
- name: Install node_modules (example/)
if: ${{ inputs.subprojects == 'true' }}
shell: bash
run: yarn install --frozen-lockfile --cwd example
run: |
yarn install --cwd example
cp example/.env.example example/.env

- name: Generate native projects for mobile platforms
if: ${{ inputs.subprojects == 'true' && inputs.tv == 'false' }}
shell: bash
run: |
.github/scripts/smart-prebuild.sh example
env:
NSUnbufferedIO: YES

- name: Generate native projects for TV platforms
if: ${{ inputs.subprojects == 'true' && inputs.tv == 'true' }}
shell: bash
run: |
.github/scripts/smart-prebuild.sh example tv
env:
NSUnbufferedIO: YES

- name: Install node_modules (integration_test/)
if: ${{ inputs.subprojects == 'true' }}
shell: bash
run: yarn install --frozen-lockfile --cwd integration_test
run: |
yarn install --cwd integration_test
cp integration_test/.env.example integration_test/.env
.github/scripts/smart-prebuild.sh integration-test
env:
NSUnbufferedIO: YES

- name: Setup Gradle CI properties
if: ${{ inputs.java == 'true' && inputs.subprojects == 'true' }}
shell: bash
run: |
.github/scripts/setup-gradle-properties.sh

- uses: maxim-lobanov/setup-xcode@v1
if: ${{ inputs.ios == 'true' }}
with:
xcode-version: '15.4'
xcode-version: '16.4'

- name: Install dependencies
if: ${{ inputs.ios == 'true' || inputs.brew == 'true' }}
Expand Down
11 changes: 11 additions & 0 deletions .github/gradle-ci.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.daemon=false
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.workers.max=4
org.gradle.configuration-cache=true
kotlin.incremental=true
org.gradle.welcome=never
org.gradle.dependency.verification=off
org.gradle.console=plain
reactNativeArchitectures=x86,x86_64
20 changes: 20 additions & 0 deletions .github/scripts/setup-gradle-properties.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
CI_GRADLE_PROPS="${SCRIPT_DIR}/../gradle-ci.properties"

setup_gradle_properties() {
local android_dir="$1"

if [ -d "$android_dir" ]; then
if [ -f "$android_dir/gradle.properties" ]; then
cp "$android_dir/gradle.properties" "$android_dir/gradle.properties.backup"
fi

echo "" >> "$android_dir/gradle.properties"
cat "$CI_GRADLE_PROPS" >> "$android_dir/gradle.properties"
fi
}

setup_gradle_properties "example/android"
setup_gradle_properties "integration_test/android"
33 changes: 33 additions & 0 deletions .github/scripts/smart-prebuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

YARN_PROJECT="$1"
PLATFORM_TYPE="$2"

if [ -z "$YARN_PROJECT" ]; then
echo "Usage: smart-prebuild.sh <yarn-project> [platform]"
exit 1
fi

PROJECT_FOLDER="${YARN_PROJECT//-/_}"
ANDROID_DIR="${PROJECT_FOLDER}/android"
IOS_DIR="${PROJECT_FOLDER}/ios"

if [ -d "$ANDROID_DIR" ] && [ -f "$ANDROID_DIR/app/build.gradle" ] &&
[ -d "$IOS_DIR" ] && [ -f "$IOS_DIR/Podfile" ]; then
exit 0
fi

if [ -d "$ANDROID_DIR" ] && [ ! -f "$ANDROID_DIR/app/build.gradle" ]; then
rm -rf "$ANDROID_DIR"
fi

if [ -d "$IOS_DIR" ] && [ ! -f "$IOS_DIR/Podfile" ]; then
rm -rf "$IOS_DIR"
fi

COMMAND="prebuild"
if [ -n "$PLATFORM_TYPE" ]; then
COMMAND="${COMMAND}:${PLATFORM_TYPE}"
fi

yarn "$YARN_PROJECT" "$COMMAND" --clean
176 changes: 176 additions & 0 deletions .github/scripts/update_player_sdk_update_changelog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
"""Update the Unreleased → Changed section in CHANGELOG.md with a new Player SDK version entry.

Usage:
python3 update_player_sdk_update_changelog.py <version> <android|ios>

Notes:
- More robust handling of line endings (LF/CRLF), whitespace, and semver (incl. pre-release/build).
- Idempotently replaces existing SDK update line for the given platform or inserts at the top of the Changed list.
"""
from __future__ import annotations

import sys
import re
from typing import Tuple


CHANGELOG_FILE = "CHANGELOG.md"

# Common headers and labels
HEADER_CHANGELOG = "# Changelog"
HEADER_UNRELEASED = "## [Unreleased]"
SUBHEADER_CHANGED = "### Changed"

# CLI / messages
MESSAGE_USAGE = "Usage: python3 update_player_sdk_update_changelog.py.py <version> <platform>"
ERROR_INVALID_PLATFORM = "Error: Invalid platform. Must be 'android' or 'ios'."
ERROR_INVALID_VERSION = (
"Error: Invalid version. Must be SemVer, e.g. 1.2.3, 1.2.3-beta.1, or 1.2.3+build."
)
MESSAGE_SUCCESS = "Changelog updated successfully."
MESSAGE_ADDING_ENTRY = (
"Adding entry for platform '{platform}' with version '{version}' to {file}"
)

# Platforms and labels
PLATFORM_ANDROID = "android"
PLATFORM_IOS = "ios"
PLATFORMS = {PLATFORM_ANDROID: "Android", PLATFORM_IOS: "iOS"}

# SemVer: MAJOR.MINOR.PATCH with optional -pre-release and +build metadata
SEMVER_RE = r"\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?"

# Entry line template pieces
ENTRY_LINE_PREFIX = "- Update Bitmovin's native {platform} SDK version to `"


def normalize_newlines(text: str) -> str:
"""Normalize CRLF to LF to make regex handling deterministic."""
return text.replace("\r\n", "\n")


def load_changelog(path: str) -> str:
try:
with open(path, "r", encoding="utf-8") as f:
return normalize_newlines(f.read())
except FileNotFoundError:
print(f"Error: {path} not found.")
sys.exit(1)


def write_changelog(path: str, content: str) -> None:
# Collapse 3+ blank lines to 2 to avoid excessive spacing
content = re.sub(r"\n{3,}", "\n\n", content)
with open(path, "w", encoding="utf-8", newline="\n") as f:
f.write(content)


def build_entry(platform_key: str, version: str) -> Tuple[str, re.Pattern[str]]:
platform_label = PLATFORMS[platform_key]
entry_prefix = ENTRY_LINE_PREFIX.format(platform=platform_label)
new_entry = f"{entry_prefix}{version}`"
# Pattern to find an existing entry for this platform regardless of version
existing_pattern = re.compile(
rf"^{re.escape(entry_prefix)}{SEMVER_RE}`$",
flags=re.MULTILINE,
)
return new_entry, existing_pattern


def update_unreleased_changed_section(content: str, platform_key: str, version: str) -> str:
# Find Unreleased section (tolerate optional text after header and CRLF)
unreleased_section_pattern = re.compile(
rf"({re.escape(HEADER_UNRELEASED)}[^\n]*\n)(.*?)(?=\n## \[|\Z)",
flags=re.DOTALL,
)

match = unreleased_section_pattern.search(content)

new_entry, existing_pattern = build_entry(platform_key, version)

if match:
unreleased_header = match.group(1)
unreleased_body = match.group(2)

# Locate or create the '### Changed' subsection inside Unreleased
changed_subsection_pattern = re.compile(
rf"({re.escape(SUBHEADER_CHANGED)}[^\n]*\n\n)(.*?)(?=\n## \[|\n### |\Z)",
flags=re.DOTALL,
)
changed_match = changed_subsection_pattern.search(unreleased_body)

if changed_match:
changed_header = changed_match.group(1)
changed_body = changed_match.group(2)

if existing_pattern.search(changed_body):
# Replace existing line for this platform
new_changed_body = existing_pattern.sub(new_entry, changed_body)
else:
# Prepend new entry to keep fresh updates at the top
new_changed_body = new_entry + "\n" + changed_body

new_unreleased_body = changed_subsection_pattern.sub(
changed_header + new_changed_body,
unreleased_body,
)
else:
# Create the Changed subsection with our new entry
suffix = "\n" if not unreleased_body.endswith("\n") else ""
new_unreleased_body = (
unreleased_body
+ suffix
+ f"\n{SUBHEADER_CHANGED}\n\n"
+ new_entry
+ "\n"
)

# Reassemble content with the updated Unreleased section
return unreleased_section_pattern.sub(
unreleased_header + new_unreleased_body, content, count=1
)

# No Unreleased section – insert one after '# Changelog' header if present
changelog_header_pattern = re.compile(rf"({re.escape(HEADER_CHANGELOG)}[^\n]*\n)")
header_match = changelog_header_pattern.search(content)

new_section = f"\n{HEADER_UNRELEASED}\n\n{SUBHEADER_CHANGED}\n\n" + new_entry + "\n"

if header_match:
insert_pos = header_match.end()
return content[:insert_pos] + new_section + content[insert_pos:]

# If even the top-level header is missing, prepend a standard header
return f"{HEADER_CHANGELOG}\n" + new_section + content


def validate_inputs(version: str, platform: str) -> None:
if platform not in PLATFORMS:
print(ERROR_INVALID_PLATFORM)
sys.exit(1)
if not re.fullmatch(SEMVER_RE, version):
print(ERROR_INVALID_VERSION)
sys.exit(1)


def main() -> None:
if len(sys.argv) != 3:
print(MESSAGE_USAGE)
sys.exit(1)

version = sys.argv[1].strip()
platform = sys.argv[2].strip().lower()

validate_inputs(version, platform)

print(MESSAGE_ADDING_ENTRY.format(platform=platform, version=version, file=CHANGELOG_FILE))

content = load_changelog(CHANGELOG_FILE)
new_content = update_unreleased_changed_section(content, platform, version)

write_changelog(CHANGELOG_FILE, new_content)
print(MESSAGE_SUCCESS)


if __name__ == "__main__":
main()
Loading
Loading