Skip to content

Add Ableton Live Suite as a macOS FMA - #47058

Merged
allenhouchins merged 4 commits into
mainfrom
allenhouchins-ableton-live
Jun 8, 2026
Merged

Add Ableton Live Suite as a macOS FMA#47058
allenhouchins merged 4 commits into
mainfrom
allenhouchins-ableton-live

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 8, 2026

Copy link
Copy Markdown
Member

Add Ableton Live Suite to maintained apps and frontend. Creates a homebrew input (ee/maintained-apps/inputs/homebrew/ableton-live-suite.json) and a darwin output (ee/maintained-apps/outputs/ableton-live-suite/darwin.json) with version 12.4.1, installer URL, sha256, and installer/uninstaller script refs. Update apps index (ee/maintained-apps/outputs/apps.json) to include the new app. Add a React SVG icon component and PNG asset, and register the icon in the icons index so the UI displays the new app.

Summary by CodeRabbit

  • New Features

    • Added support for Ableton Live Suite app installation and management on macOS, including automatic backup of existing installations.
    • Added UI icon for Ableton Live Suite in the software catalog.
  • Improvements

    • Enhanced shell command escaping to safely handle special characters and paths in app uninstall operations.
  • Tests

    • Added comprehensive unit tests for shell escaping functionality, including apostrophe handling in uninstall scripts.

Add Ableton Live Suite to maintained apps and frontend. Creates a homebrew input (ee/maintained-apps/inputs/homebrew/ableton-live-suite.json) and a darwin output (ee/maintained-apps/outputs/ableton-live-suite/darwin.json) with version 12.4.1, installer URL, sha256, and installer/uninstaller script refs. Update apps index (ee/maintained-apps/outputs/apps.json) to include the new app. Add a React SVG icon component and PNG asset, and register the icon in the icons index so the UI displays the new app.
fleet-release
fleet-release previously approved these changes Jun 8, 2026
@codecov

codecov Bot commented Jun 8, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 26.66667% with 11 lines in your changes missing coverage. Please review.
✅ Project coverage is 67.07%. Comparing base (7cb898d) to head (a264454).
⚠️ Report is 23 commits behind head on main.

Files with missing lines Patch % Lines
ee/maintained-apps/ingesters/homebrew/scripts.go 23.07% 10 Missing ⚠️
...ftwarePage/components/icons/AbletonLive12Suite.tsx 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #47058      +/-   ##
==========================================
+ Coverage   67.03%   67.07%   +0.03%     
==========================================
  Files        2886     2894       +8     
  Lines      225155   225220      +65     
  Branches    11637    11772     +135     
