Skip to content

Show a live preview of my own screen share instead of a blurred thumbnail card - #236

Merged
itz4blitz merged 3 commits into
mainfrom
share-self-view
Nov 11, 2026
Merged

itz4blitz merged 3 commits into
mainfrom
share-self-view

Conversation

@itz4blitz

Copy link
Copy Markdown
Collaborator

What changed and why

When I share my screen in a Tiny call and open my own share, I got a dark, blurry copy of the start-of-share thumbnail behind a text card that said it would not be played back to me. It looked like a rendering bug and gave no way to see what was being sent. The share now paints a small live picture of what it sends, at the same size and rate as the camera's self view, and the stage and tile draw it with Stop sharing over it. Until the first picture lands the card stays, on a plain surface and with words that no longer claim nothing is shown.

Type

  • feature
  • fix
  • perf
  • refactor
  • chore
  • docs

Platforms

  • windows
  • macos
  • linux
  • android
  • ios

Proof

Scenario: e2e/scenarios/share-self-view

Lab run:

The scenario is headless: it runs mediad's real capture thread on the host's real screen and requires a self-view picture for the share (and none for the camera while it is off), then its removal when the share stops. It does not open a window. The stage drawing, Stop over it and the fallback card are covered by window tests and a --shot --demo state (TINYCLIENT_SHOT_CALL=tiny_sharing --tiny-stream), not by the lab.

Compatibility

MediaResponse::SelfView gains share: bool (serde default false, so an older mediad's frame still reads as the camera's), and Call gains share_view: Option<CallPicture> (skipped when none). The fields only grew. Camera and share can be on together, so the share's preview has its own slot instead of sharing self_view. Discord's screen leg gets the same preview from the shared capture code. A phone's Outgoing gets stubs that return nothing.

Risk and rollback

Costs one 640x360 shrink and JPEG write every 100 ms while sharing on desktop, the same as the camera's self view. If it is wrong the card comes back; revert the PR.

Release note

Your own screen share now shows a live preview with Stop sharing over it, instead of a blurry thumbnail.

🤖 Generated with Claude Code

itz4blitz and others added 3 commits November 10, 2026 20:32
…nail card

Sharing a screen in a Tiny call used to leave my own stage with a text card over a
dimmed, cover-fitted copy of the start-of-share thumbnail. The share now paints a small
live JPEG of what it sends (the camera's self-view size and rate), the stage and tile draw
it Contain with Stop sharing over it, and it clears when the share stops.

Camera and share can be on together, so the preview is its own slot: Call.share_view and a
`share` flag on MediaResponse::SelfView (absent reads as the camera, so older mediad frames
still parse). Until the first picture lands the card stays, without the thumbnail smear and
without claiming nothing is shown.

Adds e2e/scenarios/share-self-view and a tiny_sharing shot state.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@itz4blitz
itz4blitz merged commit 9a27385 into main Nov 11, 2026
7 checks passed
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