15816 Commits
Author SHA1 Message Date
Matt Gajownik 2735cc48ce frontend: Queue navigation in auth window to fix crash
When the browser panel inside a dialog navigates to a new URL, it calls
the navigation URL handler from its own event loop. The OAuth dialog has
installed such a handler to check each navigation event's URL for a
possible "code" argument.

If such a "code" argument is found, the dialog's "accept" method is
called, which in turn will call "closeBrowser" as the dialog attempts to
close itself.

This results in browser shutdown code running in the middle of CEF
draining its main event loop of pending tasks.

In the Chrome Runtime this now results in a crash within CEF's
"InterceptNavigationThrottle" destructor, which is executed as part of
the browser shutdown.

Decoupling the URL change handler of the dialog from the URL change
handler of the browser panel ensures that the browser shutdown is
initiated from the Qt main event loop and not the CEF main event loop
and resolves the issue.
2026-10-27 16:52:08 -04:00
FiniteSingularity 66b1abd588 frontend: Fix plugin manager Flatpak data path
Update the Plugin Manager Flatpak loader data path to match the Flatpak
third party plugin merge-dir.
2026-10-27 15:53:15 -04:00
prgmitchell 3dca8cd8cd libobs/graphics: Restore image memory usage tracking
Pass the image memory counter to the internal initializer so legacy
slideshows enforce their 400mb limit.

Amends c3046ec172.
Amends f86e9c1d59.
2026-10-27 14:21:36 -04:00
Ryan Foster 72e8665571 CI: Update deps to 2026-10-23 release
Notable Changes:
* deps.ffmpeg: Backport libvpx assembly bug fix
* deps.qt: Backport QTBUG-147602 patch
33.0.0
2026-10-23 14:14:36 -04:00
Dennis Sädtler 7fc60ea381 rtmp-services: Update Twitch/IVS Ingests
Replace legacy ingest URLs with current ones as the old ones may be
disabled in the future.
2026-10-22 10:31:39 -07:00
Ryan Foster 95d5223b66 obs-browser: Update version to 2.27.4
obsproject/obs-browser@23075aa Disable Chromium function to de-elevate main process
33.0.0-rc3
2026-10-20 17:15:49 -04:00
Ryan Foster f1c0a11644 obs-browser: Update version to 2.27.3
obsproject/obs-browser@6b6d456 Additional restrictions on custom scheme handler
obsproject/obs-browser@4d341a6 Fix handling of filepaths in migration
33.0.0-rc2
2026-10-16 18:05:42 -04:00
PatTheMav 1b38b75338 cmake: Fix regression when disabling core modules
To create a build system that only produces the core libraries required
for plugin development (libobs and obs-frontend-api), developers could
use the "ENABLE_PLUGINS" cache variable.

This variable was removed and replaced with "ENABLE_CORE_MODULES"
for the plugin manager feature, but disabling building of core modules
made it impossible to build libobs (as the required files were not
generated).

This commit adds temporary support for the deprecated "ENABLE_PLUGINS"
variable (with a deprecation warning) and also ensures that libobs can
be built successfully without any core modules enabled.
2026-10-16 15:12:08 -04:00
Service Checker 1ad6110186 rtmp-services: Remove defunct servers/services 2026-10-14 19:58:57 -04:00
Joel Bethke 6069331d3c build-aux: Update steam vcam script
Remove the registry key check for the virtual camera module installer
for steam, and update to the new paths for OBS v33+.
2026-10-14 15:00:52 -04:00
Warchamp7 e1b14b44b4 frontend: Fix add source dialog scrollbar policy 2026-10-14 14:17:51 -04:00
Joel Bethke b92a28ffdf win-dshow: Update virtualcam installer scripts
Remove the registry key check for the virtual camera module installer.
The regsvr32 will perform this check itself, so we don't need to if the
registration is already present. However, if we want to update the path,
simply checking that the key exists will prevent us from being able to
update the path in the future, and as necessary for OBS v33+. This also
corrects the incorrect file paths to the modules in the new core plugin
structure.
2026-10-14 13:46:43 -04:00
Warchamp7 685c2dec5f frontend: Hide warning icon for legacy plugins 2026-10-14 13:23:54 -04:00
prgmitchell f082210c17 frontend: Remove legacy replay buffer hotkey code
Remove obsolete replay buffer hotkey code to stop JSON errors
when switching profiles.
2026-10-13 14:34:11 -04:00
Ryan Foster 7d98bebe11 obs-websocket: Update version to 5.7.6
Changes:
 - Update translations from Crowdin