==========================================
+ Hits       150938   151061     +123     
+ Misses      60544    60474      -70     
- Partials    13673    13685      +12     
Flag Coverage Δ
backend 68.78% <23.07%> (+0.03%) ⬆️
frontend 57.00% <50.00%> (+0.04%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Add shellSingleQuote helper to safely single-quote shell tokens (escaping embedded apostrophes with the POSIX '\''' idiom) and replace ad-hoc quoted fmt.Sprintf usages across the Homebrew ingester uninstall script generation. This prevents unterminated-quote bash errors for cask paths containing apostrophes (e.g. "Cycling '74"). Includes unit tests (TestShellSingleQuote, TestUninstallScriptEscapesApostrophe) and updates the generated Ableton Live Suite darwin output ref to the new uninstall script.
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/ableton-live-suite/darwin.json

=== Install Script (no changes) ===
=== Uninstall // cc3a6c65 -> 04a14b48 ===

--- /tmp/old.399vKS	2026-06-08 15:15:47.254354313 +0000
+++ /tmp/new.Gdg5PX	2026-06-08 15:15:47.254354313 +0000
@@ -99,7 +99,7 @@
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Ableton *_*.plist'
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Live_*.plist'
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Max_*.plist'
-trash $LOGGED_IN_USER '~/Library/Application Support/Cycling '74'
+trash $LOGGED_IN_USER '~/Library/Application Support/Cycling '\''74'
 trash $LOGGED_IN_USER '~/Library/Caches/Ableton'
 trash $LOGGED_IN_USER '~/Library/Preferences/Ableton'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.ableton.live.plist*'

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/ableton-live-suite/darwin.json

=== Install Script (no changes) ===
=== Uninstall // cc3a6c65 -> 04a14b48 ===

--- /tmp/old.Vezojl	2026-06-08 15:37:33.805555020 +0000
+++ /tmp/new.mYp3Jo	2026-06-08 15:37:33.805555020 +0000
@@ -99,7 +99,7 @@
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Ableton *_*.plist'
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Live_*.plist'
 trash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/Max_*.plist'
-trash $LOGGED_IN_USER '~/Library/Application Support/Cycling '74'
+trash $LOGGED_IN_USER '~/Library/Application Support/Cycling '\''74'
 trash $LOGGED_IN_USER '~/Library/Caches/Ableton'
 trash $LOGGED_IN_USER '~/Library/Preferences/Ableton'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.ableton.live.plist*'

@allenhouchins
allenhouchins marked this pull request as ready for review June 8, 2026 16:01
@allenhouchins
allenhouchins requested review from a team as code owners June 8, 2026 16:01
Copilot AI review requested due to automatic review settings June 8, 2026 16:01
@fleet-release
fleet-release requested a review from eashaw June 8, 2026 16:01

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@allenhouchins allenhouchins changed the title Add Ableton Live Suite support Add Ableton Live Suite as a macOS FMA Jun 8, 2026

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

Adds Ableton Live Suite as a Fleet-maintained macOS app, including the generated Homebrew input/output manifests and UI icon wiring, plus a small improvement to Homebrew uninstall script generation and macOS validation to handle Ableton’s version string format.

Changes:

  • Add Ableton Live Suite to maintained apps (Homebrew input + darwin output + apps index entry).
  • Add/register a new Software page icon component for Ableton Live Suite.
  • Improve Homebrew uninstall script generation by safely single-quoting cask-provided paths (and add tests), and extend darwin validation to accept Ableton’s version “build identifier” suffix.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers Ableton icon and maps a software name to that icon.
frontend/pages/SoftwarePage/components/icons/AbletonLive12Suite.tsx Adds the Ableton Live Suite icon component (embedded PNG).
ee/maintained-apps/outputs/apps.json Adds Ableton Live Suite to the maintained apps catalog index.
ee/maintained-apps/outputs/ableton-live-suite/darwin.json Adds the darwin maintained-app manifest (queries + installer URL + scripts + sha256).
ee/maintained-apps/inputs/homebrew/ableton-live-suite.json Adds the Homebrew input definition for Ableton Live Suite.
ee/maintained-apps/ingesters/homebrew/scripts.go Adds shellSingleQuote and applies it to uninstall script generation to handle apostrophes safely.
ee/maintained-apps/ingesters/homebrew/scripts_test.go Adds unit tests for shellSingleQuote and apostrophe handling regression coverage.
cmd/maintained-apps/validate/darwin.go Special-cases Ableton version matching when bundle version includes a build identifier.

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

Comment on lines 333 to 335
"1password": OnePassword,
"ableton live suite": AbletonLive12Suite,
abstract: Abstract,
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

This PR adds Ableton Live Suite as a maintained application on macOS with full install/uninstall orchestration. It introduces a shellSingleQuote helper function that safely quotes all user-controlled strings in generated uninstall scripts to prevent shell injection. The change applies escaping across launchctl service identifiers, application names, script arguments, and filesystem paths. Ableton Live Suite configuration includes DMG-based installation with app backup/restore logic and uninstallation that moves user libraries to Trash. Version validation checks if the installed bundle version matches the expected installer version. A React icon component provides UI support in the Software page.

Possibly related PRs

  • fleetdm/fleet#46333: Modifies Homebrew ingester uninstall script generation with shell-escaping helper improvements and corresponding unit tests in scripts.go and scripts_test.go.
  • fleetdm/fleet#47053: Extends SOFTWARE_NAME_TO_ICON_MAP in frontend/pages/SoftwarePage/components/icons/index.ts and updates apps.json to register a new macOS application icon.
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description explains the changes clearly but does not follow the repository's standard template structure or address required checklist items. Complete the description template with checklist items, specify which validations and tests were performed, and mark relevant sections as checked or note if N/A.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add Ableton Live Suite as a macOS FMA' accurately and concisely describes the main change: adding support for Ableton Live Suite to the maintained apps system for macOS.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch allenhouchins-ableton-live

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 and usage tips.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ee/maintained-apps/ingesters/homebrew/scripts.go (1)

305-307: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing escaping in u.Script.String branch leaves a shell-injection/syntax gap.

Line 307 still interpolates u.Script.String via '%s' instead of shellSingleQuote(...). A single quote in the script path breaks the command; malicious content can alter shell parsing.

Proposed fix
 } else if len(u.Script.String) > 0 {
   addUserVar()
-  sb.Writef(`(cd /Users/$LOGGED_IN_USER && sudo -u "$LOGGED_IN_USER" '%s')`, u.Script.String)
+  sb.Writef(`(cd /Users/$LOGGED_IN_USER && sudo -u "$LOGGED_IN_USER" %s)`, shellSingleQuote(u.Script.String))
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ee/maintained-apps/ingesters/homebrew/scripts.go` around lines 305 - 307, The
branch that writes the user script command interpolates u.Script.String directly
into sb.Writef, allowing single quotes or injected shell content to break or
manipulate the command; update the u.Script.String usage to be escaped via
shellSingleQuote(...) before writing (i.e., call
shellSingleQuote(u.Script.String) when constructing the argument passed to
sb.Writef in the same branch that calls addUserVar), ensuring sb.Writef receives
a safely quoted string and preventing shell-injection/syntax issues.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@ee/maintained-apps/ingesters/homebrew/scripts.go`:
- Around line 305-307: The branch that writes the user script command
interpolates u.Script.String directly into sb.Writef, allowing single quotes or
injected shell content to break or manipulate the command; update the
u.Script.String usage to be escaped via shellSingleQuote(...) before writing
(i.e., call shellSingleQuote(u.Script.String) when constructing the argument
passed to sb.Writef in the same branch that calls addUserVar), ensuring
sb.Writef receives a safely quoted string and preventing shell-injection/syntax
issues.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e753e099-6c2c-4b27-b7f7-96413129c3ab

📥 Commits

Reviewing files that changed from the base of the PR and between b2248f1 and a264454.

⛔ Files ignored due to path filters (1)
  • website/assets/images/app-icon-ableton-live-suite-60x60@2x.png is excluded by !**/*.png
📒 Files selected for processing (8)
  • cmd/maintained-apps/validate/darwin.go
  • ee/maintained-apps/ingesters/homebrew/scripts.go
  • ee/maintained-apps/ingesters/homebrew/scripts_test.go
  • ee/maintained-apps/inputs/homebrew/ableton-live-suite.json
  • ee/maintained-apps/outputs/ableton-live-suite/darwin.json
  • ee/maintained-apps/outputs/apps.json
  • frontend/pages/SoftwarePage/components/icons/AbletonLive12Suite.tsx
  • frontend/pages/SoftwarePage/components/icons/index.ts

@allenhouchins
allenhouchins merged commit b23f808 into main Jun 8, 2026
50 checks passed
@allenhouchins
allenhouchins deleted the allenhouchins-ableton-live branch June 8, 2026 17:02
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.

4 participants