Skip to content

FCE-3584: ScreenShareController and CustomSourceController - #594

Open
MiloszFilimowski wants to merge 1 commit into
tsunami/07-react-devices-swapfrom
tsunami/08-screenshare-custom-controllers
Open

FCE-3584: ScreenShareController and CustomSourceController#594
MiloszFilimowski wants to merge 1 commit into
tsunami/07-react-devices-swapfrom
tsunami/08-screenshare-custom-controllers

Conversation

@MiloszFilimowski

@MiloszFilimowski MiloszFilimowski commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #592.

Description

  • ScreenShareController: screen-share lifecycle as a tsunami controller, including the pre-connect no-publish branch (screen share while signalling is not yet active).
  • Fixes FCE-3574 in the port: the tracks middleware is persisted into state and re-applied on a subsequent start — previously a stop/restart silently dropped the user's middleware.
  • CustomSourceController: arbitrary user streams per source id, with the TrackTypeError recovery path.
  • Wired into the orchestrator, ClientState (screenShare / customSources slices), and the client API (startScreenShare / stopScreenShare / setScreenShareTracksMiddleware / setCustomSource).
  • react-client still runs its old screen-share path — the swap is FCE-3574: react-client screen share and custom sources read the tsunami store #595.

Motivation and Context

The last two controllers of the device layer (FCE-3584, FCE-3585). The FCE-3574 fix lands here because persistence is the controller's natural design, not a patch on the old hook.

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)

ScreenShareController ports the screen-share lifecycle including the
pre-connect no-publish branch (screen share before signalling is active) and
FIXES FCE-3574: the tracks middleware is persisted into state and re-applied
on a subsequent start (previously a stop/restart silently dropped it).
CustomSourceController manages arbitrary user streams per source id with the
TrackTypeError recovery path. Both are wired into the orchestrator, the
store (screenShare/customSources slices), and the client API
(startScreenShare/stopScreenShare/setScreenShareTracksMiddleware/
setCustomSource). react-client still runs its old screen-share path — the
swap is the next PR.
@MiloszFilimowski MiloszFilimowski changed the title tsunami: ScreenShareController + CustomSourceController FCE-3584: ScreenShareController and CustomSourceController Aug 11, 2026
@linear

linear Bot commented Aug 11, 2026

Copy link
Copy Markdown

FCE-3574

FCE-3584

FCE-3585

@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