Skip to content

feat: Screen share settings UI modal#1111

Open
Dadadah wants to merge 11 commits intostoatchat:mainfrom
Dadadah:feat/streamsettings
Open

feat: Screen share settings UI modal#1111
Dadadah wants to merge 11 commits intostoatchat:mainfrom
Dadadah:feat/streamsettings

Conversation

@Dadadah
Copy link
Copy Markdown
Member

@Dadadah Dadadah commented Apr 11, 2026

This PR adds a screen share settings UI modal that pops up after choosing what window/screen to stream. It allows you to choose a screen share quality. Right now it only supports 720p@30fps, 1080p@30fps and Source@5fps. These values will only show up if the server is configured to allow streams of that size. The Source@5fps quality setting will cap the width and height to the configured limit, unless the limit is 0. The modal has a checkbox to not show the modal again. If you check this box, it will save your choice and disable the modal. You can enable it in the settings. You can also change the default screen share resolution chosen in the settings. The Voice settings section has been renamed to Voice & Video.

Requires stoatchat/javascript-client-sdk#149
Requires #1112

This PR is blocking #1070 and #1068

Closes #1069

How was this PR tested?

Shared screen from one client to another. Shared multiple screen resolutions and both landscape and portrait screens.

Simulated low resolution cap to ensure only low quality streaming was allowed (720p).

Screenshots & Screencasts (if appropriate)

In action:

Screencast.from.2026-04-11.17-18-42.webm

Settings UI:
image

Available resolutions:
image

Known Issues

  • If a Stoat instance has a video resolution limit that is abnormal (ie. not a standard) it may result in undesired results.
  • If a user attempts to start a stream with a weird aspect ratio, that user may get kicked.
    • Unsure on a proper solution for this, if a user starts the stream at a normal aspect ratio and makes it weird they will not get kicked.
  • New user limitations are not respected
    • Unsure if it's possible to get if a user is new currently - may also depend on the server?
      • skill issue?
  • Once a stream is started, it's quality cannot currently be changed.
    • Out of scope for this PR. Could be done separately later.

Checklist:

  • I have carefully read the contributing guidelines
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation if applicable
  • I have no unrelated changes in the PR
  • I have confirmed that any new dependencies are strictly necessary
  • I have written tests for new code (if applicable)
  • I have followed naming conventions/patterns in the surrounding code

Please declare, if any, LLM usage involved in creating this PR

Generative AI was not used in the creation of this PR.

@Dadadah Dadadah force-pushed the feat/streamsettings branch from 587e295 to 5a2b4b6 Compare April 12, 2026 01:36
@@ -72,87 +77,89 @@ export function ParticipantTile(props: TileProps) {
};

return (
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know the diff looks big here, but I actually just wrapped this in a big show block to disable showing screen shares if they're muted (as is the case when a screen share is getting configured)

Dadadah added 10 commits April 12, 2026 10:21
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
@Dadadah Dadadah force-pushed the feat/streamsettings branch from 3919785 to 8b6113d Compare April 12, 2026 16:21
This commit was made without the use of generative AI.

Signed-off-by: Jacob Schlecht <dadadah@echoha.us>
@Dadadah Dadadah marked this pull request as ready for review April 12, 2026 16:28
@Dadadah Dadadah requested review from a team as code owners April 12, 2026 16:28
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.

feat: Stream Settings UI

1 participant