Skip to content

feat(mobile): resolve and watch one live guest stream - #227

Merged
TheDarkSkyXD merged 2 commits into
mainfrom
cursor/w01-watch-live-0c8f
Sep 14, 2026
Merged

TheDarkSkyXD merged 2 commits into
mainfrom
cursor/w01-watch-live-0c8f

Conversation

@TheDarkSkyXD

@TheDarkSkyXD TheDarkSkyXD commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Guest Watch for #152. Channel Detail can open Watch when the channel is live. Playback starts only after Start watching. Deep-link watch/session-preview does not auto-start.

Behavior

  • Twitch guest HLS uses GQL PlaybackAccessToken plus Usher.
  • Kick guest HLS uses GET /api/v1/channels/{slug} and requires livestream.is_live.
  • Resolvers go through W11 connectivitySession.fetch, so guest proxy applies to token and playlist resolve.
  • Native Media3 ExoPlayer plays the HTTPS .m3u8 sourceUri. Segment fetches stay on the player HTTP stack in this slice.
  • Chat tab is disconnected copy only. Picture in Picture stays NATIVE_OPERATION_UNSUPPORTED.
  • HLS URLs stay off shell restoration, Product Store, logs, and component props. The native view receives an opaque sessionId.

Compatibility

  • Twitch: compat.playback.twitch-gql-usher
  • Kick: compat.playback.kick-v1
  • A valid signed snapshot that omits or expires the identifier fails closed.
  • Guest-first: no-valid-policy enables playback at sequence: 0 because this environment cannot re-sign the development manifest.

Out of scope

  • W02 Picture in Picture
  • W05 connected chat
  • Physical Android / API 30 / live Twitch+Kick evidence

This does not close #152. Physical device proof is still required.

CI

  • Removed expo-network from apps/mobile/app.json plugins. The package has no app.plugin.js; Expo was loading build/Network.js, and Node 22 then failed with ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING. The expo-network@57.0.1 dependency stays for autolinking.
  • Local proof: config:android JSON parses, bundle:android exports, mobile scaffold + 370 Vitest pass.

Verification

  • npm run --workspace @streamfusion/mobile typecheck
  • npm run --workspace @streamfusion/mobile lint
  • npm test --workspace @streamfusion/mobile (47 node tests, 370 Vitest, architecture proof)
  • Desktop pre-commit smoke healthy: true
  • Coverage matrix: implemented 32, including screen:watch and both Watch shell routes

Existing watch-screen tests still require an explicit Start watching control and keep chat disconnected.

Open in Web Open in Cursor 

Guest Watch starts only after Start watching. JS resolvers use the W11
proxy-aware fetch, then Media3 plays the HTTPS HLS source. Chat stays
disconnected copy. Picture in Picture stays unsupported.

A missing signed policy enables guest playback at sequence 0. A valid
snapshot that omits or expires the capability still fails closed.

Does not close #152; physical Android evidence is still required.
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: ca75d30e-afd5-4586-8a62-cd1c204e1ee4


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@TheDarkSkyXD
TheDarkSkyXD marked this pull request as ready for review September 14, 2026 03:13
Listing expo-network in app.json plugins makes expo config and export load
build/Network.js, which Node 22 cannot type-strip under node_modules.
Keep the dependency for autolinking; permissions come from the native module.
@TheDarkSkyXD
TheDarkSkyXD merged commit b4009c0 into main Sep 14, 2026
10 checks passed
@TheDarkSkyXD
TheDarkSkyXD deleted the cursor/w01-watch-live-0c8f branch September 14, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

W01: Resolve and watch one live Stream

2 participants