Screenshare stays on the call bar in Firefox/Safari via the in-frame prompt (#43) #244
Merged
jared
merged 2 commits from 2026-09-27 13:54:11 -04:00
screenshare-prompt into lotus
No Reviewers
Labels
Clear labels
a11y
area: appearance
area: auth-session
area: build-ci
area: calls
area: desktop
area: media
area: messaging
area: mobile
area: moderation
area: navigation
area: notifications
area: settings
area: threads
bug
dependencies
docs
duplicate
enhancement
help wanted
invalid
needs-human-review
performance
planning
priority: critical
priority: high
priority: low
priority: medium
qa
question
research
security
tech-debt
ux
wontfix
Accessibility: keyboard, screen reader, contrast, motion
Client area: appearance
Client area: auth-session
Client area: build-ci
Client area: calls
Client area: desktop
Client area: media
Client area: messaging
Client area: mobile
Client area: moderation
Client area: navigation
Client area: notifications
Client area: settings
Client area: threads
Something is not working
Third-party package versions and advisories
README / LOTUS_* docs wrong or missing
This issue or pull request already exists
New feature
Need some help
Something is wrong
Re-render storms, leaks, heavy work on hot paths
Data loss, security hole, or crash on a main path
Broken feature or serious usability problem
Minor issue or polish
Wrong behaviour in an edge case or notable degradation
Manual QA: shipped, needs a human in a real environment
More information is needed
XSS, unsafe URLs, data leaks, auth/session
Code health, dead code, fragile patterns
Usability or visual inconsistency
This won't be fixed
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: LotusGuild/cinny#244
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up to #43. On Firefox, Safari and the Linux desktop app, the screenshare button goes back on the call bar, and the confirmation moves into the call frame. Requires element-call
lotus-screenshare-prompt(lotus.22).Changes
CallControl:screensharePromptandscreensharePromptOpenfromcontrols_statescreenshareNeedsPromptis true when the fork has the card and this engine can't delegatepromptScreenshare()sendsio.lotus.prompt_screenshareuseScreenshareModereturns one of three modes:hidden: the older fork's corner button, so ours hides, as todayprompt: our click asks for the in-frame carddirect: our confirm, then the delegatedset_screenshare.The call bar and the status bar both use it through one
handleScreenshareToggle.Picture-in-picture: the "Return to call" overlay covers the whole frame, so the card's Share button couldn't be clicked. While the fork reports the card open, the overlay lets clicks through. Found in testing and fixed here.
Before merging
@lotusguild/element-call-embeddedto0.25.0-lotus.22once the element-call PR is merged and tagged.What changes for users
Test evidence
Local Synapse + LiveKit. "No delegation" means Chromium with
navigator.userAgentDataremoved, which takes exactly the Firefox/Safari code path (no Capability Delegation).:5174, like prod)VIDEO/SCREEN_SHARE+AUDIO/SCREEN_SHARE_AUDIO. Bar Stop → tracks gone.prompt_screensharerequest is refused (no card). Restoring the policy brings the button back.Also: element-call lotus tests 116 (8 new for the card), cinny unit tests 1,268, Playwright e2e 20/20, tsc/eslint/oxlint/knip clean.
Not automated: real Firefox. Playwright's headless Firefox 155 stalls at "Heating up" when setting up the encryption store, before any call code runs, in both dev and production builds. So the Firefox-specific part (a click in the frame counts as activation for
getDisplayMedia) is covered by the no-delegation run and by the HTML spec, not by a real Firefox run. Please try it in your Firefox after step 2. Rollback is quick.Rollout
lotus-screenshare-prompt→ tagv0.25.0-lotus.22→ CI publishes. No effect on its own.screenshare-prompt, bump the pin to0.25.0-lotus.22, then merge (deploys).Order and compatibility:
Rollback: set the pin back to
0.25.0-lotus.21and redeploy. You get the corner button again.Review checklist
set_screenshare).hiddenmode with lotus.21 matches today's production exactly.🤖 Generated with Claude Code
https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA