We already started using SetProcessMitigationPolicy before #5164 got
merged and we dropped Windows 7 support, so we can do away with the
runtime detection too.
This move allows us to separate appcast creation from the main build
jobs, which will enable us to increase the number of deltas we generate
without impacting the push workflow on tags.
This largely moves the existing jobs from push to publish with two small
changes:
1. the needs condition was changed from build-project to check-tag
2. the if condition was changed from github.ref_type == 'tag' to
fromJSON(needs.check-tag.outputs.validTag)
The windows-2022 runner had NSIS pre-installed. The windows-2025 runners
are slimmer and do not have NSIS installed. The windows-2025 runners do
have winget available, which can be used to install NSIS.
The windows-2025 runners do not have NSIS in PATH by default, so we need
to specify it manually in the config files.
Follow-up to ac19ea6633.
The windows-2022 runner had NSIS pre-installed. The windows-2025 runners
are slimmer and do not have NSIS installed. The windows-2025 runners do
have winget available, which can be used to install NSIS.
The windows-2025 runners do not have NSIS in PATH by default, so we need
to specify it manually in the config files.
Microsoft's sarif-multitool requires platform-specific binaries to run
(even though it's installed via npm) and does not ship an Apple Silicon
binary. With Rosetta 2 being deprecated in macOS 27, the tool would
stop working once the project had updated to macOS 27 runners.
Using "jq" provides a cleaner alternative, as the required
transformation is transparent in code and does not require any
additional tools or binaries.
Recent Homebrew versions require 3rd party taps to be explicitly trusted
before they can be used to install formulas.
The "obsproject/tools" tap is used to provide pinned formulas of some
code formatters used by CI and thus needs to be trusted to enable
installation of these formulas.
Previously it was setting the `averageBitRate` value to what is being set in Variable Bitrate rate control mode. However, CQVBR is initialized with a value of `0` and instead Target Quality is being used. This adds a check for the CQVBR mode and if it's set will update the `targetQuality` value, otherwise it will update `averageBitRate`.
Additionally reset `averageBitRate` to 0 if CQVBR is active, and reset `targetQuality` to 0 if it's not in any VBR mode
This will also allow us to move to clang-format 22 which ships with
VS 2026.
* Update the CI image to windows-2025-vs2026
* Update VS generator to 2026
* Update Windows SDK to 26100
This was used to ensure that we had Python 3.12 or newer. The Ubuntu
24.04 runners now have Python 3.12, and the macOS 15 and 26 runners have
Python 3.14.
When OBS runs via Rosetta 2 emulation on an Apple Silicon host, the
next automatic update via Sparkle should use a native Apple Silicon
build rather than the newest Intel build.
This is achieved by setting a custom feed URL on the delegate object
which will then respond with this URL (or alternatively with "nil")
when Sparkle calls the appropriate delegate method.
Adds necessary delegate method to OBSSupdateDelegate to provide
alternative AppCast feed URL at runtime.
The NSString pointer is allowed to be "nil" as Sparkle will only use
a non-nil return value to change from the default feed URL.