Skip to content

Add macOS Fleet-maintained apps (W) - #47182

Merged
allenhouchins merged 3 commits into
mainfrom
new-mac-fmas-w
Jun 9, 2026
Merged

Add macOS Fleet-maintained apps (W)#47182
allenhouchins merged 3 commits into
mainfrom
new-mac-fmas-w

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 9, 2026

Copy link
Copy Markdown
Member

Adds 23 Fleet-maintained app(s) whose cask token starts with 'W': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries.

Summary by CodeRabbit

  • New Features
    • Added support for 20 new macOS applications across productivity, communication, utilities, and development categories including Wave Terminal, Wavebox, WebCatalog, WeChat, Wondershare Filmora, and others.
    • Applications now include automated installation, update management, and removal with dedicated visual icons for easy identification in the interface.

Adds 23 Fleet-maintained app(s) whose cask token starts with 'W':
inputs, outputs, app icons (TSX + website PNG), and the matching
index.ts and apps.json entries. Split out from #47121.
fleet-release
fleet-release previously approved these changes Jun 9, 2026
fleet-release
fleet-release previously approved these changes Jun 9, 2026
@codecov

codecov Bot commented Jun 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 20 lines in your changes missing coverage. Please review.
✅ Project coverage is 67.19%. Comparing base (3d1c326) to head (aacf9a3).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...ntend/pages/SoftwarePage/components/icons/Wave.tsx 50.00% 1 Missing ⚠️
...nd/pages/SoftwarePage/components/icons/Wavebox.tsx 50.00% 1 Missing ⚠️
...ages/SoftwarePage/components/icons/Wealthfolio.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Weasis.tsx 50.00% 1 Missing ⚠️
...pages/SoftwarePage/components/icons/Webcatalog.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Wechat.tsx 50.00% 1 Missing ⚠️
...d/pages/SoftwarePage/components/icons/Weektodo.tsx 50.00% 1 Missing ⚠️
.../pages/SoftwarePage/components/icons/Whatroute.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Whisky.tsx 50.00% 1 Missing ⚠️
...pages/SoftwarePage/components/icons/Whispering.tsx 50.00% 1 Missing ⚠️
... and 10 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #47182      +/-   ##
==========================================
- Coverage   67.19%   67.19%   -0.01%     
==========================================
  Files        2926     2946      +20     
  Lines      226388   226428      +40     
  Branches    11683    11683              
==========================================
+ Hits       152122   152142      +20     
- Misses      60524    60544      +20     
  Partials    13742    13742              
Flag Coverage Δ
frontend 57.89% <50.00%> (-0.01%) ⬇️

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.

Remove Waterfox, WezTerm, and Witch from the repository: delete EE maintained-apps input manifests and per-platform output JSON (darwin), remove corresponding install/uninstall script refs, remove app entries from ee/maintained-apps/outputs/apps.json, delete frontend SVG icon components and website PNG assets, and update the icon index. This cleans up all traces of these three apps from the maintained apps data, UI icons, and website images.
@allenhouchins
allenhouchins marked this pull request as ready for review June 9, 2026 15:49
@allenhouchins
allenhouchins requested a review from a team as a code owner June 9, 2026 15:49
Copilot AI review requested due to automatic review settings June 9, 2026 15:49
@fleet-release
fleet-release requested a review from eashaw June 9, 2026 15:49
@allenhouchins
allenhouchins merged commit a66ad80 into main Jun 9, 2026
29 of 30 checks passed
@allenhouchins
allenhouchins deleted the new-mac-fmas-w branch June 9, 2026 15:49

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

Note

Copilot was unable to run its full agentic suite in this review.

This PR expands the catalog of supported macOS apps and their UI representation by adding new maintained-app manifests plus corresponding SoftwarePage icon mappings/components.

Changes:

  • Added multiple new maintained-app definitions (inputs + generated outputs) and appended them to the consolidated apps.json.
  • Added new icon React components and wired them into SOFTWARE_NAME_TO_ICON_MAP.
  • Added installer/uninstaller scripts for the new maintained apps (embedded as refs in the generated output JSON).

Reviewed changes

Copilot reviewed 62 out of 82 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers new icon imports and maps additional software names to icon components.
frontend/pages/SoftwarePage/components/icons/Wave.tsx Adds Wave Terminal icon component.
frontend/pages/SoftwarePage/components/icons/Wavebox.tsx Supports Wavebox icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Wealthfolio.tsx Adds Wealthfolio icon component.
frontend/pages/SoftwarePage/components/icons/Weasis.tsx Adds Weasis icon component.
frontend/pages/SoftwarePage/components/icons/Webcatalog.tsx Adds WebCatalog icon component.
frontend/pages/SoftwarePage/components/icons/Wechat.tsx Supports WeChat icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Weektodo.tsx Adds WeekToDo icon component.
frontend/pages/SoftwarePage/components/icons/Whatroute.tsx Supports WhatRoute icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Whisky.tsx Supports Whisky icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Whispering.tsx Supports Whispering icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Wifiman.tsx Supports WiFiman Desktop icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Windowkeys.tsx Supports WindowKeys icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Wins.tsx Adds Wins icon component.
frontend/pages/SoftwarePage/components/icons/WisprFlow.tsx Adds Wispr Flow icon component.
frontend/pages/SoftwarePage/components/icons/WondershareEdrawmax.tsx Supports EdrawMax icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/WondershareFilmora.tsx Supports Wondershare Filmora icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Wordservice.tsx Supports WordService icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Workflowy.tsx Supports WorkFlowy icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/WorksheetCrafter.tsx Supports Worksheet Crafter icon rendering (via new component).
frontend/pages/SoftwarePage/components/icons/Workspaces.tsx Supports Workspaces icon rendering (via new component).
ee/maintained-apps/outputs/workspaces/darwin.json Adds generated install/uninstall metadata and scripts for Workspaces.
ee/maintained-apps/outputs/worksheet-crafter/darwin.json Adds generated install/uninstall metadata and scripts for Worksheet Crafter.
ee/maintained-apps/outputs/workflowy/darwin.json Adds generated install/uninstall metadata and scripts for WorkFlowy.
ee/maintained-apps/outputs/wordservice/darwin.json Adds generated install/uninstall metadata and scripts for WordService.
ee/maintained-apps/outputs/wondershare-filmora/darwin.json Adds generated install/uninstall metadata and scripts for Wondershare Filmora.
ee/maintained-apps/outputs/wondershare-edrawmax/darwin.json Adds generated install/uninstall metadata and scripts for EdrawMax.
ee/maintained-apps/outputs/wispr-flow/darwin.json Adds generated install/uninstall metadata and scripts for Wispr Flow.
ee/maintained-apps/outputs/wins/darwin.json Adds generated install/uninstall metadata and scripts for Wins.
ee/maintained-apps/outputs/windowkeys/darwin.json Adds generated install/uninstall metadata and scripts for WindowKeys.
ee/maintained-apps/outputs/wifiman/darwin.json Adds generated install/uninstall metadata and scripts for WiFiman Desktop.
ee/maintained-apps/outputs/whispering/darwin.json Adds generated install/uninstall metadata and scripts for Whispering.
ee/maintained-apps/outputs/whisky/darwin.json Adds generated install/uninstall metadata and scripts for Whisky.
ee/maintained-apps/outputs/whatroute/darwin.json Adds generated install/uninstall metadata and scripts for WhatRoute.
ee/maintained-apps/outputs/weektodo/darwin.json Adds generated install/uninstall metadata and scripts for WeekToDo.
ee/maintained-apps/outputs/wechat/darwin.json Adds generated install/uninstall metadata and scripts for WeChat for Mac.
ee/maintained-apps/outputs/webcatalog/darwin.json Adds generated install/uninstall metadata and scripts for WebCatalog.
ee/maintained-apps/outputs/weasis/darwin.json Adds generated install/uninstall metadata and scripts for Weasis.
ee/maintained-apps/outputs/wealthfolio/darwin.json Adds generated install/uninstall metadata and scripts for Wealthfolio.
ee/maintained-apps/outputs/wavebox/darwin.json Adds generated install/uninstall metadata and scripts for Wavebox.
ee/maintained-apps/outputs/wave/darwin.json Adds generated install/uninstall metadata and scripts for Wave Terminal.
ee/maintained-apps/outputs/apps.json Appends entries for the newly supported apps to the consolidated list.
ee/maintained-apps/inputs/homebrew/workspaces.json Adds Homebrew input metadata for Workspaces.
ee/maintained-apps/inputs/homebrew/worksheet-crafter.json Adds Homebrew input metadata for Worksheet Crafter.
ee/maintained-apps/inputs/homebrew/workflowy.json Adds Homebrew input metadata for WorkFlowy.
ee/maintained-apps/inputs/homebrew/wordservice.json Adds Homebrew input metadata for WordService.
ee/maintained-apps/inputs/homebrew/wondershare-filmora.json Adds Homebrew input metadata for Wondershare Filmora.
ee/maintained-apps/inputs/homebrew/wondershare-edrawmax.json Adds Homebrew input metadata for EdrawMax.
ee/maintained-apps/inputs/homebrew/wispr-flow.json Adds Homebrew input metadata for Wispr Flow.
ee/maintained-apps/inputs/homebrew/wins.json Adds Homebrew input metadata for Wins.
ee/maintained-apps/inputs/homebrew/windowkeys.json Adds Homebrew input metadata for WindowKeys.
ee/maintained-apps/inputs/homebrew/wifiman.json Adds Homebrew input metadata for WiFiman Desktop.
ee/maintained-apps/inputs/homebrew/whispering.json Adds Homebrew input metadata for Whispering.
ee/maintained-apps/inputs/homebrew/whisky.json Adds Homebrew input metadata for Whisky.
ee/maintained-apps/inputs/homebrew/whatroute.json Adds Homebrew input metadata for WhatRoute.
ee/maintained-apps/inputs/homebrew/weektodo.json Adds Homebrew input metadata for WeekToDo.
ee/maintained-apps/inputs/homebrew/wechat.json Adds Homebrew input metadata for WeChat for Mac.
ee/maintained-apps/inputs/homebrew/webcatalog.json Adds Homebrew input metadata for WebCatalog.
ee/maintained-apps/inputs/homebrew/weasis.json Adds Homebrew input metadata for Weasis.
ee/maintained-apps/inputs/homebrew/wealthfolio.json Adds Homebrew input metadata for Wealthfolio.
ee/maintained-apps/inputs/homebrew/wavebox.json Adds Homebrew input metadata for Wavebox.
ee/maintained-apps/inputs/homebrew/wave.json Adds Homebrew input metadata for Wave Terminal.
Comments suppressed due to low confidence (2)

