Release Captail 0.1.2 performance and stability update#4
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6f45d36d62
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| $pluginDataDestination = Join-Path $dataDestination "obs-plugins\$plugin" | ||
| Copy-Item -LiteralPath $pluginData -Destination $pluginDataDestination ` | ||
| -Recurse -Force |
There was a problem hiding this comment.
Create the plugin data parent before copying
When the first listed OBS plugin has a data directory, this copies it to data\obs-plugins\<plugin> even though only $dataDestination was created above; the intermediate data\obs-plugins parent is still missing, so Copy-Item fails before CI/release can finish acquiring the OBS runtime. Create the obs-plugins data directory first or copy into an existing parent directory.
Useful? React with 👍 / 👎.
| if (acquired) | ||
| _singleInstanceMutex.ReleaseMutex(); | ||
| _shutdownExistingSucceeded = acquired; |
There was a problem hiding this comment.
Return the shutdown failure to the installer
In the existing-instance --shutdown-existing path, a timeout is stored here, but AcquireSingleInstance still returns false; the caller immediately takes the !AcquireSingleInstance branch and exits with plain Shutdown() before reaching the later nonzero exit-code logic. That makes the installer see success even when the running Captail instance never released the mutex, so updates can proceed while the old process is still holding files open.
Useful? React with 👍 / 👎.
Summary
Root cause
Captail previously performed thread-affine libobs startup and shutdown work from UI-triggered paths without one shared operation gate. Concurrent saves, setting changes, watchdog recovery, and application shutdown could contend, freeze the window, or leave partially applied state. Game Capture also passed its only source through an avoidable scene-composition stage.
Validation
The GitHub release workflow will independently build and validate both Portable ZIP and Setup EXE, including silent install and uninstall tests.