From a2457f1d5e6d4fe6487d7c2b3be93ba5bc6a3951 Mon Sep 17 00:00:00 2001 From: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Date: Mon, 16 Feb 2026 03:26:33 -0800 Subject: [PATCH] Fix menubar lag in production builds caused by hardened runtime Hardened runtime's library validation was verifying every dylib on load, causing noticeable UI lag. Add entitlements file with disable-library-validation to fix while keeping notarization support. --- .github/workflows/nightly.yml | 5 +++-- .github/workflows/release.yml | 5 +++-- cmux.entitlements | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 cmux.entitlements diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c3f0573e..07508b10 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -211,11 +211,12 @@ jobs: exit 1 fi APP_PATH="build/Build/Products/Release/cmux.app" + ENTITLEMENTS="cmux.entitlements" CLI_PATH="$APP_PATH/Contents/Resources/bin/cmux" if [ -f "$CLI_PATH" ]; then - /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" "$CLI_PATH" + /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --entitlements "$ENTITLEMENTS" "$CLI_PATH" fi - /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --deep "$APP_PATH" + /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --entitlements "$ENTITLEMENTS" --deep "$APP_PATH" /usr/bin/codesign --verify --deep --strict --verbose=2 "$APP_PATH" - name: Notarize app and dmg diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f6a76e05..6b7a6ef9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -128,11 +128,12 @@ jobs: exit 1 fi APP_PATH="build/Build/Products/Release/cmux.app" + ENTITLEMENTS="cmux.entitlements" CLI_PATH="$APP_PATH/Contents/Resources/bin/cmux" if [ -f "$CLI_PATH" ]; then - /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" "$CLI_PATH" + /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --entitlements "$ENTITLEMENTS" "$CLI_PATH" fi - /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --deep "$APP_PATH" + /usr/bin/codesign --force --options runtime --timestamp --sign "$APPLE_SIGNING_IDENTITY" --entitlements "$ENTITLEMENTS" --deep "$APP_PATH" /usr/bin/codesign --verify --deep --strict --verbose=2 "$APP_PATH" - name: Notarize app diff --git a/cmux.entitlements b/cmux.entitlements new file mode 100644 index 00000000..8cc185af --- /dev/null +++ b/cmux.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.cs.disable-library-validation + + +