Allow plugin to load even with missing requirements#1421
Conversation
Added clean-up if lib fails to load.
Add windows tools scripts
There was a problem hiding this comment.
Pull request overview
This PR updates DistroAV’s developer tooling and user-facing setup flow, aiming to support a “UI-only / degraded mode” when NDI requirements aren’t met and adding helper scripts for building/installing/running on macOS/Windows. It also includes macOS build fixes for newer Xcode/Qt link behavior.
Changes:
- Make plugin feature registration conditional on NDI library availability/compatibility, while still loading the settings UI and running update checks.
- Add/adjust Output Settings UI to show requirement status and provide “auto-(re)install” entry points for DistroAV and the NDI runtime.
- Replace/remove several legacy
tools/*scripts and add new macOS/Windows build/install/run helpers; add CMake/Xcode macOS build workaround.
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/UninstallOBS-NDI.sh | Removed legacy uninstall helper. |
| tools/UninstallOBS-NDI.cmd | Removed legacy uninstall helper. |
| tools/UninstallDistroAV.sh | Removed legacy uninstall helper. |
| tools/test-build-macos.sh | Added macOS test build/install/run wrapper script. |
| tools/sha256-check.sh | Removed old OBS-NDI checksum line. |
| tools/RunOBS.sh | Removed legacy OBS run helper. |
| tools/run-obs-debug-windows.cmd | Updated Windows debug launch flags for DistroAV. |
| tools/run-obs-debug-macos.sh | Added macOS debug launch helper for DistroAV. |
| tools/Package.sh | Removed legacy packaging wrapper. |
| tools/InstallOBS-NDI.sh | Removed legacy install helper. |
| tools/InstallDistroAV.sh | Removed legacy install helper. |
| tools/install-windows.ps1 | Added Windows file-copy installer helper for local builds. |
| tools/install-macos.sh | Added macOS uninstall+copy installer helper for local builds. |
| tools/Format.sh | Removed legacy formatting wrapper. |
| tools/Clean.sh | Removed legacy clean wrapper. |
| tools/clean-builds-deps.sh | Added new clean script for build artifacts (and intended deps cleanup). |
| tools/Build.sh | Removed legacy build wrapper. |
| tools/build-install-run-windows.ps1 | Added Windows build→install→run wrapper. |
| tools/build-helper-windows.ps1 | Added Windows build helper that shells into CI build script. |
| tools/build-helper-macos.sh | Added macOS build+package helper invoking CI scripts. |
| src/plugin-main.h | Added version check declaration; updated NDI URL constants/comments. |
| src/plugin-main.cpp | Implemented conditional feature registration + “UI-only” load behavior; improved message box behavior and NDI load cleanup. |
| src/ndi-finder.cpp | Added guard to avoid crash when NDI lib isn’t loaded. |
| src/forms/update.cpp | Avoided deref of ndiLib when building User-Agent. |
| src/forms/output-settings.ui | Added requirements/status section + new buttons. |
| src/forms/output-settings.cpp | Implemented requirement checks and auto-install actions (brew/winget) + NDI trademark link display. |
| src/config.cpp | Reformatted ConfigTypeMap initialization. |
| README.md | Updated install instructions; added Ubuntu section. |
| data/locale/en-US.ini | Updated settings strings and plugin footer text. |
| CMakeLists.txt | macOS Qt link workaround to strip AGL framework from propagated link props. |
| cmake/macos/xcode.cmake | Cleared non-macOS deployment target attributes to avoid Xcode/clang conflicts. |
Comments suppressed due to low confidence (1)
tools/run-obs-debug-windows.cmd:6
- This command no longer forwards caller-provided arguments (%*). That makes the helper less flexible and breaks previous behavior (e.g., adding extra OBS flags when debugging). Consider appending
%*to preserve pass-through while still adding the default debug/update flags.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
There was a problem hiding this comment.
Pull request overview
This PR improves the developer tooling and user experience around missing/unsupported NDI dependencies by allowing the plugin to load in a limited “UI-only” mode, adding requirements/install UX in Output Settings, and introducing new helper scripts for local build/install workflows (macOS/Windows).
Changes:
- Make plugin feature registration conditional on NDI runtime load/initialize/version checks, while still loading UI and running update checks.
- Add “Requirements” status UI plus one-click install/reinstall actions for DistroAV + NDI runtime in Output Settings, and update related i18n strings.
- Add/adjust local build/install helper scripts for macOS and Windows, plus clean-up tooling and README install instructions.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/test-build-macos.sh | Splits chained commands into separate lines for readability. |
| tools/run-obs-debug-macos.sh | Adds shebang and adjusts default OBS debug flags for macOS runs. |
| tools/install-windows.ps1 | Adds a Windows installer script to copy built plugin artifacts into OBS plugin directory. |
| tools/install-macos.sh | Adds shebang to ensure consistent script execution. |
| tools/clean-builds-deps.sh | Adds shebang/set -e, uses rm -rf, and cleans obs-deps. |
| tools/build-install-run-windows.ps1 | Adds a Windows “build → install → run” convenience wrapper. |
| tools/build-helper-windows.ps1 | Adds a Windows wrapper for the CI build script. |
| tools/build-helper-macos.sh | Adds a macOS build/package helper script (Debug preset). |
| src/plugin-main.h | Exposes is_version_supported() and updates NDI URL commentary/defines. |
| src/plugin-main.cpp | Introduces conditional feature registration, new delayed critical message behavior, and tighter guards around output init when NDI features aren’t registered. |
| src/ndi-finder.cpp | Adds a guard to avoid crashes when the NDI library isn’t loaded. |
| src/forms/update.cpp | Makes update-check User-Agent resilient when ndiLib is unavailable. |
| src/forms/output-settings.ui | Adds “Requirements” section and new install/get buttons; adjusts layout/alignment. |
| src/forms/output-settings.cpp | Implements requirement checks UI, one-click install flows (macOS/Windows), and updates the trademark label to be linkable. |
| src/config.cpp | Re-formats the config type map initializer. |
| README.md | Updates macOS brew cask install command and adds Ubuntu apt install instructions/maintainer credits. |
| data/locale/zh-CN.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/uk-UA.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/sv-SE.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/ru-RU.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/ro-RO.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/pt-BR.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/nl-NL.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/ko-KR.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/hu-HU.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/fr-FR.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/es-ES.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/en-US.ini | Updates Output Settings button text, adds new Output Settings keys, and adds one-click install error strings. |
| data/locale/de-DE.ini | Updates “limited features” messaging and adds one-click install error strings. |
| data/locale/ca-ES.ini | Updates “limited features” messaging and adds one-click install error strings. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
|
This is ready for review. Added the command line parameters to forcefail the checks (t be used for QC / testing / Pre-release behavior) < this could be removed in the future if we do not need such test afterall.. Added command-line parameters to Ignore the version check. |


This pull request introduces a significant changes:
Output Settings dialog now list the requirements and their statu (met or not)
Each requirements is clickable to copy to clipboard for full version (especially useful for NDI library versionning
Add in-plugin troubleshooting with "auto-reinstall button" for DistroAV & NDI library (leverage winget for windows & brew for MacOS)
Split requirements in HARD & SOFT.
HARD requirements will stop plugin from loading & display an error.
SOFT requirements allow loading the plugin but will not register the features.
The error popup dialog shows up on start and open the DistroAV settings on OK (unless hard requirement not met)
Tested on Windows + mc
New pameters options for automated testing :
These improvements make it easier for users to verify their environment and resolve common setup issues.
##Details
Requirements Checking & UI Enhancements
src/forms/output-settings.cpp,src/forms/output-settings.ui) [1] [2]data/locale/en-US.ini,src/forms/output-settings.ui) [1] [2] [3] [4]Automated Installation Actions
src/forms/output-settings.cpp,src/forms/output-settings.ui) [1] [2] [3]Cross-Platform Build Improvements - should already be on master
cmake/macos/xcode.cmake)CMakeLists.txt)Other Quality-of-Life Improvements
src/forms/output-settings.cpp)These changes collectively aim to improve the user experience, reliability, and maintainability of the DistroAV NDI plugin across platforms.