33.0.0-rc1
2026-10-08 16:03:49 -04:00
Warchamp7 bbfbdf9a5e frontend: Unparent missing encoders popup
Parenting the missing encoders dialog means it doesn't show up in the
taskbar. Since the popup is shown before the main window is shown, it
can end up appearing behind other windows if the user focuses another
application after opening OBS. This can lead to confusion as there is
no indication OBS has opened, but is currently waiting for the dialog
to complete.
2026-10-08 15:38:08 -04:00
Exeldro 822851a2e9 libobs: Fix obs_canvas_reset_video when other canvas is active 2026-10-08 15:11:05 -04:00
Kiryl Ushkalau 5b07ed1f95 frontend: Fix profile import with trailing path slash
The directory chooser can return a path that ends with a separator,
e.g. when the path is typed manually or on some platform dialogs.
std::filesystem::path::filename() returns an empty string for such a
path, so the imported profile gets an empty directory name and its
files are copied directly into the profiles root instead of a new
profile directory. No new profile appears in the profile list.

Normalize the selected path with QDir::cleanPath() before building the
filesystem path, which strips the trailing separator and yields the
actual directory name.
2026-10-08 14:45:15 -04:00
Ryan Foster 3ac7ff8cc0 obs-browser: Update version to 2.27.2
obsproject/obs-browser@058c30f Temporarily recreate implied Localhost permissions
2026-10-08 14:21:11 -04:00
Warchamp7 7c188a79aa frontend: Fix removal of missing plugins
Updates the plugin manager window rows to use a local copy of
ModuleInfo.

Passing around a pointer to the actual entry within the modules_ vector
felt like a sensible optimization for updating the enabled state of
entries. However when deleting entries from the Missing category it
means pointers to anything after the deleted entry become incorrect or
invalidated.
2026-10-08 13:57:48 -04:00
Warchamp7 ace39800c4 frontend: Fix display of plugins in safe mode
The Status enum is renamed to Category as it's more appropriate.
Adds handling for plugins in safe mode by always putting them in the
Installed category since we can't know if they're Errored or Missing.

Also displays the Disabled indicator for all plugins in safe mode.
2026-10-08 12:22:18 -04:00
Warchamp7 c887ec94e9 frontend: Fix failed plugin popup in safe mode
loadState_ defaults to Failure was not being set after core success.
2026-10-08 12:22:18 -04:00
Matt Gajownik e7f0b0d43c Update translations from Crowdin 2026-10-07 22:04:29 -04:00
Ryan Foster 39c2de975b obs-browser: Update version to 2.27.1
Fixed:
 * Fixed audio monitoring on browser sources briefly being enabled
 * Fixed browser sources appearing blank on refresh

obsproject/obs-browser@9124be1 Update translations from Crowdin
obsproject/obs-browser@ae92c43 Don't override error page for an aborted page load
obsproject/obs-browser@810c52e Clear page rather than redirect on failed page load
obsproject/obs-browser@de7e68f Restore audio mute on navigation
obsproject/obs-browser@24b5c8d CI: Update clang-format to 22.1.3
obsproject/obs-browser@5b50328 clang-format: Format files
obsproject/obs-browser@8349dee CI: Update and pin actions/checkout to v7.0.1
obsproject/obs-browser@a82b017 cmake: Update require CMake version to match obs-studio
obsproject/obs-browser@d7260a6 cmake: Format with gersemi 0.25.0
obsproject/obs-browser@1e313ae Update version to 2.27.1
2026-10-07 19:25:57 -04:00
tytan652 c5bcbca63f libobs: Add PIC to obs-core-modules
Since the object provides functions, position independent code needs to
be enabled.
2026-10-05 17:50:18 -04:00
Ryan Foster cffa83ba55 obs-websocket: Update version to 5.7.5
Changes:
 - forms: Remove Qt<6.10 code
 - base: Don't start WebSocket server in Safe Mode
33.0.0-beta6
2026-10-02 18:23:43 -04:00
Ryan Foster 194782f3b5 shared: Remove Qt<6.10 code
Qt 6.10 is the minimum supported Qt version now.
2026-10-02 16:13:45 -04:00
Ryan Foster 0c2f09a1e9 frontend: Remove Qt<6.10 code
Qt 6.10 is the minimum supported Qt version now.
2026-10-02 16:13:45 -04:00
Ryan Foster ff5c7fc5d6 linux-v4l2: Remove support for FFmpeg<8.0
Remove compatibility code for FFmpeg<8.0 that targets:
* libavcodec < 62
2026-10-02 15:52:04 -04:00
Ryan Foster a677505514 obs-ffmpeg: Remove support for FFmpeg<8.0
Remove compatibility code for FFmpeg<8.0 that targets:
* libavcodec < 62
* libavformat < 62
2026-10-02 15:52:04 -04:00
Ryan Foster 4b7854b920 win-dshow Set minimum FFmpeg version to 8.0 2026-10-02 15:52:04 -04:00
Ryan Foster 384d69a48a frontend: Set minimum FFmpeg version to 8.0 2026-10-02 15:52:04 -04:00
Ryan Foster cbedd0acc4 media-playback: Set minimum FFmpeg version to 8.0 2026-10-02 15:52:04 -04:00
Ryan Foster 57a58b4a5d libobs: Increase minimum FFmpeg version to 8.0 2026-10-02 15:52:04 -04:00
Alfred Wingate a93fae1cce decklink: Include previously implicit header for Linux
Libcxx-23 is removing transitive includes. This caused build failures
related to headers that were already included for Windows. Just
inherit them unconditionally.

