Skip to content

spike(#2534): route getDisplayMedia through in-app picker on Wayland#2538

Open
IsmaelMartinez wants to merge 7 commits into
mainfrom
spike/2534-wayland-in-app-picker
Open

spike(#2534): route getDisplayMedia through in-app picker on Wayland#2538
IsmaelMartinez wants to merge 7 commits into
mainfrom
spike/2534-wayland-in-app-picker

Conversation

@IsmaelMartinez
Copy link
Copy Markdown
Owner

Spike, not for merge

This is a draft PR for @piotrleszczynski (and any other Wayland reporter) to test whether the proposed approach for #2534 holds.

Background

On Wayland with WebRTCPipeWireCapturer enabled (TFL's default), Chromium's native getDisplayMedia handles source selection via xdg-desktop-portal and bypasses Electron's setDisplayMediaRequestHandler entirely. The thumbnail preview window is only created from the in-app StreamSelector path, so Wayland users have never seen it.

What this spike does

Intercepts getDisplayMedia in the injected renderer script and routes the source-selection step through TFL's existing in-app StreamSelector instead:

  1. New IPC show-tfl-stream-picker opens the in-app StreamSelector, runs the existing handleScreenSourceSelection flow (which creates the preview window), and returns the chosen source ID.
  2. The renderer wrapper then calls getUserMedia({ video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId } } }) to synthesise the stream. This is the same constraint shape app/screenSharing/previewWindow.html already uses successfully on Wayland, so Chromium + PipeWire should resolve it identically.

The original setDisplayMediaRequestHandler is unchanged and acts as a fallback when the new IPC is unavailable.

Out of scope for the spike

Test plan (for @piotrleszczynski)

Wayland session (KDE Plasma + xdg-desktop-portal-kde, TUXEDO OS):

  1. Grab the deb / rpm from the PR Build Artifacts comment below.
  2. Launch normally (no --ozone-platform=x11 flag needed).
  3. Join a meeting and click Share → Screen.
  4. Confirm the TFL in-app picker grid appears (not the KDE portal native picker).
  5. Pick a screen.
  6. Confirm the small thumbnail preview window appears at the bottom-right.
  7. Confirm participants in the meeting actually see the screen content.
  8. Click Stop sharing; confirm preview window closes.

If steps 4 and 6 pass and step 7 works, the hypothesis is confirmed and we can promote this to a real feature (with config flag, multi-account session handling, X11 verification, tests). If step 4 fails, please attach a fresh log. If step 7 fails, the getUserMedia + chromeMediaSource: 'desktop' substitution is not equivalent to native getDisplayMedia on Wayland for Teams' WebRTC pipeline, and the spike disproves the approach.

Refs #2534. Not for merge as-is.

)

On Wayland with WebRTCPipeWireCapturer enabled, Chromium's native
getDisplayMedia handles source selection via xdg-desktop-portal and bypasses
Electron's setDisplayMediaRequestHandler entirely. The thumbnail preview
window only fires from the in-app StreamSelector path, so Wayland users have
never seen it.

Spike intercepts getDisplayMedia in the injected renderer script:
1. Calls a new show-tfl-stream-picker IPC to display StreamSelector and pick
   the source on the main side (which also triggers the preview window
   creation via the existing handleScreenSourceSelection flow).
2. Synthesises the stream via getUserMedia with
   chromeMediaSource: 'desktop' + chromeMediaSourceId, the same shape the
   preview window already uses successfully on Wayland.

Out of scope for the spike: config flag, multi-account session handling,
automated tests. The original setDisplayMediaRequestHandler path is still
registered as fallback for environments where the IPC is unavailable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request implements a spike to route getDisplayMedia through the in-app StreamSelector on Wayland to restore the screen-share preview window. Key changes include adding a new IPC handler for the stream picker, exposing it to the renderer, and updating the injected screen-sharing script to intercept media requests. Review feedback suggests hardening the IPC handler to prevent hanging promises, preserving original video constraints during the getUserMedia fallback, and ensuring the main process is notified to close the preview window if the custom capture path fails.

Comment thread app/mainAppWindow/index.js Outdated
Comment thread app/screenSharing/injectedScreenSharing.js Outdated
Comment thread app/screenSharing/injectedScreenSharing.js Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

📦 PR Snap Build Artifacts

Snap builds successful! Download artifacts:

🐧 Linux Snap Packages

x86_64 (110.67 MB)

arm64 (107.50 MB)

armv7l (101.56 MB)


📝 Note: Other package formats (.deb, .rpm, .AppImage, .dmg, .exe) are built in the main workflow

View workflow run

@IsmaelMartinez IsmaelMartinez marked this pull request as ready for review May 13, 2026 20:17
IsmaelMartinez and others added 2 commits May 13, 2026 21:19
- IPC handler: resolve null when handleScreenSourceSelection fails to find
  the chosen source (high-priority comment) so the renderer treats it as a
  cancellation instead of calling getUserMedia with a stale ID.
- getDisplayMedia wrapper: drop the post-picker fallback to native
  getDisplayMedia. The preview window is already open after the picker, and
  the fallback would open a second native picker on top of it. Surfacing the
  error directly is the right signal for a spike. Skipped the medium-priority
  comment about preserving original video constraints; that belongs to the
  real feature, not the bare-minimum verification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 13, 2026

📦 PR Build Artifacts

Build successful! Download artifacts:

🐧 Linux

