Skip to content

fix(macos): report Homebrew library mismatches at launch and add a daily canary - #88

Merged
mcoliver merged 2 commits into
mainfrom
fix/macos-dependency-drift
Oct 2, 2026
Merged

mcoliver merged 2 commits into
mainfrom
fix/macos-dependency-drift

Conversation

@mcoliver

@mcoliver mcoliver commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

UTV.app loads its third-party libraries from the user's Homebrew. Homebrew upgraded OpenColorIO from 2.5 to 2.6; OCIO puts its version in every C++ symbol, so the 2026.9 release aborted in dyld before running any code: no window, no log, no dialog (#85). The same happens in reverse when a new UTV is installed over older libraries.

  • Launcher check. Before the real launch, the launcher starts UTV-bin -version, which loads and binds every library in under 0.1 s. If dyld fails, it reports which library does not match and the fix (brew update && brew upgrade && brew upgrade --cask utv): a dialog with "Update with Homebrew" / "Copy Command" when started from Finder, a message on stderr from a terminal. A check that cannot run, times out, or fails for any other reason never blocks the launch. UTV_SKIP_LIBRARY_CHECK=1 skips it.
  • Daily canary. homebrew-canary.yml installs the current release from the tap on a clean macOS runner with that day's Homebrew, starts UTV-bin, utvio and utvls and loads every format plugin, and opens (or comments on) an issue when that fails.
  • The launcher's terminal hint gave a wrong URL for the tap; fixed.
  • AGENTS.md §1.5 records that the libraries are intentionally not bundled.

Verification

  • Real mismatch: today's dev build (built against OCIO 2.6) on a Mac with OCIO 2.5.2. The released launcher prints only dyld's raw abort; the new launcher prints UTV could not load opencolorio 2.5.2_1, the fix command and dyld's details, and exits 1.
  • A missing library ("Library not loaded") is reported the same way.
  • Matching libraries: the app starts as before.
  • Not verified: the Finder dialog itself (the terminal path was run; the dialog was not opened), and the canary's issue-creation step, which is skipped on pull requests.

Refs #85

🤖 Generated with Claude Code

…ily canary

UTV.app loads its third-party libraries from the user's Homebrew. When
Homebrew upgraded OpenColorIO 2.5 to 2.6, dyld aborted UTV-bin before any of
its code ran, so the 2026.9 release stopped starting with no window, log or
dialog (#85).

- The launcher starts `UTV-bin -version` (under 0.1s) before the real launch.
  If dyld fails it names the library and the command that fixes it, in a
  dialog when started from Finder and on stderr from a terminal.
  UTV_SKIP_LIBRARY_CHECK=1 skips the check.
- homebrew-canary.yml installs the current release from the tap every day
  with that day's Homebrew, checks that the app and tools start, and opens an
  issue when they do not.
- Fix the launcher's terminal hint, which gave a wrong URL for the tap.
- AGENTS.md 1.5 records that the libraries are intentionally not bundled.

Refs #85

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…y matching

Refs #85

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant