Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
2f90bef
chore: update Android minSdkVersion to 26 and include android directo…
TenGosc007 Aug 12, 2026
55a5ad1
chore: implement BunnyStreamPlayerModule.initialize with API integrat…
TenGosc007 Aug 12, 2026
9ef7ef3
chore: implement Android player bridge with Fabric ViewManager and na…
TenGosc007 Aug 12, 2026
202dee0
chore: implement Android player props and commands with Codegen deleg…
TenGosc007 Aug 12, 2026
1371696
chore: implement command queue with ready-gate for player commands
TenGosc007 Aug 12, 2026
9024dd0
chore: implement Android event system with Media3 listener adapter an…
TenGosc007 Aug 12, 2026
68a3d3d
chore: implement custom onMeasure and onLayout for exact Fabric dimen…
TenGosc007 Aug 12, 2026
a82093e
chore: implement BunnyPlayerLease for singleton ownership and integra…
TenGosc007 Aug 12, 2026
c1467cb
chore: implement public TypeScript API with BunnyStreamPlayer compone…
TenGosc007 Aug 12, 2026
26f4dc8
chore: fix TypeScript declaration paths to include src/ directory in …
TenGosc007 Aug 12, 2026
1c9f6bc
chore: add Metro resolveRequest hook to force single React instance i…
TenGosc007 Aug 12, 2026
fb505b1
chore: add unit tests for CommandQueue, GenerationToken, BunnyPlayerL…
TenGosc007 Aug 12, 2026
3136b01
chore: refactor Metro resolveRequest comment and simplify return stat…
TenGosc007 Aug 12, 2026
14a8743
chore: add Media3 PlayerView dependencies and implement native contro…
TenGosc007 Aug 12, 2026
a6a4b8c
chore: add project infrastructure with CI/CD, issue templates, and de…
TenGosc007 Aug 15, 2026
e3a216c
chore: configure Android example app for Bunny Stream SDK compatibili…
TenGosc007 Aug 15, 2026
8f0fe87
chore: add singleApp field to app.json configuration
TenGosc007 Aug 15, 2026
9811292
chore: migrate to BaseReactPackage and fix view ID resolution
TenGosc007 Aug 15, 2026
bedb95b
chore: add environment configuration, custom app icon, and video libr…
TenGosc007 Aug 16, 2026
e55a383
chore: refactor environment video ID handling to support multiple def…
TenGosc007 Aug 16, 2026
a6f18e6
chore: disable iOS CI build and update example app launcher icons
TenGosc007 Aug 16, 2026
ff30876
chore: consolidate react-native codegen imports into single statement
TenGosc007 Aug 16, 2026
6fcfcb3
chore: add error overlay UI and mkdist script to example app
TenGosc007 Aug 16, 2026
a16c40a
chore: adjust app icon scale to fit adaptive icon safe zone
TenGosc007 Aug 16, 2026
2efc368
chore: add custom controls player screen with direct play modal and n…
TenGosc007 Aug 16, 2026
cc15eb5
chore: add controls prop to toggle player UI visibility without reloa…
TenGosc007 Aug 16, 2026
167442e
chore: fix event dispatch, add progress polling, and repair inline co…
TenGosc007 Aug 16, 2026
555a854
chore: extract ScreenWrapper component and centralize StatusBar/SafeA…
TenGosc007 Aug 16, 2026
d4189ce
chore: apply primary background color to SafeAreaView and move custom…
TenGosc007 Aug 16, 2026
b56bd17
chore: update player screen colors to use theme tokens and adjust ove…
TenGosc007 Aug 16, 2026
2f67846
chore: add React Navigation dependencies to example app
TenGosc007 Aug 16, 2026
f605228
chore: migrate app navigation from manual state management to React N…
TenGosc007 Aug 16, 2026
2b0d378
chore: wrap player in dark theme context and disable auto text color …
TenGosc007 Aug 16, 2026
590ede4
chore: add plan document for useBunnyStreamPlayer hook to consolidate…
TenGosc007 Aug 16, 2026
d114c62
Merge branch 'main' into android-sdk
TenGosc007 Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org

root = true

[*]

indent_style = space
indent_size = 2

