Skip to content

Unfreeze Logi Options+ (macOS) - #50372

Merged
allenhouchins merged 1 commit into
mainfrom
fma-unfreeze/logi-options-plus-darwin
Aug 1, 2026
Merged

Unfreeze Logi Options+ (macOS)#50372
allenhouchins merged 1 commit into
mainfrom
fma-unfreeze/logi-options-plus-darwin

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Aug 1, 2026

Copy link
Copy Markdown
Member

Automated unfreeze probe. Removes "frozen": true and regenerates the output manifest so
test-fma-darwin-pr-only can validate logi-options+/darwin at its current upstream version.

Frozen since: 2026-04-03 (#42984, automated FMA update run)
Version: 2.4.903778 -> 2.5.926888

Note: the regenerated manifest also picks up a newer uninstall_script_ref, because the frozen
output missed the script-template updates that landed on main while it was pinned.

Draft until validation reports. Merge only if the FMA checks are green and the validate shard
actually ran for this slug.

Related issue: NA

Checklist for submitter

  • QA'd all new/changed functionality manually — pending CI validation, see above.

Generated by Claude Code

Summary by CodeRabbit

  • New Features
    • Added support for the latest Logi Options+ macOS release, version 2.5.926888.
  • Bug Fixes
    • Improved removal of Logi Options+ background services and related files during uninstallation.
    • Updated the Homebrew configuration to allow the application to receive updates normally.

Removes "frozen": true and regenerates the output manifest so
test-fma-darwin-pr-only can validate logi-options+/darwin at its current
upstream version.

Claude-Session: https://claude.ai/code/session_01EBxhs5D65LRUwCEJejBLJH
Copilot AI review requested due to automatic review settings August 1, 2026 02:03
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/logi-options+/darwin.json

=== Install Script (no changes) ===
=== Uninstall // a6d04b86 -> 21351b22 ===

--- /tmp/old.5wMHdQ	2026-08-01 02:05:08.548463334 +0000
+++ /tmp/new.YlPUsU	2026-08-01 02:05:08.549463361 +0000
@@ -78,38 +78,63 @@
 
   echo "Removing launchctl service ${service}"
 
-  for should_sudo in "${booleans[@]}"; do
-    plist_status=$(launchctl list "${service}" 2>/dev/null)
-
-    if [[ $plist_status == \{* ]]; then
-      if [[ $should_sudo == "true" ]]; then
-        sudo launchctl remove "${service}"
-      else
-        launchctl remove "${service}"
-      fi
-      sleep 1
+  # A wildcard label can't be used with launchctl or as a plist name, so expand
+  # it to the labels of currently loaded services that match the pattern.
+  local services=("$service")
+  if [[ "$service" == *"*"* ]]; then
+    local regex
+    # Escape regex metacharacters, turn '*' into '.*', and anchor the pattern so
+    # it matches a full label rather than a substring.
+    regex=$(printf '%s' "$service" | sed -e 's/[][(){}.^$+?|\\]/\\&/g' -e 's/\*/.*/g')
+    regex="^${regex}$"
+    services=()
+    local id
+    # Match every loaded job by label regardless of PID; launchctl list reports
+    # loaded-but-not-running jobs with a "-" in the PID column.
+    while read -r _ _ id; do
+      [[ "$id" =~ $regex ]] && services+=("$id")
+    done < <(launchctl list 2>/dev/null | tail -n +2)
+    if [[ ${#services[@]} -eq 0 ]]; then
+      echo "No loaded launchctl service matches ${service}"
+      return
     fi
+  fi
 
-    paths=(
-      "/Library/LaunchAgents/${service}.plist"
-      "/Library/LaunchDaemons/${service}.plist"
-    )
-
-    # if not using sudo, prepend the home directory to the paths
-    if [[ $should_sudo == "false" ]]; then
-      for i in "${!paths[@]}"; do
-        paths[i]="${HOME}${paths[i]}"
-      done
-    fi
+  local service_label
+  for service_label in "${services[@]}"; do
+    for should_sudo in "${booleans[@]}"; do
+      plist_status=$(launchctl list "${service_label}" 2>/dev/null)
 
-    for path in "${paths[@]}"; do
-      if [[ -e "$path" ]]; then
+      if [[ $plist_status == \{* ]]; then
         if [[ $should_sudo == "true" ]]; then
-          sudo rm -f -- "$path"
+          sudo launchctl remove "${service_label}"
         else
-          rm -f -- "$path"
+          launchctl remove "${service_label}"
         fi
+        sleep 1
       fi
+
+      paths=(
+        "/Library/LaunchAgents/${service_label}.plist"
+        "/Library/LaunchDaemons/${service_label}.plist"
+      )
+
+      # if not using sudo, prepend the home directory to the paths
+      if [[ $should_sudo == "false" ]]; then
+        for i in "${!paths[@]}"; do
+          paths[i]="${HOME}${paths[i]}"
+        done
+      fi
+
+      for path in "${paths[@]}"; do
+        if [[ -e "$path" ]]; then
+          if [[ $should_sudo == "true" ]]; then
+            sudo rm -f -- "$path"
+          else
+            rm -f -- "$path"
+          fi
+        fi
+      done
     done
   done
 }

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Fleet-maintained app (FMA) metadata for Logi Options+ (macOS) by unfreezing the Homebrew input and regenerating the corresponding output manifest so validation can run against the current upstream release.

Changes:

  • Unfreezes the logi-options+/darwin input by removing "frozen": true.
  • Regenerates the macOS output manifest to bump the app version and update the “patched” query threshold.
  • Updates the output manifest’s uninstall_script_ref to the latest generated script reference.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
ee/maintained-apps/outputs/logi-options+/darwin.json Regenerated output manifest: version bump, updated patched query, and updated uninstall script ref.
ee/maintained-apps/inputs/homebrew/logi-options+.json Removes the frozen flag so automated validation/updates can proceed.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@allenhouchins
allenhouchins marked this pull request as ready for review August 1, 2026 02:15
@allenhouchins
allenhouchins merged commit 24b24ae into main Aug 1, 2026
20 checks passed
@allenhouchins
allenhouchins deleted the fma-unfreeze/logi-options-plus-darwin branch August 1, 2026 02:15
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f42c2058-6b98-4ff2-9d20-aa525a632c09

📥 Commits

Reviewing files that changed from the base of the PR and between 45abf8c and ed42298.

📒 Files selected for processing (2)
  • ee/maintained-apps/inputs/homebrew/logi-options+.json
  • ee/maintained-apps/outputs/logi-options+/darwin.json

Walkthrough

The PR removes the frozen status from the Logi Options+ Homebrew configuration. It updates the macOS app version and patched-version query from 2.4.903778 to 2.5.926888. It replaces the uninstall script reference and implementation. The new script expands wildcard package and launchctl service identifiers, removes matching loaded services, and deletes associated plist files for user and root scopes. The installer script remains unchanged.

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fma-unfreeze/logi-options-plus-darwin

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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.

3 participants