fix(voice): honour the codec preference in fallback selection (#2390)
fix(voice): honour the codec preference in fallback selection (#2390)
Inspect stored evidence paths
fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.ts
Reading the persisted public view.
Datamining / findings
Evidence records derived from public code, builds, assets, APIs or schemas. A detection is not automatically a release, announcement or confirmed feature.
Classification overview
fix(voice): honour the codec preference in fallback selection (#2390)
fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.tsfix(voice): guard stale screen-share negotiation and probes (#2389)
fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.tsfluxer_app/src/features/voice/engine/ScreenSharePublicationMigration.tsrefactor(voice): bound the screen-share codec wire formats (#2388)
fluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.test.tsfluxer_app/src/features/voice/engine/ScreenShareCodecNegotiation.tsfluxer_app/src/features/voice/engine/ScreenShareCodecNegotiationOptIn.test.tsfluxer_app/src/features/voice/engine/ScreenSharePublicationMigration.tsfluxer_app/src/features/voice/engine/VoiceMediaIdentity.tsfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppCodecGossipAdapter.tsrefactor(voice): request mic and camera permission separately (#2387)
fluxer_app/src/features/auth/state/NewDeviceMonitoring.tsxfluxer_app/src/features/user/components/modals/tabs/hooks/useMediaPermission.test.tsxfluxer_app/src/features/user/components/modals/tabs/hooks/useMediaPermission.tsxfluxer_app/src/features/voice/engine/MediaEngineFacade.tsfluxer_app/src/features/voice/engine/VoiceDevicePermissionState.tsfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppCameraTransition.tsfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppMediaExecutionAdapter.tsxfluxer_app/src/features/voice/state/LocalVoiceState.tsfluxer_app/src/features/voice/utils/MediaDeviceRefresh.test.tsfluxer_app/src/features/voice/utils/MediaDeviceRefresh.tsfluxer_app/src/features/voice/utils/MediaDeviceStartupPreload.tsfluxer_app/src/features/voice/utils/VoiceDeviceManager.tsfluxer_app/src/features/voice/utils/VoiceDevicePermissionTypes.test.tsfix(voice): log local voice state hydration failures (#2386)
fluxer_app/src/features/voice/state/LocalVoiceState.tsrefactor(voice): make screen-share source swaps atomic (#2385)
fluxer_app/src/features/i18n/locales/ar/messages.pofluxer_app/src/features/i18n/locales/bg/messages.pofluxer_app/src/features/i18n/locales/cs/messages.pofluxer_app/src/features/i18n/locales/da/messages.pofluxer_app/src/features/i18n/locales/de/messages.pofluxer_app/src/features/i18n/locales/el/messages.pofluxer_app/src/features/i18n/locales/en-GB/messages.pofluxer_app/src/features/i18n/locales/en-US/messages.pofluxer_app/src/features/i18n/locales/es-419/messages.pofluxer_app/src/features/i18n/locales/es-ES/messages.pofluxer_app/src/features/i18n/locales/fi/messages.pofluxer_app/src/features/i18n/locales/fr/messages.pofluxer_app/src/features/i18n/locales/he/messages.pofluxer_app/src/features/i18n/locales/hi/messages.pofluxer_app/src/features/i18n/locales/hr/messages.pofluxer_app/src/features/i18n/locales/hu/messages.pofluxer_app/src/features/i18n/locales/id/messages.pofluxer_app/src/features/i18n/locales/it/messages.pofluxer_app/src/features/i18n/locales/ja/messages.pofluxer_app/src/features/i18n/locales/ko/messages.pofluxer_app/src/features/i18n/locales/lt/messages.pofluxer_app/src/features/i18n/locales/nl/messages.pofluxer_app/src/features/i18n/locales/no/messages.pofluxer_app/src/features/i18n/locales/pl/messages.pofluxer_app/src/features/i18n/locales/pt-BR/messages.pofluxer_app/src/features/i18n/locales/ro/messages.pofluxer_app/src/features/i18n/locales/ru/messages.pofluxer_app/src/features/i18n/locales/sv-SE/messages.pofluxer_app/src/features/i18n/locales/th/messages.pofluxer_app/src/features/i18n/locales/tr/messages.pofluxer_app/src/features/i18n/locales/uk/messages.pofluxer_app/src/features/i18n/locales/vi/messages.pofluxer_app/src/features/i18n/locales/zh-CN/messages.pofluxer_app/src/features/i18n/locales/zh-TW/messages.pofluxer_app/src/features/voice/engine/MediaEngineFacade.tsfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareExecutionAdapter.tsxfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareLiveKitFlows.tsfluxer_app/src/features/voice/engine/voice_screen_share_manager/DisplayMediaCapture.tsfluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.tsfluxer_app/src/features/voice/state/ActiveScreenShareSource.test.tsfluxer_app/src/features/voice/state/ActiveScreenShareSource.tsfluxer_app/src/features/voice/utils/ScreenShareStartFlow.test.tsfluxer_app/src/features/voice/utils/ScreenShareStartFlow.tsfeat(voice): request web share audio via the browser picker (#2384)
fluxer_app/src/features/voice/utils/ScreenShareOptions.test.tsfluxer_app/src/features/voice/utils/ScreenShareOptions.tsfluxer_app/src/features/voice/utils/ScreenShareStartFlow.tsfix(voice): refresh camera capture when the device changes (#2383)
fluxer_app/src/features/voice/commands/VoiceSettingsCommands.tsfix(voice): polish the stream settings menu (#2382)
fluxer_app/src/features/i18n/locales/ar/messages.pofluxer_app/src/features/i18n/locales/bg/messages.pofluxer_app/src/features/i18n/locales/cs/messages.pofluxer_app/src/features/i18n/locales/da/messages.pofluxer_app/src/features/i18n/locales/de/messages.pofluxer_app/src/features/i18n/locales/el/messages.pofluxer_app/src/features/i18n/locales/en-GB/messages.pofluxer_app/src/features/i18n/locales/en-US/messages.pofluxer_app/src/features/i18n/locales/es-419/messages.pofluxer_app/src/features/i18n/locales/es-ES/messages.pofluxer_app/src/features/i18n/locales/fi/messages.pofluxer_app/src/features/i18n/locales/fr/messages.pofluxer_app/src/features/i18n/locales/he/messages.pofluxer_app/src/features/i18n/locales/hi/messages.pofluxer_app/src/features/i18n/locales/hr/messages.pofluxer_app/src/features/i18n/locales/hu/messages.pofluxer_app/src/features/i18n/locales/id/messages.pofluxer_app/src/features/i18n/locales/it/messages.pofluxer_app/src/features/i18n/locales/ja/messages.pofluxer_app/src/features/i18n/locales/ko/messages.pofluxer_app/src/features/i18n/locales/lt/messages.pofluxer_app/src/features/i18n/locales/nl/messages.pofluxer_app/src/features/i18n/locales/no/messages.pofluxer_app/src/features/i18n/locales/pl/messages.pofluxer_app/src/features/i18n/locales/pt-BR/messages.pofluxer_app/src/features/i18n/locales/ro/messages.pofluxer_app/src/features/i18n/locales/ru/messages.pofluxer_app/src/features/i18n/locales/sv-SE/messages.pofluxer_app/src/features/i18n/locales/th/messages.pofluxer_app/src/features/i18n/locales/tr/messages.pofluxer_app/src/features/i18n/locales/uk/messages.pofluxer_app/src/features/i18n/locales/vi/messages.pofluxer_app/src/features/i18n/locales/zh-CN/messages.pofluxer_app/src/features/i18n/locales/zh-TW/messages.pofluxer_app/src/features/voice/components/StreamSettingsMenuContent.module.cssfluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsxrefactor(voice): pin screen share to a fixed 7 Mbps bitrate (#2381)
fluxer_app/src/features/i18n/locales/ar/messages.pofluxer_app/src/features/i18n/locales/bg/messages.pofluxer_app/src/features/i18n/locales/cs/messages.pofluxer_app/src/features/i18n/locales/da/messages.pofluxer_app/src/features/i18n/locales/de/messages.pofluxer_app/src/features/i18n/locales/el/messages.pofluxer_app/src/features/i18n/locales/en-GB/messages.pofluxer_app/src/features/i18n/locales/en-US/messages.pofluxer_app/src/features/i18n/locales/es-419/messages.pofluxer_app/src/features/i18n/locales/es-ES/messages.pofluxer_app/src/features/i18n/locales/fi/messages.pofluxer_app/src/features/i18n/locales/fr/messages.pofluxer_app/src/features/i18n/locales/he/messages.pofluxer_app/src/features/i18n/locales/hi/messages.pofluxer_app/src/features/i18n/locales/hr/messages.pofluxer_app/src/features/i18n/locales/hu/messages.pofluxer_app/src/features/i18n/locales/id/messages.pofluxer_app/src/features/i18n/locales/it/messages.pofluxer_app/src/features/i18n/locales/ja/messages.pofluxer_app/src/features/i18n/locales/ko/messages.pofluxer_app/src/features/i18n/locales/lt/messages.pofluxer_app/src/features/i18n/locales/nl/messages.pofluxer_app/src/features/i18n/locales/no/messages.pofluxer_app/src/features/i18n/locales/pl/messages.pofluxer_app/src/features/i18n/locales/pt-BR/messages.pofluxer_app/src/features/i18n/locales/ro/messages.pofluxer_app/src/features/i18n/locales/ru/messages.pofluxer_app/src/features/i18n/locales/sv-SE/messages.pofluxer_app/src/features/i18n/locales/th/messages.pofluxer_app/src/features/i18n/locales/tr/messages.pofluxer_app/src/features/i18n/locales/uk/messages.pofluxer_app/src/features/i18n/locales/vi/messages.pofluxer_app/src/features/i18n/locales/zh-CN/messages.pofluxer_app/src/features/i18n/locales/zh-TW/messages.pofluxer_app/src/features/user/components/modals/tabs/advanced_settings_tab/AdvancedVideoControls.tsxfluxer_app/src/features/voice/commands/VoiceSettingsCommands.tsfluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsxfluxer_app/src/features/voice/components/useStatsForNerds.tsfluxer_app/src/features/voice/engine/AdaptiveScreenShareEngine.tsfluxer_app/src/features/voice/engine/voice_screen_share_manager/shared.tsfluxer_app/src/features/voice/state/VoiceSettings.tsfluxer_app/src/features/voice/utils/ScreenShareOptions.test.tsfluxer_app/src/features/voice/utils/ScreenShareOptions.tsfluxer_app/src/features/voice/utils/ScreenShareStartFlow.tsfluxer_app/src/features/voice/utils/StatsForNerdsCopy.tsrefactor(voice): clamp premium video quality at read time (#2380)
fluxer_app/src/features/gateway/events/GatewayReady.tsfluxer_app/src/features/user/events/UserUpdate.tsfluxer_app/src/features/voice/components/modals/CameraPreviewModal.tsxfluxer_app/src/features/voice/state/VoiceSettings.tsfeat(voice): add screen-share audio and rollback error handling (#2379)
fluxer_app/src/features/i18n/locales/ar/messages.pofluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.jsonfluxer_app/src/features/i18n/locales/bg/messages.pofluxer_app/src/features/i18n/locales/cs/messages.pofluxer_app/src/features/i18n/locales/da/messages.pofluxer_app/src/features/i18n/locales/de/messages.pofluxer_app/src/features/i18n/locales/el/messages.pofluxer_app/src/features/i18n/locales/en-GB/messages.pofluxer_app/src/features/i18n/locales/en-US/messages.pofluxer_app/src/features/i18n/locales/es-419/messages.pofluxer_app/src/features/i18n/locales/es-ES/messages.pofluxer_app/src/features/i18n/locales/fi/messages.pofluxer_app/src/features/i18n/locales/fr/messages.pofluxer_app/src/features/i18n/locales/he/messages.pofluxer_app/src/features/i18n/locales/hi/messages.pofluxer_app/src/features/i18n/locales/hr/messages.pofluxer_app/src/features/i18n/locales/hu/messages.pofluxer_app/src/features/i18n/locales/id/messages.pofluxer_app/src/features/i18n/locales/it/messages.pofluxer_app/src/features/i18n/locales/ja/messages.pofluxer_app/src/features/i18n/locales/ko/messages.pofluxer_app/src/features/i18n/locales/lt/messages.pofluxer_app/src/features/i18n/locales/nl/messages.pofluxer_app/src/features/i18n/locales/no/messages.pofluxer_app/src/features/i18n/locales/pl/messages.pofluxer_app/src/features/i18n/locales/pt-BR/messages.pofluxer_app/src/features/i18n/locales/ro/messages.pofluxer_app/src/features/i18n/locales/ru/messages.pofluxer_app/src/features/i18n/locales/sv-SE/messages.pofluxer_app/src/features/i18n/locales/th/messages.pofluxer_app/src/features/i18n/locales/tr/messages.pofluxer_app/src/features/i18n/locales/uk/messages.pofluxer_app/src/features/i18n/locales/vi/messages.pofluxer_app/src/features/i18n/locales/zh-CN/messages.pofluxer_app/src/features/i18n/locales/zh-TW/messages.pofluxer_app/src/features/voice/components/ActiveScreenShareMenu.tsxfluxer_app/src/features/voice/components/StreamSettingsMenuContent.tsxfluxer_app/src/features/voice/components/alerts/ScreenShareRollbackIncompleteModal.tsxfluxer_app/src/features/voice/utils/ScreenShareAudioCaptureError.tsfluxer_app/src/features/voice/utils/ScreenShareRollbackIncompleteError.tsfluxer_app/src/features/voice/utils/ScreenShareUtils.tsxfeat(voice): add the camera background effects pipeline (#2378)
biome.jsonfluxer_app/package.jsonfluxer_app/rspack.config.mjsfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppMediaExecutionAdapter.tsxfluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppPermissionAdapter.tsfluxer_app/src/features/voice/utils/CameraVideoProcessor.tsfluxer_app/src/features/voice/utils/VideoBackgroundProcessor.tsfluxer_app/src/features/voice/utils/camera-effects/AggregateOperations.tsfluxer_app/src/features/voice/utils/camera-effects/BoundedResponse.tsfluxer_app/src/features/voice/utils/camera-effects/CameraCaptureContract.tsfluxer_app/src/features/voice/utils/camera-effects/ErrorDiagnostic.tsfluxer_app/src/features/voice/utils/camera-effects/MediaStreamTrackProcessorPolyfill.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraBackgroundSupport.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectCanvasRenderer.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectCustomFrameSource.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectCustomImage.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectMask.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectPipeline.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectProtocol.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectRenderer.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectSegmentationOwner.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectVideoFrameSource.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWebGLMaskRefiner.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWebGPUConstants.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWebGPUPipelines.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWebGPURenderer.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWebGPUShaders.tsfluxer_app/src/features/voice/utils/camera-effects/WebCameraEffectWorker.tsfluxer_app/src/features/voice/utils/camera-effects/WebSelfieSegmenter.tsfluxer_app/src/features/voice/utils/camera-effects/models/NOTICE.txtfluxer_app/src/features/voice/utils/camera-effects/models/selfie_segmentation_256x256.d.onnx.tsfluxer_app/src/features/voice/utils/camera-effects/models/selfie_segmentation_256x256.onnxfluxer_app/src/types/assets.d.tsfluxer_app/src/types/ort-wasm-asset.d.tsfluxer_app/src/types/rspack-runtime.d.tsfluxer_app/src/types/webgpu.d.tsfluxer_app/tsconfig.jsonpnpm-lock.yamlpnpm-workspace.yamlfeat(backgrounds): accept webm custom call backgrounds (#2377)
fluxer_app/src/features/app/config/I18nDisplayConstants.tsfluxer_app/src/features/theme/components/modals/BackgroundImageGalleryModal.tsxfluxer_app/src/features/theme/utils/BackgroundImageDB.tsfluxer_desktop/src/main/VoiceBackgroundMediaCache.tsvendor(livekit): make local track swaps transactional (#2376)
fluxer_app/pkgs/livekit-client/VENDORING.mdfluxer_app/pkgs/livekit-client/src/room/track/LocalAudioTrack.tsfluxer_app/pkgs/livekit-client/src/room/track/LocalTrack.tsfluxer_app/pkgs/livekit-client/src/room/track/LocalVideoTrack.tsvendor(livekit): await setParameters in setDegradationPreference (#2375)
fluxer_app/pkgs/livekit-client/src/room/track/LocalVideoTrack.tsfeat(voice-engine): add a sourceLifecycle.removed event (#2374)
packages/voice_engine_v2/src/core/reducer.test.tspackages/voice_engine_v2/src/core/reducers/_dispatch.tspackages/voice_engine_v2/src/core/reducers/sourceLifecycles.tspackages/voice_engine_v2/src/index.tspackages/voice_engine_v2/src/protocol/events.tspackages/voice_engine_v2/src/protocol/index.tsfix(ui): let callers style the audio level meter (#2373)
fluxer_app/src/features/user/components/modals/tabs/components/AudioLevelMeter.tsxfeat(sound): play one-shot sounds immediately and abortably (#2372)
fluxer_app/src/features/notification/utils/SoundUtils.tsfluxer_app/src/features/ui/commands/SoundCommands.tsfluxer_app/src/features/ui/state/Sound.tsfix(ui): keep context menus clear of the native titlebar (#2371)
fluxer_app/src/features/app/hooks/useAntiShiftFloating.tsfluxer_app/src/features/i18n/locales/ar/messages.pofluxer_app/src/features/i18n/locales/bg/messages.pofluxer_app/src/features/i18n/locales/cs/messages.pofluxer_app/src/features/i18n/locales/da/messages.pofluxer_app/src/features/i18n/locales/de/messages.pofluxer_app/src/features/i18n/locales/el/messages.pofluxer_app/src/features/i18n/locales/en-GB/messages.pofluxer_app/src/features/i18n/locales/en-US/messages.pofluxer_app/src/features/i18n/locales/es-419/messages.pofluxer_app/src/features/i18n/locales/es-ES/messages.pofluxer_app/src/features/i18n/locales/fi/messages.pofluxer_app/src/features/i18n/locales/fr/messages.pofluxer_app/src/features/i18n/locales/he/messages.pofluxer_app/src/features/i18n/locales/hi/messages.pofluxer_app/src/features/i18n/locales/hr/messages.pofluxer_app/src/features/i18n/locales/hu/messages.pofluxer_app/src/features/i18n/locales/id/messages.pofluxer_app/src/features/i18n/locales/it/messages.pofluxer_app/src/features/i18n/locales/ja/messages.pofluxer_app/src/features/i18n/locales/ko/messages.pofluxer_app/src/features/i18n/locales/lt/messages.pofluxer_app/src/features/i18n/locales/nl/messages.pofluxer_app/src/features/i18n/locales/no/messages.pofluxer_app/src/features/i18n/locales/pl/messages.pofluxer_app/src/features/i18n/locales/pt-BR/messages.pofluxer_app/src/features/i18n/locales/ro/messages.pofluxer_app/src/features/i18n/locales/ru/messages.pofluxer_app/src/features/i18n/locales/sv-SE/messages.pofluxer_app/src/features/i18n/locales/th/messages.pofluxer_app/src/features/i18n/locales/tr/messages.pofluxer_app/src/features/i18n/locales/uk/messages.pofluxer_app/src/features/i18n/locales/vi/messages.pofluxer_app/src/features/i18n/locales/zh-CN/messages.pofluxer_app/src/features/i18n/locales/zh-TW/messages.pofluxer_app/src/features/ui/action_menu/ContextMenu.tsx