end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
20 changes: 16 additions & 4 deletions .fallowrc.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
{
"$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json",
"entry": ["src/index.ts"],
"entry": ["src/index.tsx"],
"ignoreDependencies": [
"@commitlint/config-conventional",
"@eslint/js",
"@jest/globals",
"@react-native-community/cli",
"@react-native/babel-preset",
"@react-native/jest-preset",
"@release-it/conventional-changelog",
"@types/react",
"commitlint",
"del-cli",
"eslint",
"eslint-config-prettier",
"eslint-import-resolver-typescript",
"eslint-plugin-import-x",
"eslint-plugin-perfectionist",
"fallow",
"globals",
"react-native-builder-bob",
"jest",
"lefthook",
"prettier",
"react-native-builder-bob",
"release-it",
"turbo",
"typescript",
"typescript-eslint",
"@types/react"
"typescript-eslint"
],
"ignorePatterns": ["**/*.d.ts", "./package.json", "example/**", "lib/**", "node_modules/**"],
"duplicates": {
Expand Down
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pbxproj -text
# specific for windows script files
*.bat text eol=crlf
67 changes: 67 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: 🐛 Bug report
description: Report a reproducible bug or regression in this library.
labels: [bug]
body:
- type: markdown
attributes:
value: |
# Bug report

👋 Hi!

**Please fill the following carefully before opening a new issue ❗**
*(Your issue may be closed if it doesn't provide the required pieces of information)*
- type: checkboxes
attributes:
label: Before submitting a new issue
description: Please perform simple checks first.
options:
- label: I tested using the latest version of the library, as the bug might be already fixed.
required: true
- label: I tested using a [supported version](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md) of react native.
required: true
- label: I checked for possible duplicate issues, with possible answers.
required: true
- type: textarea
id: summary
attributes:
label: Bug summary
description: |
Provide a clear and concise description of what the bug is.
If needed, you can also provide other samples: error messages / stack traces, screenshots, gifs, etc.
validations:
required: true
- type: input
id: library-version
attributes:
label: Library version
description: What version of the library are you using?
placeholder: "x.x.x"
validations:
required: true
- type: textarea
id: react-native-info
attributes:
label: Environment info
description: Run `react-native info` in your terminal and paste the results here.
render: shell
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: |
You must provide a clear list of steps and code to reproduce the problem.
value: |
1. …
2. …
validations:
required: true
- type: input
id: reproducible-example
attributes:
label: Reproducible example repository
description: Please provide a link to a repository on GitHub with a reproducible example.
validations:
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Feature Request 💡
url: https://github.com/BunnyWay/bunny-stream-react-native.git/discussions/new?category=ideas
about: If you have a feature request, please create a new discussion on GitHub.
- name: Discussions on GitHub 💬
url: https://github.com/BunnyWay/bunny-stream-react-native.git/discussions
about: If this library works as promised but you need help, please ask questions there.
36 changes: 36 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Setup
description: Setup Node.js and install dependencies

runs:
using: composite
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

- name: Restore dependencies
id: yarn-cache
uses: actions/cache/restore@v4
with:
path: |
**/node_modules
.yarn/install-state.gz
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }}
restore-keys: |
${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
${{ runner.os }}-yarn-

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
shell: bash

- name: Cache dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
**/node_modules
.yarn/install-state.gz
key: ${{ steps.yarn-cache.outputs.cache-primary-key }}
191 changes: 169 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,77 @@
name: CI

on:
push:
branches: [main]
branches:
- main
pull_request:
branches:
- main
merge_group:
types:
- checks_requested

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup
uses: ./.github/actions/setup

- name: Lint files
run: yarn lint

- name: Typecheck files
run: yarn typecheck

test:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup
uses: ./.github/actions/setup

- name: Run unit tests
run: yarn test --maxWorkers=2 --coverage

build-library:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup
uses: ./.github/actions/setup

- name: Build package
run: yarn prepare

fallow:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
pull-requests: write

steps:
- uses: actions/checkout@v7.0.1
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0

- uses: actions/setup-node@v7.0.0
with:
node-version: 22
cache: npm

- run: npm ci

- name: Codegen
run: npm run codegen

- name: Lint
run: npm run lint

- name: TypeScript check
run: npm run typecheck

- name: Build
run: npm run build
- name: Setup
uses: ./.github/actions/setup

- name: Fallow health check
uses: fallow-rs/fallow@v3.14.0
Expand All @@ -46,7 +83,117 @@ jobs:
github-token: ${{ github.token }}
args: --report-only

- uses: github/codeql-action/upload-sarif@v4
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v4
if: always()
with:
sarif_file: fallow-results.sarif

build-android:
runs-on: ubuntu-latest

env:
TURBO_CACHE_DIR: .turbo/android

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup
uses: ./.github/actions/setup

- name: Cache turborepo for Android
uses: actions/cache@v4
with:
path: ${{ env.TURBO_CACHE_DIR }}
key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-turborepo-android-
- name: Check turborepo cache for Android
run: |
TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:android').cache.status")
if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
echo "turbo_cache_hit=1" >> $GITHUB_ENV
fi
- name: Install JDK
if: env.turbo_cache_hit != 1
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'

- name: Finalize Android SDK
if: env.turbo_cache_hit != 1
run: |
/bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null"
- name: Cache Gradle
if: env.turbo_cache_hit != 1
uses: actions/cache@v4
with:
path: |
~/.gradle/wrapper
~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('example/android/gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build example for Android
env:
JAVA_OPTS: "-XX:MaxHeapSize=6g"
run: |
yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}"
# TODO(ios): Re-enable once the iOS implementation is available.
# build-ios:
# runs-on: macos-latest
#
# env:
# XCODE_VERSION: 26
# TURBO_CACHE_DIR: .turbo/ios
# RCT_USE_RN_DEP: 1
# RCT_USE_PREBUILT_RNCORE: 1
#
# steps:
# - name: Checkout
# uses: actions/checkout@v5
#
# - name: Setup
# uses: ./.github/actions/setup
#
# - name: Cache turborepo for iOS
# uses: actions/cache@v4
# with:
# path: ${{ env.TURBO_CACHE_DIR }}
# key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }}
# restore-keys: |
# ${{ runner.os }}-turborepo-ios-
#
# - name: Check turborepo cache for iOS
# run: |
# TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:ios').cache.status")
#
# if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
# echo "turbo_cache_hit=1" >> $GITHUB_ENV
# fi
#
# - name: Use appropriate Xcode version
# if: env.turbo_cache_hit != 1
# uses: maxim-lobanov/setup-xcode@v1
# with:
# xcode-version: ${{ env.XCODE_VERSION }}
#
# - name: Install cocoapods
# if: env.turbo_cache_hit != 1
# run: |
# cd example
# bundle install
# bundle exec pod repo update --verbose
# bundle exec pod install --project-directory=ios
#
# - name: Build example for iOS
# run: |
# yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"
Loading
Loading