x86_64 (447.84 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

arm64 (438.12 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

armv7l (415.96 MB) - Contains: .deb, .rpm, .tar.gz, .AppImage

🍎 macOS

x86_64 (129.24 MB) - Contains: .dmg

🪟 Windows

x86_64 (109.59 MB) - Contains: .exe installer


📝 Note: Snap packages (.snap) are built in a separate workflow

View workflow run

🕐 Last updated: 2026-05-20 12:56 UTC

@piotrleszczynski
Copy link
Copy Markdown

Hello, still no screensharing preview. This time, when selecting screen to share, there appears to be some docked bar under camera preview. Selecting window does nothig, I have to additionally click in that docked bar and select screen second time for screensharing to work. There's also a stack trace in log.

Screenshot_20260519_071400
ELECTRON_ENABLE_LOGGING=true teams-for-linux

Logs:

Using user configuration
all good with screenSharingThumbnail you aren't using them
all good with disableAutogain you aren't using them
all good with screenLockInhibitionMethod you aren't using them
all good with ssoInTuneEnabled you aren't using them
all good with ssoInTuneAuthUser you aren't using them
all good with videoMenu you aren't using them
Initialising logger with config: {"level":"debug"}
07:13:30.289 › File logging at /home/[USER]/.config/teams-for-linux/logs/main.log with level silly
07:13:30.291 › Console logging enabled with level silly
07:13:30.292 › Logger initialised
07:13:30.292 › configPath: /home/[USER]/.config/teams-for-linux
07:13:30.292 › configFile: {
  screenSharing: { thumbnail: { enabled: true, alwaysOnTop: true } },
  disableGpu: false,
  logConfig: { level: 'debug' },
  media: { video: { menuEnabled: true } }
}
07:13:30.295 › [Wayland] Enabling PipeWire for screen sharing
07:13:30.295 › [Wayland] Respecting user's disableGpu setting: false
07:13:30.561 › [CustomNotificationManager] Initialized and listening on "notification-show-toast" channel
[12249:0519/071330.568032:WARNING:ui/ozone/platform/wayland/common/wayland_object.cc:119] Binding to wl_shm version 1 but version 2 is available.
[12249:0519/071330.568085:WARNING:ui/ozone/platform/wayland/common/wayland_object.cc:119] Binding to zwp_pointer_gestures_v1 version 1 but version 3 is available.
[12249:0519/071330.568107:WARNING:ui/ozone/platform/wayland/common/wayland_object.cc:119] Binding to wp_cursor_shape_manager_v1 version 1 but version 2 is available.
[12249:0519/071330.568125:WARNING:ui/ozone/platform/wayland/common/wayland_object.cc:119] Binding to org_kde_kwin_appmenu_manager version 1 but version 2 is available.
[12249:0519/071330.568174:WARNING:ui/ozone/platform/wayland/common/wayland_object.cc:119] Binding to zwp_linux_dmabuf_v1 version 4 but version 5 is available.
[12249:0519/071330.679715:WARNING:ui/ozone/platform/wayland/host/wayland_surface.cc:170] Server doesn't support zcr_alpha_compositing_v1.
[12249:0519/071330.679731:WARNING:ui/ozone/platform/wayland/host/wayland_surface.cc:185] Server doesn't support overlay_prioritizer.
[12504:0519/071330.736661:WARNING:sandbox/policy/linux/sandbox_linux.cc:405] InitializeSandbox() called with multiple threads in process gpu-process.
07:13:30.737 › [AUTH_RECOVERY] Cookie check: { total: 4, expired: 0 }
07:13:30.738 › processArgs: [ '/opt/teams-for-linux/teams-for-linux' ]
07:13:30.739 › testing RegExp processArgs false
07:13:30.740 › Waiting for network...
07:13:30.741 › Spellchecker is disabled!
07:13:30.742 › [GRAPH_API] IPC handlers registered { channels: 7, enabled: false }
07:13:30.743 › [QuickChat] Quick Chat feature is disabled
07:13:30.743 › [GLOBAL_SHORTCUTS] No global shortcuts configured
07:13:30.743 › [AutoUpdater] Not running as AppImage, auto-updater disabled
07:13:30.743 › [DownloadManager] Disabled (config.download.enabled is not true)
07:13:30.743 › [IPC Security] Channel allowlisting enabled
07:13:30.743 › [IPC Security] 75 channels allowlisted
[12249:0519/071330.819863:ERROR:ui/ozone/platform/wayland/host/wayland_wp_color_manager.cc:277] Unable to set image transfer function.
[12249:0519/071330.819879:ERROR:ui/ozone/platform/wayland/host/wayland_wp_color_manager.cc:195] Failed to populate image description for color space {primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}
07:13:30.875 › Loading initial URL...
[12249:0519/071331.128203:INFO:CONSOLE:347] "Preload: CustomNotification factory initialized", source: /opt/teams-for-linux/resources/app.asar/app/browser/preload.js (347)
[12249:0519/071331.147870:INFO:CONSOLE:150] "Preload: Config loaded for notifications: [object Object]", source: /opt/teams-for-linux/resources/app.asar/app/browser/preload.js (150)
[12249:0519/071331.173605:INFO:CONSOLE:16] "[ExpLoader] Getting things ready...", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.183767:INFO:CONSOLE:16] "[ExpLoader] ExperienceLoader: OCDI redirect: Not redirecting - not enabled", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.223010:INFO:CONSOLE:16] "Preload: DOMContentLoaded, initializing browser modules...", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.251474:INFO:CONSOLE:16] "Preload: Got config: {"trayIconEnabled":true,"useMutationTitleLogic":true}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.252287:INFO:CONSOLE:16] "MutationObserverTitle enabled", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.252380:INFO:CONSOLE:16] "Appliying MutationObserverTitle logic", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.252461:INFO:CONSOLE:16] "MutationTitle: Initial setup {"titleElementExists":true,"documentReadyState":"interactive"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.252495:INFO:CONSOLE:16] "MutationTitle: Observer successfully attached to title element", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.252518:INFO:CONSOLE:16] "Preload: Essential tray modules initialized successfully", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.255167:INFO:CONSOLE:16] "[TOKEN_CACHE] Secure storage not available", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.255233:INFO:CONSOLE:16] "[TOKEN_CACHE] TokenCache initialized {"localStorage":true,"secureStorage":false}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.255374:INFO:CONSOLE:16] "ReactHandler: No React structure detected", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.256130:INFO:CONSOLE:16] "[WEBAUTHN] Skipping: auth.webauthn.enabled is not true", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.257900:INFO:CONSOLE:16] "MQTT status monitoring disabled", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.260255:INFO:CONSOLE:16] "Search navigation region not found, buttons not injected yet", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.260395:INFO:CONSOLE:16] "Preload: 16/16 browser modules initialized successfully", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.265094:INFO:CONSOLE:16] "ReactHandler: No React structure detected", source: https://teams.cloud.microsoft/ (16)
07:13:31.429 › did-frame-finish-load {} true
07:13:31.430 › did-finish-load
[12249:0519/071331.436985:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Initializing screen sharing monitoring", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.537056:INFO:CONSOLE:16] "[Auth]: auth_cache initialized", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.537112:INFO:CONSOLE:16] "[Auth]: authTelemetryProvider initialized", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.537417:INFO:CONSOLE:16] "[Auth]: [Telemetry][2628efc5-07ed-426d-bba6-da960acd97da][auth_web_initialization] [start] - telemetry provider created for createAuthenticationServiceInstance, source: core-auth-tasks::init with shouldCreateScenario: [true]", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071331.860155:INFO:CONSOLE:334] "[Auth]: authTelemetryProvider initialized", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071331.862725:INFO:CONSOLE:8] "Connecting to 'wss://augloop.office.com/' violates the following Content Security Policy directive: "connect-src 'self' https://statics.teams.cdn.office.net *.events.data.microsoft.com blob: data: *.xlcatlin.com *.aexp.com *.hyattoffice.com *.kp.org *.adient.com *.amat.com *.aptiv.com *.lilly.com *.wal-mart.com *.clorox.com *.toyota.com *.autodesk.com *.merck.com *.metlife.com *.aon.net *.wellpoint.com *.mcd.com *.sharepoint-df.com *.avivaworld.com *.kpmg.com *.ey.com *.maerskgroup.com *.lighting.com *.upm.com *.royalmailgroup.com *.msc.com *.novartis.net *.deloitte.com *.volvocars.net *.shell.com *.philips.com *.spodvnext.com *.aa.com *.accenture.com *.capitalone.com *.effem.com *.baxter.com *.mdlz.com *.jci.com *.bms.com *.kiewit.com *.homedepot.com *.gsk.com *.gap.com *.ge.com *.jpmchase.com *.coca-cola.com *.pb.com *.bsnconnect.com *.td.com *.fmrcloud.com *.connect.aig *.bhpbilliton.com teams.microsoft.com *.teams.microsoft.com wss://*.trouter.teams.microsoft.com teams.cloud.microsoft *.tca.teams.core.microsoft *.tgcb.teams.core.microsoft tdf.public.mt.teams.internal.office.com prod.appsuggestions.teams.cloud.microsoft outlook.office.com outlook.office365.com outlook-tdf.office.com substrate.office.com wss://substrate.office.com wss://test.augloop.svc.cloud.dev.microsoft wss://*.test.augloop.svc.cloud.dev.microsoft wss://*.augloop-test.officeppe.com test.augloop.svc.cloud.dev.microsoft wss://int.augloop.svc.cloud.dev.microsoft wss://*.int.augloop.svc.cloud.dev.microsoft wss://*.augloop-int.officeppe.com int.augloop.svc.cloud.dev.microsoft wss://dogfood.augloop.svc.cloud.microsoft wss://*.dogfood.augloop.svc.cloud.microsoft wss://*.augloop-dogfood.officeppe.com dogfood.augloop.svc.cloud.microsoft wss://msit.augloop.svc.cloud.microsoft wss://*.msit.augloop.svc.cloud.microsoft wss://*.augloop-msit.office.com msit.augloop.svc.cloud.microsoft wss://augloop.svc.cloud.microsoft wss://*.augloop.svc.cloud.microsoft wss://*.augloop.office.com augloop.svc.cloud.microsoft wss://gcc.augloop.svc.cloud.microsoft wss://*.gcc.augloop.svc.cloud.microsoft wss://*.augloop-gcc.office.com gcc.augloop.svc.cloud.microsoft *.enterprisevoice.svc.cloud.microsoft wss://*.enterprisevoice.svc.cloud.microsoft *.sharepoint.com *.sharepoint.de *.rt.yammer.com web.yammer.com www.yammer.com *.rt.gov.yammer.com web.gov.yammer.com onedrive.cloud.microsoft whiteboard.microsoft.com graph.microsoft.com urlp.asm.skype.com cxcs.cdn.office.net cxcs-preview.microsoft-int.com res.cdn.office.net res-sdf.cdn.office.net statics.teams.cdn.office.net teams.public.onecdn.static.microsoft *.api.orgmsg.microsoft.com *.api.personalization.ideas.microsoft.com". The policy is report-only, so the violation has been logged but no further action has been taken.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (8)
[12249:0519/071331.862785:INFO:CONSOLE:8] "Connecting to 'wss://augloop.office.com/' violates the following Content Security Policy directive: "connect-src 'self' https://statics.teams.cdn.office.net *.events.data.microsoft.com blob: data: *.xlcatlin.com *.aexp.com *.hyattoffice.com *.kp.org *.adient.com *.amat.com *.aptiv.com *.lilly.com *.wal-mart.com *.clorox.com *.toyota.com *.autodesk.com *.merck.com *.metlife.com *.aon.net *.wellpoint.com *.mcd.com *.sharepoint-df.com *.avivaworld.com *.kpmg.com *.ey.com *.maerskgroup.com *.lighting.com *.upm.com *.royalmailgroup.com *.msc.com *.novartis.net *.deloitte.com *.volvocars.net *.shell.com *.philips.com *.spodvnext.com *.aa.com *.accenture.com *.capitalone.com *.effem.com *.baxter.com *.mdlz.com *.jci.com *.bms.com *.kiewit.com *.homedepot.com *.gsk.com *.gap.com *.ge.com *.jpmchase.com *.coca-cola.com *.pb.com *.bsnconnect.com *.td.com *.fmrcloud.com *.connect.aig *.bhpbilliton.com teams.microsoft.com *.teams.microsoft.com wss://*.trouter.teams.microsoft.com teams.cloud.microsoft *.tca.teams.core.microsoft *.tgcb.teams.core.microsoft tdf.public.mt.teams.internal.office.com prod.appsuggestions.teams.cloud.microsoft outlook.office.com outlook.office365.com outlook-tdf.office.com substrate.office.com wss://substrate.office.com wss://test.augloop.svc.cloud.dev.microsoft wss://*.test.augloop.svc.cloud.dev.microsoft wss://*.augloop-test.officeppe.com test.augloop.svc.cloud.dev.microsoft wss://int.augloop.svc.cloud.dev.microsoft wss://*.int.augloop.svc.cloud.dev.microsoft wss://*.augloop-int.officeppe.com int.augloop.svc.cloud.dev.microsoft wss://dogfood.augloop.svc.cloud.microsoft wss://*.dogfood.augloop.svc.cloud.microsoft wss://*.augloop-dogfood.officeppe.com dogfood.augloop.svc.cloud.microsoft wss://msit.augloop.svc.cloud.microsoft wss://*.msit.augloop.svc.cloud.microsoft wss://*.augloop-msit.office.com msit.augloop.svc.cloud.microsoft wss://augloop.svc.cloud.microsoft wss://*.augloop.svc.cloud.microsoft wss://*.augloop.office.com augloop.svc.cloud.microsoft wss://gcc.augloop.svc.cloud.microsoft wss://*.gcc.augloop.svc.cloud.microsoft wss://*.augloop-gcc.office.com gcc.augloop.svc.cloud.microsoft *.enterprisevoice.svc.cloud.microsoft wss://*.enterprisevoice.svc.cloud.microsoft *.sharepoint.com *.sharepoint.de *.rt.yammer.com web.yammer.com www.yammer.com *.rt.gov.yammer.com web.gov.yammer.com onedrive.cloud.microsoft whiteboard.microsoft.com graph.microsoft.com urlp.asm.skype.com cxcs.cdn.office.net cxcs-preview.microsoft-int.com res.cdn.office.net res-sdf.cdn.office.net statics.teams.cdn.office.net teams.public.onecdn.static.microsoft *.api.orgmsg.microsoft.com *.api.personalization.ideas.microsoft.com". The policy is report-only, so the violation has been logged but no further action has been taken.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (8)
[12249:0519/071332.001822:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.001927:INFO:CONSOLE:16] "MutationTitle: Extracting unread count {"hasMatch":false,"extractedNumber":0}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.001947:INFO:CONSOLE:16] "MutationTitle: Dispatching unread-count event with number: 0", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.002692:INFO:CONSOLE:16] "[TRAY_DIAG] Activity count update initiated {"newCount":0,"previousCount":0,"timestamp":"2026-05-19T05:13:32.002Z","willFlash":false,"suggestion":"Monitor renderTimeMs and totalTimeMs for performance issues"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.002792:INFO:CONSOLE:16] "[TRAY_DIAG] Count is 0, using base icon without rendering", source: https://teams.cloud.microsoft/ (16)
07:13:32.263 › [Renderer] Window error: {
  message: 'Uncaught Error: UPR: "Error: Discover::regionGtm::InvalidResponse - authService is missing in discover response"',
  filename: 'https://teams.cloud.microsoft/v2/worker/precompiled-web-worker-b25247c3e3d88ec4.js[redacted]',
  lineno: 3,
  colno: 736,
  errorStack: null,
  timestamp: 1779167612263
}
[12249:0519/071332.264639:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.272143:INFO:CONSOLE:344] "Uncaught (in promise) Error: Discover::regionGtm::InvalidResponse - authService is missing in discover response", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (344)
[12249:0519/071332.280554:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: replychains, with index: undefined", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071332.280590:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: replychains, with index: latestDeliveryTimeByConversationId", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071332.281747:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: replychains, with index: undefined", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071332.281756:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: replychains, with index: latestDeliveryTimeByConversationId", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071332.332714:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [start] - telemetry provider created for ic3-gateway-token-helper::getIC3GateWayToken, source: Trouter with shouldCreateScenario: [true]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.332931:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [ic3-gateway-token-helper-get-token-start][success][scenarioEventData][{"commandSource":"Trouter","context":"preferredTokenTypes: Skype,AAD,CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.332988:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [ic3-gateway-token-helper-get-token-type-from-config][success][scenarioEventData][{"commandSource":"Trouter","context":"SupportedTokenType: CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.333030:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [ic3-gateway-token-helper-protocol-to-use][success][scenarioEventData][{"commandSource":"Trouter","context":"protocolToUse: CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.333051:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [ic3-gateway-token-helper-acquire-aad-token-start][success][scenarioEventData][{"authEventData":"resource: https://ic3.teams.office.com, tokenToRenew: false","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.340661:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.340708:INFO:CONSOLE:16] "MutationTitle: Extracting unread count {"hasMatch":true,"extractedNumber":4}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.340751:INFO:CONSOLE:16] "MutationTitle: Dispatching unread-count event with number: 4", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.340765:INFO:CONSOLE:16] "[TRAY_DIAG] Activity count update initiated {"newCount":4,"previousCount":0,"timestamp":"2026-05-19T05:13:32.340Z","willFlash":true,"suggestion":"Monitor renderTimeMs and totalTimeMs for performance issues"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.411267:INFO:CONSOLE:16] "Found search navigation region, injecting navigation buttons before it", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.411316:INFO:CONSOLE:16] "Navigation buttons injected as sibling before search region", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.411661:INFO:CONSOLE:16] "Navigation buttons injected successfully", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.413459:INFO:CONSOLE:3] "Uncaught Error: UPR: "Error: Discover::regionGtm::InvalidResponse - authService is missing in discover response"", source: https://teams.cloud.microsoft/v2/worker/precompiled-web-worker-b25247c3e3d88ec4.js### (3)
[12249:0519/071332.453561:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [ic3-gateway-token-helper-acquire-aad-token-end][success][scenarioEventData][{"authEventData":"resource: https://ic3.teams.office.com, expiry_AuthService: 1779253873, deviceTime: 1779167612340, fromCache: true","message":"resource: https://ic3.teams.office.com, expiry_AuthService: 1779253873, deviceTime: 1779167612340, fromCache: true","status":"success","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.453608:INFO:CONSOLE:334] "[Auth]: [Telemetry][b6bdbc06-fc9e-483e-b9a2-a839998737a0][get_ic3_gateway_token] [stop][success] [e]{"subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.471827:INFO:CONSOLE:16] "[TRAY_DIAG] Icon render completed, sending tray update {"count":4,"renderTimeMs":131,"iconDataLength":7798,"willFlash":true,"performanceNote":"Slow icon rendering detected"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.475295:INFO:CONSOLE:16] "[TRAY_DIAG] Tray update IPC sent {"count":4,"totalTimeMs":131,"ipcCallTimeMs":0,"performanceNote":"Normal tray update speed"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.604147:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.604336:INFO:CONSOLE:16] "MutationTitle: Number unchanged (4), skipping event dispatch", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071332.636915:INFO:CONSOLE:1] "Origin trial controlled feature not enabled: 'media-playback-while-not-visible'.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/819876-dd4f502037795eec.js (1)
[12249:0519/071332.636970:INFO:CONSOLE:1] "Unrecognized feature: 'local-network-access'.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/819876-dd4f502037795eec.js (1)
[12249:0519/071332.646166:INFO:CONSOLE:1236] "An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js (1236)
07:13:32.647 › did-frame-finish-load {} false
[12249:0519/071332.831989:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [start] - telemetry provider created for ic3-gateway-token-helper::getIC3GateWayToken, source: Trouter with shouldCreateScenario: [true]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832033:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [ic3-gateway-token-helper-get-token-start][success][scenarioEventData][{"commandSource":"Trouter","context":"preferredTokenTypes: Skype,AAD,CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832076:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [ic3-gateway-token-helper-get-token-type-from-config][success][scenarioEventData][{"commandSource":"Trouter","context":"SupportedTokenType: CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832090:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [ic3-gateway-token-helper-protocol-to-use][success][scenarioEventData][{"commandSource":"Trouter","context":"protocolToUse: CAE","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832141:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [ic3-gateway-token-helper-acquire-aad-token-start][success][scenarioEventData][{"authEventData":"resource: https://ic3.teams.office.com, tokenToRenew: false","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832474:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [ic3-gateway-token-helper-acquire-aad-token-end][success][scenarioEventData][{"authEventData":"resource: https://ic3.teams.office.com, expiry_AuthService: 1779253873, deviceTime: 1779167612832, fromCache: true","message":"resource: https://ic3.teams.office.com, expiry_AuthService: 1779253873, deviceTime: 1779167612832, fromCache: true","status":"success","subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken"}]", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.832541:INFO:CONSOLE:334] "[Auth]: [Telemetry][02f808f6-4897-44b1-ac24-cc9b5e447202][get_ic3_gateway_token] [stop][success] [e]{"subContext":"ic3-gateway-token-helper::getIC3GateWayToken","eventData":"^source:Trouter,fn:ic3-gateway-token-helper::getIC3GateWayToken","status":"success"}", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~services_i-652bc27b1e092bd7.worker.js (334)
[12249:0519/071332.931935:INFO:CONSOLE:6] "ApiError: Unacceptable or no response.", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071332.932873:INFO:CONSOLE:6] "ApiError: Failed to parse unexpected non-JSON response.", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071332.932963:INFO:CONSOLE:6] "ApiError: ParseResponse: Failed to parse unexpected non-JSON response.", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071332.988985:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.068483:INFO:CONSOLE:6] "ApiError: Prefetch request failed for key: getLinksPrefetchDataId (403)", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071333.069303:INFO:CONSOLE:6] "ApiError: Prefetch request failed for key: getDataPrefetchDataId (403)", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071333.077585:INFO:CONSOLE:6] "undefined", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071333.090212:INFO:CONSOLE:6] "ApiError: Prefetch request failed for key: newsFeedDataId (401)", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (6)
[12249:0519/071333.098734:INFO:CONSOLE:212] "
%cOstrzeżenie!%c
Korzystanie z tego narzędzia naraża Cię na potencjalne zagrożenia bezpieczeństwa, które mogą doprowadzić do uzyskania przez inne osoby dostępu do Twoich osobistych danych w usłudze Office 365 (dokumentów, wiadomości e-mail, konwersacji i nie tylko). Przed kontynuowaniem upewnij się, że ufasz osobie lub organizacji, która poprosiła Cię o dostęp do tego narzędzia.

Więcej informacji znajdziesz tutaj: https://technet.microsoft.com/en-us/library/bb794823.aspx

 font-size:70px;font-family:Helvetica,Arial,sans-serif;font-weight:700;color:red;-webkit-text-stroke:2px black font-size:15px;font-family:Helvetica,Arial,sans-serif;font-weight:700", source: https://res-1.public.onecdn.static.microsoft/files/sp-client/viva-home-assembly_pl-pl_c7094a5a60de8f355f61a813b8e28762.js (212)
[12249:0519/071333.247186:INFO:CONSOLE:2] "AppDataHandlerDatabase closing...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/chunk.0.spwebworker.js (2)
[12249:0519/071333.247242:INFO:CONSOLE:2] "AppDataHandlerDatabase closing...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/chunk.0.spwebworker.js (2)
[12249:0519/071333.248363:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
07:13:33.250 › did-frame-finish-load {} false
[12249:0519/071333.252425:INFO:CONSOLE:42] "[Router] Syncing (tag: LogQos)", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.252570:INFO:CONSOLE:42] "[Router] Syncing controller: VivaHome...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.252644:INFO:CONSOLE:42] "[Router] Sync completed successfully.", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.253682:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.256416:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.257267:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.257651:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.258315:INFO:CONSOLE:16] "Setting disableTimestampOnCopy is correct, stopping polling", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071333.258819:INFO:CONSOLE:561] "Inline Authentication: Token retrieved via Teams SDK.", source: https://gkcp.sharepoint.com/_layouts/15/vivahome.aspx?useTeamsAuth=true&spfx=true&theme=dark&app=portals&locale=pl-pl&appSessionId=5f06244a-fe42-4dde-93f2-39eae291bbc8&sourceOrigin= (561)
[12249:0519/071333.258843:INFO:CONSOLE:566] "Inline Authentication: There is a Token received.", source: https://gkcp.sharepoint.com/_layouts/15/vivahome.aspx?useTeamsAuth=true&spfx=true&theme=dark&app=portals&locale=pl-pl&appSessionId=5f06244a-fe42-4dde-93f2-39eae291bbc8&sourceOrigin= (566)
[12249:0519/071333.260381:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.261657:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.262680:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.379774:INFO:CONSOLE:681] "Inline Authentication: Token-Cookie exchange succeeded.", source: https://gkcp.sharepoint.com/_layouts/15/vivahome.aspx?useTeamsAuth=true&spfx=true&theme=dark&app=portals&locale=pl-pl&appSessionId=5f06244a-fe42-4dde-93f2-39eae291bbc8&sourceOrigin= (681)
[12249:0519/071333.380452:INFO:CONSOLE:42] "[Router] Syncing (tag: LogQos)", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.380522:INFO:CONSOLE:42] "[Router] Syncing controller: VivaHome...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.380697:INFO:CONSOLE:42] "[Router] Sync completed successfully.", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071333.443079:INFO:CONSOLE:81] "Session ID: 342813a2-60b9-0001-e54d-cd0ccb0c775d", source: https://res-1.public.onecdn.static.microsoft/files/sp-client/viva-home-assembly_pl-pl_c7094a5a60de8f355f61a813b8e28762.js (81)
[12249:0519/071333.443130:INFO:CONSOLE:81] "Time in UTC:  Tue, 19 May 2026 05:13:33 GMT", source: https://res-1.public.onecdn.static.microsoft/files/sp-client/viva-home-assembly_pl-pl_c7094a5a60de8f355f61a813b8e28762.js (81)
[12249:0519/071333.486830:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071333.697487:INFO:CONSOLE:2] "AppDataHandlerDatabase closing...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/chunk.0.spwebworker.js (2)
[12249:0519/071333.711065:INFO:CONSOLE:1] "An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/32990-46c646c937ff2652.js (1)
07:13:33.712 › did-frame-finish-load {} false
[12249:0519/071333.740372:INFO:CONSOLE:2] "AppDataHandlerDatabase closing...", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/chunk.0.spwebworker.js (2)
07:13:33.752 › did-frame-finish-load {} false
[12249:0519/071333.939513:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071333.939541:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071333.939554:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071333.939563:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071333.939573:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
07:13:33.980 › [Renderer] Unhandled rejection: {
  message: '[Authentication][DiscoverV2][regionGtm][43f9f3a2...] authService not found in regionGtms table',
  stack: 'Error: [Authentication][DiscoverV2][regionGtm][43f9f3a2...] authService not found in regionGtms table\n' +
    '    at f (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:1206:12261)\n' +
    '    at lF.regionGtm (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js:101:108087)\n' +
    '    at async E (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/services-user-license-45579289155964a5.js:1:1130)',
  timestamp: 1779167613980
}
[12249:0519/071333.981232:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
07:13:34.021 › [CSP] Stripping report-only header from: login.microsoftonline.com
[12249:0519/071334.087273:INFO:CONSOLE:0] "An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.", source: https://teams.cloud.microsoft/v2/authv2#error=login_required&error_description=AADSTS50058%3a+A+silent+sign-in+request+was+sent+but+no+user+is+signed+in.+Trace+ID%3a+661d934c-4288-47bb-826b-156173314000+Correlation+ID%3a+019e3ea7-530a-7fa8-88c6-5532bd4d1a13+Timestamp%3a+2026-05-19+05%3a13%3a34Z&error_uri=https%3a%2f%2flogin.microsoftonline.com%2ferror%3fcode%3d50058&state=eyJpZCI6IjAxOWUzZWE3LTUzMGEtNzY5ZC1iYzJhLWIzNWExY2JhNDI0MiIsIm1ldGEiOnsiaW50ZXJhY3Rpb25UeXBlIjoic2lsZW50In19&clientdata=e%7c50058%7c%7cmicrosoftonline.com%7ceudb (0)
07:13:34.097 › did-frame-finish-load {} false
[12249:0519/071334.258134:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.258163:INFO:CONSOLE:16] "MutationTitle: Extracting unread count {"hasMatch":true,"extractedNumber":9}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.258203:INFO:CONSOLE:16] "MutationTitle: Dispatching unread-count event with number: 9", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.258214:INFO:CONSOLE:16] "[TRAY_DIAG] Activity count update initiated {"newCount":9,"previousCount":4,"timestamp":"2026-05-19T05:13:34.258Z","willFlash":true,"suggestion":"Monitor renderTimeMs and totalTimeMs for performance issues"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.263574:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071334.273805:INFO:CONSOLE:16] "[TRAY_DIAG] Icon render completed, sending tray update {"count":9,"renderTimeMs":15,"iconDataLength":8642,"willFlash":true,"performanceNote":"Normal rendering speed"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.278874:INFO:CONSOLE:16] "[TRAY_DIAG] Tray update IPC sent {"count":9,"totalTimeMs":15,"ipcCallTimeMs":0,"performanceNote":"Normal tray update speed"}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.435527:INFO:CONSOLE:61] "getSerializedKeyForKeypath returned undefined key in InMemoryIndex for table: profiles, with index: email", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/precompiled-web-worker-inner~f-6cabe4d438db3b5b.worker.js (61)
[12249:0519/071334.580746:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.580788:INFO:CONSOLE:16] "MutationTitle: Number unchanged (9), skipping event dispatch", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.616078:INFO:CONSOLE:1236] "An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js (1236)
07:13:34.617 › did-frame-finish-load {} false
[12249:0519/071334.636905:INFO:CONSOLE:16] "Incoming Apollo operation led to missing fields in watched operations (triggering re-fetch)
  Incoming operation(s):
query ComponentsPlatformAppUpgradeBannerInstalledAppQuery
  Affected operation(s):
query ComponentsPlatformAppEntryPersonalAppInstalledAppWithConversationQuery (installedPersonalApp.definition.developerName)
query ComponentsPlatformAppEntryPersonalAppInstalledAppWithConversationQuery (installedPersonalApp.definition.developerName)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071334.671991:INFO:CONSOLE:16] "[floodgate] Floodgate module loaded", source: https://teams.cloud.microsoft/ (16)
07:13:34.759 › did-frame-finish-load {} false
[12249:0519/071335.642199:INFO:CONSOLE:1] "Setting overlaysContent is only supported from the top level browsing context", source: https://res.public.onecdn.static.microsoft/owamail/hashed-v1/scripts/owa.HostedCalendarFunctionalBoot.h.52ffc5ad.js (1)
[12249:0519/071340.158936:INFO:CONSOLE:1236] "An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-entry-6fd9ec41e3e7a5d7.js (1236)
07:13:40.160 › did-frame-finish-load {} false
07:13:40.299 › did-frame-finish-load {} false
[12249:0519/071341.101007:INFO:CONSOLE:1] "Setting overlaysContent is only supported from the top level browsing context", source: https://res.public.onecdn.static.microsoft/owamail/hashed-v1/scripts/owa.HostedCalendarFunctionalBoot.h.52ffc5ad.js (1)
[12249:0519/071341.261867:INFO:CONSOLE:16] "ActivityHub: Events connected successfully", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071341.262067:INFO:CONSOLE:16] "[AUTH_DIAG] Authentication state: {"hasAuthService":true,"hasCoreAuthService":true,"hasAuthProvider":true,"tokenCacheInjected":false}", source: https://teams.cloud.microsoft/ (16)
07:13:43.590 › Power save is disabled using Electron API.
[12249:0519/071343.636506:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071343.636550:INFO:CONSOLE:16] "MutationTitle: Number unchanged (9), skipping event dispatch", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071343.707414:INFO:CONSOLE:16] "[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071343.767734:INFO:CONSOLE:16] "MutationTitle: Title changed", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071343.767798:INFO:CONSOLE:16] "MutationTitle: Number unchanged (9), skipping event dispatch", source: https://teams.cloud.microsoft/ (16)
07:13:43.805 › [Renderer] Window error: {
  message: 'Uncaught Error: Ultrasound service not available',
  filename: 'https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js',
  lineno: 64,
  colno: 1319,
  errorStack: 'Error: Ultrasound service not available\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:61:27454\n' +
    '    at Object.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:64:3866)\n' +
    '    at T (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:64:1875)\n' +
    '    at C (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:64:2278)\n' +
    '    at F.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:64:2788)\n' +
    '    at https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:60:3935\n' +
    '    at Array.forEach (<anonymous>)\n' +
    '    at Q (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:60:3917)\n' +
    '    at Object.next (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:60:4408)\n' +
    '    at T (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/902408-83d87beea13336d1.js:64:1875)',
  timestamp: 1779167623805
}
[12249:0519/071343.806365:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
07:13:43.812 › [Renderer] Unhandled rejection: {
  message: 'Failed getDevices due to no deviceDiscovery module found',
  stack: null,
  timestamp: 1779167623812
}
[12249:0519/071343.812821:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071343.946195:INFO:CONSOLE:1] "Message received from main script", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/wasmvqe-web-worker-inner-ff962eb3ff37dd72.js (1)
[12249:0519/071343.967860:INFO:CONSOLE:12] "wasm instantiation succeeded", source: https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/wasmvqe.worklet-cf56c4bdd5530efd.js (12)
07:13:44.071 › [Renderer] Unhandled rejection: {
  message: 'No start call scenario',
  stack: null,
  timestamp: 1779167624070
}
[12249:0519/071344.071641:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071345.115963:INFO:CONSOLE:2] "Some icons were re-registered. Applications should only call registerIcons for any given icon once. Redefining what an icon is may have unintended consequences. Duplicates include: 
vNextContactCard, vNextOpen", source: https://res-1.cdn.office.net/midgard/versionless/livepersonacard_with-react_33b6c6cadb5f637b669a.js (2)
07:13:53.478 › did-frame-finish-load {} false
[12249:0519/071354.302558:INFO:CONSOLE:1] "Setting overlaysContent is only supported from the top level browsing context", source: https://res.public.onecdn.static.microsoft/owamail/hashed-v1/scripts/owa.HostedCalendarFunctionalBoot.h.52ffc5ad.js (1)
07:13:54.710 › [Renderer] Unhandled rejection: { message: 'undefined', stack: null, timestamp: 1779167634710 }
[12249:0519/071354.710775:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071356.390207:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] getDisplayMedia intercepted (spike #2534 path)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071356.390242:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Audio disabled for getDisplayMedia", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071401.880721:INFO:CONSOLE:16] "[SHORTCUTS] Iframe not available after 30 attempts, giving up", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071402.259884:INFO:CONSOLE:0] "The resource https://res.public.onecdn.static.microsoft/owamail/hashed-v1/scripts/owa.worker.data.aabe0758.js was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://outlook.office.com/hosted/calendar/view/workweek (0)
[12249:0519/071538.568997:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] TFL picker returned source window:1:0, calling getUserMedia", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.571310:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Screen sharing started via TFL picker (0a/1v)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.571633:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Processing stream from getDisplayMedia-via-tfl (0 active)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.571696:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Stream registered (1 total active)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.571728:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Sending screen-sharing-started event (preview window will open)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.571761:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Not sending stream.id to preserve desktopCapturer source ID", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.572069:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Starting UI monitoring for stop buttons", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071538.655337:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Monitoring stop button: "Zatrzymaj udostępnianie"", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.083670:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Stop sharing button clicked: "Zatrzymaj udostępnianie"", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.125328:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Stop sharing button disappeared - meeting likely ended", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.125384:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Stream ending: meeting_ended_button_removed (1 streams, 1 tracks)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.125421:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Screen sharing stopped", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.125436:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Sending screen-sharing-stopped event (meeting_ended_button_removed)", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.125582:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Cleared all active streams and tracks", source: https://teams.cloud.microsoft/ (16)
[12249:0519/071546.183824:INFO:CONSOLE:16] "[SCREEN_SHARE_DIAG] Stream ending: stop_button_clicked (0 streams, 0 tracks)", source: https://teams.cloud.microsoft/ (16)
07:15:47.448 › [Renderer] Unhandled rejection: {
  message: 'onCommandResult[error.name=Error,error.message=[resolveCallingAppEvent] Error resolving calling app event [eventId=fe12d3d5..., error.name=Error, error.message=[resolve] No deferred resolution found for event [eventId=fe12d3d5..., resolutionType=success]]]::resolveCallingAppEvent::Success',
  stack: 'Error: onCommandResult[error.name=Error,error.message=[resolveCallingAppEvent] Error resolving calling app event [eventId=fe12d3d5..., error.name=Error, error.message=[resolve] No deferred resolution found for event [eventId=fe12d3d5..., resolutionType=success]]]::resolveCallingAppEvent::Success\n' +
    '    at mn (https://statics.teams.cdn.office.net/teams-modular-packages/hashed-assets/async-apps-calling-39aff109a2a5808c.js:1:72311)',
  timestamp: 1779167747448
}
[12249:0519/071547.449359:INFO:CONSOLE:16] "Unhandled error/rejection {"isTrusted":true}", source: https://teams.cloud.microsoft/ (16)
07:15:47.596 › Power save is restored using Electron API
[12249:0519/071550.810256:INFO:CONSOLE:2] "Some icons were re-registered. Applications should only call registerIcons for any given icon once. Redefining what an icon is may have unintended consequences. Duplicates include: 
vNextContactCard, vNextOpen", source: https://res-1.cdn.office.net/midgard/versionless/livepersonacard_with-react_33b6c6cadb5f637b669a.js (2)
^C07:15:53.922 › before-quit
07:15:53.922 › window close
[12249:0519/071553.990857:INFO:CONSOLE:0] "The FetchEvent for "https://eu-mobile.events.data.microsoft.com/OneCollector/1.0/?cors=true&content-type=application/x-json-stream" resulted in a network error response: the promise was rejected.", source:  (0)
[12249:0519/071553.991614:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
[12249:0519/071553.991838:INFO:CONSOLE:42] "Uncaught (in promise) TypeError: Failed to fetch", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spserviceworker.js (42)
[12249:0519/071553.995748:INFO:CONSOLE:9] "Unexpected exception sending payload. Ex:[object DOMException]{}", source: https://res-1.public.onecdn.static.microsoft/files/odsp-web-prod_2026-05-01.002/spwebworker.js (9)
07:15:54.029 › window closed
07:15:54.030 › will-quit
07:15:54.031 › quit

@IsmaelMartinez
Copy link
Copy Markdown
Owner Author

Oh, apologies my mistake. I completely messed up the preview window you meant, I assume it was the picker.

I will put a message on the issue and rethink it. thanks for testing

…2534)

Previous iteration of this spike opened an in-app StreamSelector on Wayland
on top of the OS portal picker, producing the double-picker reported on the
PR. The preview thumbnail also failed because its renderer re-captured the
source via getUserMedia, which on Wayland needed a fresh PipeWire token that
was not reusable.

This iteration changes direction:
- Drop the in-app picker route from the renderer interceptor. getDisplayMedia
  goes back to Chromium's native flow: on X11/Win/macOS this lands in our
  setDisplayMediaRequestHandler -> StreamSelector; on Wayland it lands in
  xdg-desktop-portal directly. One picker, not two.
- Replace the preview window's getUserMedia(chromeMediaSource:'desktop')
  re-capture with a MessagePort relay. After the Teams renderer captures the
  share, main posts a port to both renderers via webContents.postMessage; the
  Teams side pumps VideoFrames through with MediaStreamTrackProcessor, the
  preview reconstructs the track via MediaStreamTrackGenerator. Single
  capture, no second portal prompt on Wayland, and roughly halved CPU/GPU
  cost for screen-share streams.

Out of scope for this iteration: removal of the now-unused
get-screen-share-stream / get-screen-share-screen IPC handlers in
screenSharing/service.js, automated tests around the relay, config flag
for the relay path. Left for follow-up once @piotrleszczynski confirms the
preview now renders on his Wayland session.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Comment thread app/browser/preload.js Fixed
Comment thread app/screenSharing/previewWindowPreload.js Fixed
IsmaelMartinez and others added 2 commits May 20, 2026 09:41
…origin

SonarCloud S2819: the two ipcRenderer.on("screen-share-port") forwarders were
calling window.postMessage(..., "*", ports), which is broad enough to be
flagged as a cross-origin concern. Both posts target the same window's main
world, so window.location.origin always matches the receiver - swap "*" for
window.location.origin to satisfy the rule without behavioural change.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… + re-fit preview on source change

Two follow-ups from the review pass on #2534:

1. ScreenSharingService used `#selectedScreenShareSource !== null` as the
   sharing-active signal. The Wayland path now sends `null` (the OS portal
   handles the picker, no desktopCapturer source ID is produced), so the
   prior null-guard left the state stale and `getScreenSharingStatus()`
   returned false while sharing was active. Add a dedicated `#isSharing`
   boolean set on `screen-sharing-started`, cleared on the two stop paths,
   and source it from `isScreenSharingActive()` /
   `#handleGetScreenSharingStatus()`. Source-ID tracking via
   `#selectedScreenShareSource` stays as-is for the X11 path consumers.

2. The preview window's `loadedmetadata` resize guard (`resizeApplied`) was
   one-shot per page load. If Teams swaps the shared source mid-session
   ("Change what's shared"), the new track would render at the prior aspect
   ratio. Reset `resizeApplied = false` and close the previous writer at
   the top of `wirePort` so a second port delivery re-fits cleanly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@piotrleszczynski
Copy link
Copy Markdown

Oh, apologies my mistake. I completely messed up the preview window you meant, I assume it was the picker.

I will put a message on the issue and rethink it. thanks for testing

To be absolutely sure what's the issue:

on mainstream 2.8 version:

  • selecting a screen/window to share works fine
  • sharing a screen with others work fine
  • only thing that does not work is I don't have a window showing what I'm sharing.
image

on spike version:

  • selecting a screen/window to share works, but causes additional docked panel appear, like I described earlier
  • sharing ultimately works, but with additional steps like I described earlier
  • I still don't have a window showing what I'm sharing.

…tmap snapshots (#2534)

Local repro on macOS proved that VideoFrame transfer over a MessagePort does
not survive crossing two BrowserWindow renderer processes: every frame fired
`messageerror` on the preview side and the thumbnail stayed blank.
MediaStreamTrackProcessor + transferable VideoFrame works inside a single
renderer; it does not work cross-renderer because the underlying GPU-backed
buffer (IOSurface on macOS, DMA-BUF on Linux) is not reconstructable on the
receiving side.

Switch the relay to periodic ImageBitmap snapshots, which do transfer
cross-process cleanly:

- Teams renderer attaches a hidden off-screen <video> to the captured stream,
  then ticks an OffscreenCanvas at 5 fps (drawImage -> transferToImageBitmap
  -> port.postMessage(bitmap, [bitmap])). The snapshot is scaled so the
  longest edge is 320px, matching the preview-window size and keeping
  transfer cost low.
- Preview window swaps its <video> + MediaStreamTrackGenerator for a <canvas>
  with a `bitmaprenderer` 2D context; each incoming ImageBitmap is painted
  via transferFromImageBitmap, with a one-shot resize-to-fit on the first
  frame using the bitmap's intrinsic dimensions.

Trade-off: 5 fps thumbnail rather than full 30 fps live mirror. For the
"what am I sharing" preview use case this is intentional - cheap, single
capture path, works cross-platform, works on Wayland without a second
portal prompt.

Confirmed locally on macOS: preview window now renders the active screen
share, zero relay errors across the session.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

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.

3 participants