ee/maintained-apps/outputs/wondershare-edrawmax/darwin.json:1

  • Using "sha256": "no_check" disables integrity verification of the downloaded installer. Please provide the actual SHA-256 (preferred) or, if skipping checks is unavoidable (e.g., upstream changes frequently), document the rationale and consider an alternative verification method (signature verification, pinned HTTPS origin with additional checks) to reduce supply-chain risk.
    frontend/pages/SoftwarePage/components/icons/Wave.tsx:1
  • These icon components embed large base64-encoded PNG payloads directly in TSX, which can substantially increase the JS bundle size and slow page load/parsing. Prefer shipping optimized SVG paths, or loading image assets via static files/CDN (with caching) instead of inlining; additionally, if these icons are decorative, consider setting aria-hidden="true" / focusable="false" to avoid unnecessary accessibility noise.

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

}
],
"refs": {
"18d6be1e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'com.tencent.xinWeChat'\nsudo rm -rf \"$APPDIR/WeChat.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/$(TeamIdentifierPrefix)com.tencent.xinWeChat'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/$(TeamIdentifierPrefix)com.tencent.xinWeChat.IPCHelper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.tencent.xinWeChat'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.tencent.xinWeChat.MiniProgram'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.tencent.xinWeChat.WeChatMacShare'\ntrash $LOGGED_IN_USER '~/Library/Caches/com.tencent.xinWeChat'\ntrash $LOGGED_IN_USER '~/Library/Containers/$(TeamIdentifierPrefix)com.tencent.xinWeChat.IPCHelper'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.tencent.xinWeChat'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.tencent.xinWeChat.MiniProgram'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.tencent.xinWeChat.WeChatMacShare'\ntrash $LOGGED_IN_USER '~/Library/Cookies/com.tencent.xinWeChat.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/$(TeamIdentifierPrefix)com.tencent.xinWeChat'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.tencent.xinWeChat.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.tencent.xinWeChat.savedState'\n",
}
],
"refs": {
"2c394b45": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nunzip \"$INSTALLER_PATH\" -d \"$TMPDIR\"\n# copy to the applications folder\nquit_and_track_application 'com.isaacmarovitz.Whisky'\nif [ -d \"$APPDIR/Whisky.app\" ]; then\n\tsudo mv \"$APPDIR/Whisky.app\" \"$TMPDIR/Whisky.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Whisky.app\" \"$APPDIR\"\nrelaunch_application 'com.isaacmarovitz.Whisky'\nmkdir -p .\n/bin/ln -h -f -s -- \"$APPDIR/Whisky.app/Contents/Resources/WhiskyCmd\" \"whisky\"\n",
"slug": "workflowy/darwin",
"platform": "darwin",
"unique_identifier": "com.workflowy.desktop",
"description": "WorkFlowy is an app for notetaking tool."
@coderabbitai

coderabbitai Bot commented Jun 9, 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

Run ID: 9d7c91f5-1b59-4855-8463-9060ff220370

📥 Commits

Reviewing files that changed from the base of the PR and between 3d1c326 and aacf9a3.

⛔ Files ignored due to path filters (20)
  • website/assets/images/app-icon-wave-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wavebox-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wealthfolio-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-weasis-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-webcatalog-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wechat-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-weektodo-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-whatroute-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-whisky-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-whispering-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wifiman-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-windowkeys-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wins-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wispr-flow-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wondershare-edrawmax-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wondershare-filmora-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-wordservice-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-workflowy-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-worksheet-crafter-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-workspaces-60x60@2x.png is excluded by !**/*.png
📒 Files selected for processing (62)
  • ee/maintained-apps/inputs/homebrew/wave.json
  • ee/maintained-apps/inputs/homebrew/wavebox.json
  • ee/maintained-apps/inputs/homebrew/wealthfolio.json
  • ee/maintained-apps/inputs/homebrew/weasis.json
  • ee/maintained-apps/inputs/homebrew/webcatalog.json
  • ee/maintained-apps/inputs/homebrew/wechat.json
  • ee/maintained-apps/inputs/homebrew/weektodo.json
  • ee/maintained-apps/inputs/homebrew/whatroute.json
  • ee/maintained-apps/inputs/homebrew/whisky.json
  • ee/maintained-apps/inputs/homebrew/whispering.json
  • ee/maintained-apps/inputs/homebrew/wifiman.json
  • ee/maintained-apps/inputs/homebrew/windowkeys.json
  • ee/maintained-apps/inputs/homebrew/wins.json
  • ee/maintained-apps/inputs/homebrew/wispr-flow.json
  • ee/maintained-apps/inputs/homebrew/wondershare-edrawmax.json
  • ee/maintained-apps/inputs/homebrew/wondershare-filmora.json
  • ee/maintained-apps/inputs/homebrew/wordservice.json
  • ee/maintained-apps/inputs/homebrew/workflowy.json
  • ee/maintained-apps/inputs/homebrew/worksheet-crafter.json
  • ee/maintained-apps/inputs/homebrew/workspaces.json
  • ee/maintained-apps/outputs/apps.json
  • ee/maintained-apps/outputs/wave/darwin.json
  • ee/maintained-apps/outputs/wavebox/darwin.json
  • ee/maintained-apps/outputs/wealthfolio/darwin.json
  • ee/maintained-apps/outputs/weasis/darwin.json
  • ee/maintained-apps/outputs/webcatalog/darwin.json
  • ee/maintained-apps/outputs/wechat/darwin.json
  • ee/maintained-apps/outputs/weektodo/darwin.json
  • ee/maintained-apps/outputs/whatroute/darwin.json
  • ee/maintained-apps/outputs/whisky/darwin.json
  • ee/maintained-apps/outputs/whispering/darwin.json
  • ee/maintained-apps/outputs/wifiman/darwin.json
  • ee/maintained-apps/outputs/windowkeys/darwin.json
  • ee/maintained-apps/outputs/wins/darwin.json
  • ee/maintained-apps/outputs/wispr-flow/darwin.json
  • ee/maintained-apps/outputs/wondershare-edrawmax/darwin.json
  • ee/maintained-apps/outputs/wondershare-filmora/darwin.json
  • ee/maintained-apps/outputs/wordservice/darwin.json
  • ee/maintained-apps/outputs/workflowy/darwin.json
  • ee/maintained-apps/outputs/worksheet-crafter/darwin.json
  • ee/maintained-apps/outputs/workspaces/darwin.json
  • frontend/pages/SoftwarePage/components/icons/Wave.tsx
  • frontend/pages/SoftwarePage/components/icons/Wavebox.tsx
  • frontend/pages/SoftwarePage/components/icons/Wealthfolio.tsx
  • frontend/pages/SoftwarePage/components/icons/Weasis.tsx
  • frontend/pages/SoftwarePage/components/icons/Webcatalog.tsx
  • frontend/pages/SoftwarePage/components/icons/Wechat.tsx
  • frontend/pages/SoftwarePage/components/icons/Weektodo.tsx
  • frontend/pages/SoftwarePage/components/icons/Whatroute.tsx
  • frontend/pages/SoftwarePage/components/icons/Whisky.tsx
  • frontend/pages/SoftwarePage/components/icons/Whispering.tsx
  • frontend/pages/SoftwarePage/components/icons/Wifiman.tsx
  • frontend/pages/SoftwarePage/components/icons/Windowkeys.tsx
  • frontend/pages/SoftwarePage/components/icons/Wins.tsx
  • frontend/pages/SoftwarePage/components/icons/WisprFlow.tsx
  • frontend/pages/SoftwarePage/components/icons/WondershareEdrawmax.tsx
  • frontend/pages/SoftwarePage/components/icons/WondershareFilmora.tsx
  • frontend/pages/SoftwarePage/components/icons/Wordservice.tsx
  • frontend/pages/SoftwarePage/components/icons/Workflowy.tsx
  • frontend/pages/SoftwarePage/components/icons/WorksheetCrafter.tsx
  • frontend/pages/SoftwarePage/components/icons/Workspaces.tsx
  • frontend/pages/SoftwarePage/components/icons/index.ts

Walkthrough

This PR adds 20 new macOS applications to the Fleet maintained-apps system. It defines input metadata for each app, creates macOS release configurations with embedded install/uninstall shell scripts that handle app lifecycle management, adds entries to the application registry, creates frontend icon components, and registers those icons in the lookup table. The install scripts manage app state preservation during updates and use privilege-aware GUI session relaunch logic. The uninstall scripts safely remove app bundles and user data by trashing files under the logged-in console user's context.

Possibly related PRs

  • fleetdm/fleet#47175: Updates frontend/pages/SoftwarePage/components/icons/index.ts to extend SOFTWARE_NAME_TO_ICON_MAP with additional app-to-icon mappings for maintained apps.
  • fleetdm/fleet#47174: Adds new maintained-app entries to ee/maintained-apps/outputs/apps.json and wires new app icons into SOFTWARE_NAME_TO_ICON_MAP.
  • fleetdm/fleet#47046: Expands the icon registry by extending SOFTWARE_NAME_TO_ICON_MAP to register additional app icons in the same location.
✨ 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 new-mac-fmas-w

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.

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