See-Also: https://discourse.llvm.org/t/rfc-remove-unused-transitive-includes-from-the-libc-headers/90157
Signed-off-by: Alfred Wingate <parona@protonmail.com>
2026-10-02 15:25:30 -04:00
Alfred Wingate c06df9d91a frontend: Include previously implicit headers for non-Windows
Libcxx-23 is removing transitive includes. This caused build failures
related to headers that were already included for Windows. Just
inherit them unconditionally.

See-Also: https://discourse.llvm.org/t/rfc-remove-unused-transitive-includes-from-the-libc-headers/90157
Signed-off-by: Alfred Wingate <parona@protonmail.com>
2026-10-02 15:25:30 -04:00
prgmitchell 04d8967656 frontend: Restore OBS wrappers in callbacks
Restore OBS wrappers so objects stay alive until their callbacks run.
2026-10-02 13:16:24 -04:00
Ryan Foster 97ca37291c docs: Update graphics/image-file.h docs
Follow-up to c3046ec172.

That commit completely replaced the various gs_image_file* structs and
functions, but the docs were not updated. Update the docs with the new
structs and functions.
2026-10-01 18:21:23 -04:00
Ryan Foster 6377af46bb frontend-tools: Update clock Lua script for new gs_image_file_ex
Follow-up to c3046ec172.

That commit completely replaced the various gs_image_file* structs and
functions, but this script was not updated. Use the new structs and
functions to fix the script.
2026-10-01 18:00:12 -04:00
Warchamp7 ef5814431c win-capture: Fix data directory path 2026-10-01 17:37:35 -04:00
PatTheMav e7136951c0 cmake: Fix bundling of scripting files on macOS
Scripting libraries for Python and Lua need to be placed in the runtime
plugin directory of the application bundle on macOS.

This was previously handled by the same code that handles the first-
party runtime modules, but the scripting libraries are not libobs
modules and thus need to be handled separately.
2026-10-01 17:18:28 -04:00
FiniteSingularity d20b4698ca cmake: Make obs-core-modules header public
This PR makes the obs-core-modules.h header public to remain consistent
with other headers in the libobs/cmake directory.
2026-10-01 16:51:49 -04:00
Warchamp7 a8b04ac5e1 frontend: Limit missing encoder check by output mode
Adjust the check for missing encoders to only check encoders for the
currently set Output Mode (Simple or Advanced).

Avoids a confusing warning when OBS is set to Simple output mode but
the encoder that was previously configured for Advanced has gone
missing.
33.0.0-beta5
2026-09-30 15:04:25 -04:00
Warchamp7 7549b8710e libobs: Fix data for updated monitoring
Fixed incorrectly saving this bool value as an int.

Fixed the incorrect settings key being used when loading the source.
2026-09-30 13:40:45 -04:00
Warchamp7 2c4e446a22 updater: Retain legacy module path support
The updater itself is distributed and updated for all versions of OBS
for which updates are still available. As such, it needs to be aware
of the legacy plugin location for versions before v33 and the new
location for v33 onwards.

When checking if the browser plugin exists, check both locations.

When installing the virtual cam, we reference the manifest for the
version we are updating to and use the appropriate location.
2026-09-30 12:26:22 -04:00
Warchamp7 2a4dfeb556 frontend: Fix source icon state appearing inverted 2026-09-29 17:01:46 -04:00
Warchamp7 ac6e838c92 frontend: Fix rich text on macOS warning popups 2026-09-29 16:40:26 -04:00
tfo db2b2178f0 frontend: Unregister save replay buffer hotkey 2026-09-29 16:20:28 -04:00
Ryan Foster 50530ce904 Merge pull request #13935 from RytoEX/update-bouf
Update bouf to v0.6.6
33.0.0-beta4
2026-09-25 17:37:16 -04:00
Ryan Foster 93cbacce63 CI: Update sign-windows commit 2026-09-25 17:17:22 -04:00