Skip to content

FCE-3592: deviceManager injection points and platform-owned stream construction - #599

Open
MiloszFilimowski wants to merge 2 commits into
tsunami/12-vad-channelfrom
tsunami/13-mobile-injection
Open

FCE-3592: deviceManager injection points and platform-owned stream construction#599
MiloszFilimowski wants to merge 2 commits into
tsunami/12-vad-channelfrom
tsunami/13-mobile-injection

Conversation

@MiloszFilimowski

@MiloszFilimowski MiloszFilimowski commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #598.

Description

  • FishjamProvider gains deviceManager and clientType injection points; an injected manager owns persistence (the persistLastDevice branch is skipped entirely — which is what makes mobile's localStorage polyfill removable in FCE-3592: mobile runs on ReactNativeDeviceManager, polyfill diet #600).
  • IDeviceManager.createMediaStream: stream construction moves behind the platform boundary. TrackDeviceController exposes a render-ready stream scoped to the active track — initializeDevices shares one stream across camera+mic, so a naive passthrough would leak the other kind into a preview. useCamera / useMicrophone / useLivestreamStreamer no longer touch the MediaStream global.
  • New deviceManagerInjection specs (+2) pin the injection behavior.

Motivation and Context

The injection points that let the mobile provider run on a native device manager (#600), per the FCE-3592 decision.

Documentation impact

  • Documentation update required
  • Documentation updated in another PR
  • No documentation update required

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to
    not work as expected)

…injection points

An injected manager owns persistence (persistLastDevice is skipped entirely),
which is what lets mobile drop its localStorage polyfill later. clientType
flows through the tsunami config into ts-client, so mobile can stop
constructing a signalling client of its own.
…undary

IDeviceManager grows createMediaStream; the controller exposes a render-ready
stream scoped to the active track (the shared initializeDevices stream never
leaks the other kind's track into a preview), and useCamera/useMicrophone/
useLivestreamStreamer stop calling the MediaStream global. The global now
survives only for the legacy ts-client/webrtc-client core.
@MiloszFilimowski MiloszFilimowski changed the title tsunami/13 mobile injection FCE-3592: deviceManager injection points and platform-owned stream construction Aug 11, 2026
@linear

linear Bot commented Aug 11, 2026

Copy link
Copy Markdown

FCE-3592

@MiloszFilimowski
MiloszFilimowski marked this pull request as ready for review August 11, 2026 09:35
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.

1 participant