Add macOS Fleet-maintained apps (L) - #47519
Conversation
Adds 23 Fleet-maintained app(s) whose cask token starts with 'L': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries. Split out from #47121.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #47519 +/- ##
==========================================
- Coverage 67.15% 67.15% -0.01%
==========================================
Files 3524 3547 +23
Lines 228732 228778 +46
Branches 11907 11909 +2
==========================================
+ Hits 153611 153634 +23
- Misses 61268 61290 +22
- Partials 13853 13854 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR adds a new batch of macOS Fleet-maintained apps whose Homebrew cask token starts with “L”, including the generated app manifests (inputs/outputs), installer/uninstaller scripts, and corresponding Software page icons and icon map entries.
Changes:
- Added new Software page icon components for several “L*” apps and wired them into
SOFTWARE_NAME_TO_ICON_MAP. - Added new Fleet-maintained app definitions under
ee/maintained-apps/inputs/homebrew/and generatedee/maintained-apps/outputs/<app>/darwin.json. - Updated
ee/maintained-apps/outputs/apps.jsonto include the new app metadata entries.
Reviewed changes
Copilot reviewed 71 out of 94 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/pages/SoftwarePage/components/icons/Lunasea.tsx | Adds LunaSea icon component (base64 PNG-in-SVG). |
| frontend/pages/SoftwarePage/components/icons/Logseq.tsx | Adds Logseq icon component (base64 PNG-in-SVG). |
| frontend/pages/SoftwarePage/components/icons/Localsend.tsx | Adds LocalSend icon component (base64 PNG-in-SVG). |
| frontend/pages/SoftwarePage/components/icons/Lapce.tsx | Adds Lapce icon component (base64 PNG-in-SVG). |
| frontend/pages/SoftwarePage/components/icons/index.ts | Registers new icon imports and maps software-name keys to the new icons. |
| ee/maintained-apps/outputs/lycheeslicer/darwin.json | Adds generated Lychee Slicer manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lunatask/darwin.json | Adds generated Lunatask manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lunasea/darwin.json | Adds generated LunaSea manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lunar/darwin.json | Adds generated Lunar manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lunacy/darwin.json | Adds generated Lunacy manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/low-profile/darwin.json | Adds generated Low Profile manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/losslesscut/darwin.json | Adds generated LosslessCut manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/loopback/darwin.json | Adds generated Loopback manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/loop/darwin.json | Adds generated Loop manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lookaway/darwin.json | Adds generated LookAway manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/logseq/darwin.json | Adds generated Logseq manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/locationsimulator/darwin.json | Adds generated LocationSimulator manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/localsend/darwin.json | Adds generated LocalSend manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/local/darwin.json | Adds generated Local manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lo-rain/darwin.json | Adds generated lo-rain manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lingon-x/darwin.json | Adds generated Lingon X manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/linearmouse/darwin.json | Adds generated LinearMouse manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lightburn/darwin.json | Adds generated LightBurn manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/launchbar/darwin.json | Adds generated LaunchBar manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/latest/darwin.json | Adds generated Latest manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/last-window-quits/darwin.json | Adds generated Last Window Quits manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lasso-app/darwin.json | Adds generated Lasso manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/lapce/darwin.json | Adds generated Lapce manifest + install/uninstall script refs. |
| ee/maintained-apps/outputs/apps.json | Adds new “L*” app entries (name/slug/identifier/description) to the catalog. |
| ee/maintained-apps/inputs/homebrew/lycheeslicer.json | Adds Lychee Slicer input definition. |
| ee/maintained-apps/inputs/homebrew/lunatask.json | Adds Lunatask input definition. |
| ee/maintained-apps/inputs/homebrew/lunasea.json | Adds LunaSea input definition. |
| ee/maintained-apps/inputs/homebrew/lunar.json | Adds Lunar input definition. |
| ee/maintained-apps/inputs/homebrew/lunacy.json | Adds Lunacy input definition. |
| ee/maintained-apps/inputs/homebrew/low-profile.json | Adds Low Profile input definition. |
| ee/maintained-apps/inputs/homebrew/losslesscut.json | Adds LosslessCut input definition. |
| ee/maintained-apps/inputs/homebrew/loopback.json | Adds Loopback input definition. |
| ee/maintained-apps/inputs/homebrew/loop.json | Adds Loop input definition. |
| ee/maintained-apps/inputs/homebrew/lookaway.json | Adds LookAway input definition. |
| ee/maintained-apps/inputs/homebrew/logseq.json | Adds Logseq input definition. |
| ee/maintained-apps/inputs/homebrew/locationsimulator.json | Adds LocationSimulator input definition. |
| ee/maintained-apps/inputs/homebrew/localsend.json | Adds LocalSend input definition. |
| ee/maintained-apps/inputs/homebrew/local.json | Adds Local input definition. |
| ee/maintained-apps/inputs/homebrew/lo-rain.json | Adds lo-rain input definition. |
| ee/maintained-apps/inputs/homebrew/lingon-x.json | Adds Lingon X input definition. |
| ee/maintained-apps/inputs/homebrew/linearmouse.json | Adds LinearMouse input definition. |
| ee/maintained-apps/inputs/homebrew/lightburn.json | Adds LightBurn input definition. |
| ee/maintained-apps/inputs/homebrew/launchbar.json | Adds LaunchBar input definition. |
| ee/maintained-apps/inputs/homebrew/latest.json | Adds Latest input definition. |
| ee/maintained-apps/inputs/homebrew/last-window-quits.json | Adds Last Window Quits input definition. |
| ee/maintained-apps/inputs/homebrew/lasso-app.json | Adds Lasso input definition. |
| ee/maintained-apps/inputs/homebrew/lapce.json | Adds Lapce input definition. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughThis PR adds 23 macOS applications (Lapce → Lychee Slicer) to Fleet’s maintained-apps pipeline. It introduces Homebrew input JSON files, per-app darwin.json installer/uninstaller manifests with embedded Bash scripts and checksums, updates ee/maintained-apps/outputs/apps.json to register the apps, and adds frontend React SVG icon components plus name→icon mappings for the SoftwarePage. Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 16
🧹 Nitpick comments (1)
frontend/pages/SoftwarePage/components/icons/LoRain.tsx (1)
10-10: ⚡ Quick winStrip PNG metadata before embedding this asset.
Line 10 still includes EXIF/XMP chunks in the data URI, so the frontend ships non-rendered metadata in the JS bundle. Re-exporting the PNG without metadata keeps the icon identical but reduces client download size across this new icon set.
🤖 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 `@frontend/pages/SoftwarePage/components/icons/LoRain.tsx` at line 10, The embedded PNG data URI in the LoRain component still contains EXIF/XMP metadata; re-export/optimize the image (e.g., using pngcrush/optipng/Imagemagick or an image editor's “remove metadata” option) to strip metadata, replace the long base64 in the href value inside the LoRain component with the new metadata-free base64 string, and verify the visual output is identical and bundle size reduced (refer to the href data URI in LoRain.tsx).
🤖 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.
Inline comments:
In `@ee/maintained-apps/outputs/apps.json`:
- Around line 3463-3475: Update the user-facing description strings for the
listed app entries to be grammatical and consistent: locate the objects for
"Lasso" (unique_identifier "com.heavylightapps.lasso"), "Last Window Quits"
("io.lawand.last-window-quits"), "LosslessCut" and "Lunar" and rewrite their
"description" values into clear, natural English (e.g., "Lasso lets you move and
resize windows with the mouse.", "Last Window Quits automatically quits an app
when its last window is closed.", etc.), then scan the nearby blocks (around the
referenced entries at the same array) for similar malformed descriptions and
normalize them to the same concise style.
In `@ee/maintained-apps/outputs/lapce/darwin.json`:
- Line 20: The install flow currently moves the existing app before confirming
the extracted bundle and copy succeeded; change the sequence in the script
around MOUNT_POINT/TMPDIR/APPDIR so you first validate the extracted bundle and
copy completed (check the return codes of sudo cp -R and/or that
"$TMPDIR/Lapce.app" exists and is a valid .app bundle) and only then move the
existing "$APPDIR/Lapce.app" to a backup and atomically install the new bundle;
update the logic that uses MOUNT_POINT, TMPDIR, quit_and_track_application, and
the following mv/cp steps so failure to extract/copy aborts without removing the
original app and relaunch_application only runs after a successful install.
In `@ee/maintained-apps/outputs/lasso-app/darwin.json`:
- Line 12: The manifest currently disables integrity verification by setting the
JSON field "sha256": "no_check" and also points to an unversioned download URL;
replace the no_check value with the actual SHA-256 checksum of the specific DMG
release you intend to ship and update the URL to a pinned, versioned release
asset (or verify the checksum against the exact artifact you will publish).
Ensure the checksum string replaces "no_check" in the "sha256" field and that
the URL used corresponds exactly to the release used to compute that checksum so
installer integrity is enforced.
In `@ee/maintained-apps/outputs/latest/darwin.json`:
- Line 19: In quit_and_track_application replace the pgrep -f "$bundle_id" check
inside the quit loop with polling the same AppleScript check used earlier
(osascript -e "application id \"$bundle_id\" is running") so the loop waits for
the app to report not running before treating quit as successful; keep the
timeout logic and quit_success handling, and ensure all references to the old
pgrep-based condition are switched to the osascript application id check to
avoid false negatives on macOS.
- Line 19: The unzip step does not verify success or the presence of the
extracted bundle before moving the existing app; update the flow around unzip,
TMPDIR, and the copy logic so we fail fast if extraction fails or
"$TMPDIR/Latest.app" does not exist: after unzip "$INSTALLER_PATH" -d "$TMPDIR"
check the exit status and verify [[ -d "$TMPDIR/Latest.app" ]] before calling
quit_and_track_application, backing up or moving the existing
/Applications/Latest.app only when the extracted bundle is present, and exit
with a non-zero status and an error message if the check fails to avoid removing
the current app when extraction was unsuccessful.
In `@ee/maintained-apps/outputs/launchbar/darwin.json`:
- Line 20: The install phase must fail fast and restore backups if copy/move
fails: after attaching the DMG and creating MOUNT_POINT/TMPDIR, make the unpack
copy (sudo cp -R "$MOUNT_POINT"/* "$TMPDIR") and the subsequent sudo mv
"$APPDIR/LaunchBar.app" "$TMPDIR/LaunchBar.app.bkp" and sudo cp -R
"$TMPDIR/LaunchBar.app" "$APPDIR" check their exit codes and abort on error; if
the mv to *.app.bkp succeeds but the final cp to $APPDIR fails, restore the
backup by moving "$TMPDIR/LaunchBar.app.bkp" back to "$APPDIR/LaunchBar.app"
(and set a flag to skip relaunch_application 'at.obdev.LaunchBar'), ensure
errors cause immediate exit (non-zero) so scripts for LightBurn/LinearMouse and
functions quit_and_track_application/relaunch_application behave consistently.
- Line 20: quit_and_track_application currently uses pgrep -f "$bundle_id" to
decide if the GUI app stopped after running osascript ... to quit, which is
unreliable; change the loop in quit_and_track_application to repeatedly call
osascript -e "application id \"$bundle_id\" is running" (parsing for
"true"/"false") until it returns "false" or the existing timeout_duration
elapses, set quit_success accordingly, and remove the pgrep -f check; keep the
existing SECONDS timeout logic and messages so behavior/timing stays the same.
In `@ee/maintained-apps/outputs/lingon-x/darwin.json`:
- Line 19: In quit_and_track_application, replace the pgrep-based liveness check
(pgrep -f "$bundle_id") with polling of the same AppleScript query used earlier
— osascript -e "application id \"$bundle_id\" is running" — inside the SECONDS
loop so the loop breaks only when that AppleScript returns "false" (or not
"true"); update the quit detection logic and the quit_success flag accordingly
and remove reliance on pgrep -f "$bundle_id" to avoid false-negatives when
matching bundle identifiers.
In `@ee/maintained-apps/outputs/local/darwin.json`:
- Around line 4-12: The darwin.json manifest currently hardcodes an Apple
Silicon installer via the installer_url field (e.g.,
"local-10.1.0-mac-arm64.dmg"), which will break Intel hosts; update the manifest
generation so the macOS installer is either a universal/x64-compatible artifact
or the pipeline emits architecture-aware installer URLs and selects the correct
one at install time. Specifically, change the installer_url entry in the
affected darwin.json (and similar manifests like logseq/darwin.json) to point to
a universal or x64 build, or extend the manifest schema and generation logic to
produce/install using installer_url_arm64 and installer_url_x64 (or an arch
selector) and ensure the installer selection code uses that new field. Ensure
the version/queries lines remain unchanged and tests cover both Intel and Apple
Silicon cases.
In `@ee/maintained-apps/outputs/locationsimulator/darwin.json`:
- Line 19: The uninstall JSON uses the wrong bundle identifier in several trash
calls; update the string patterns passed to the trash function (the calls after
sudo rm -rf and the trash invocations) to consistently use the app ID used
elsewhere (com.schlaubi.LocationSimulator) instead of
de.davidklopp.locationsimulator so the trash function (and LOGGED_IN_USER usage)
targets the correct Application Scripts, Application Support, Containers and
recent documents paths; verify all occurrences in the lines calling trash
(including the Application Scripts,
com.apple.LSSharedFileList.ApplicationRecentDocuments, and Containers entries)
are replaced to match com.schlaubi.LocationSimulator.
In `@ee/maintained-apps/outputs/lookaway/darwin.json`:
- Line 19: The installer currently moves the existing bundle to
"$TMPDIR/LookAway.app.bkp" then runs sudo cp -R "$TMPDIR/LookAway.app" "$APPDIR"
without checking for failure, which can leave the app missing; update the
replacement flow (the backup/move + cp sequence around TMPDIR/LookAway.app and
APPDIR/LookAway.app.bkp) to check the exit status of the copy and, on failure,
restore the backup (move "$TMPDIR/LookAway.app.bkp" back to
"$APPDIR/LookAway.app"), emit an error and exit non‑zero so the script fails
hard; ensure this error/restore logic is applied to the same pattern used for
LookAway (and mirrored in the other installers) and reference TMPDIR, APPDIR,
and the backup filename/paths when implementing the checks.
In `@ee/maintained-apps/outputs/loopback/darwin.json`:
- Around line 4-12: The manifest declares "version": "2.4.10" but uses an
unversioned installer_url and sets "sha256": "no_check", which allows the
downloaded bits to change despite the pinned version; update the installer_url
to point to a deterministic, versioned artifact (one that includes the 2.4.10
release in its path or filename) and replace "sha256": "no_check" with the
actual SHA-256 checksum of that exact ZIP; verify the checksum matches the
artifact and, if the packaging hosts separate artifact IDs, also ensure
"install_script_ref" / "uninstall_script_ref" still reference the correct
immutable script versions after switching to the versioned URL.
- Line 20: The uninstall script fails to remove the Loopback LaunchAgent because
the literal '~/Library/LaunchAgents/…' is quoted and not expanded and the agent
isn't unloaded before deleting; update the removal to expand the logged-in
user's home using the LOGGED_IN_USER variable (e.g.
"/Users/$LOGGED_IN_USER/Library/LaunchAgents/com.rogueamoeba.loopbackd.plist")
and unload the agent first (use launchctl bootout gui/$(id -u
"$LOGGED_IN_USER")/system or launchctl remove com.rogueamoeba.loopbackd) before
calling sudo rm -rf; locate the LOGGED_IN_USER variable and the current sudo rm
-rf '~/Library/LaunchAgents/com.rogueamoeba.loopbackd.plist' line and replace
with an unload step followed by an expanded-path removal.
In `@ee/maintained-apps/outputs/losslesscut/darwin.json`:
- Line 19: The cleanup script calls trash(...) and uses LOGGED_IN_USER without
validating it; ensure you check LOGGED_IN_USER and that the corresponding home
directory exists before calling trash or performing any removals. Update the
top-level logic (where LOGGED_IN_USER is set and where trash is invoked) to
short-circuit when LOGGED_IN_USER is empty, "loginwindow", or when
/Users/$LOGGED_IN_USER does not exist, and only call the trash function (and
construct $trash) after confirming a real console user/home.
In `@ee/maintained-apps/outputs/low-profile/darwin.json`:
- Line 19: The delete pipeline in remove_receipt_files uses
/${INSTALL_LOCATION}/ instead of the computed FULL_INSTALL_LOCATION, so files on
non-root volumes aren’t removed; update the pipelines inside
remove_receipt_files (the two sudo pkgutil --only-files --files and sudo pkgutil
--only-dirs --files flows and their sed prefixes) to prefix matches with
${FULL_INSTALL_LOCATION}/ (use the FULL_INSTALL_LOCATION variable) instead of
/${INSTALL_LOCATION}/ so deletions target the actual install path, and ensure
the printed echo lines reflect the corrected prefix as well.
In `@frontend/pages/SoftwarePage/components/icons/LastWindowQuits.tsx`:
- Around line 5-10: The SVG component LastWindowQuits hard-codes width/height
and lacks a viewBox so forwarded SVGProps (like width/height or CSS sizing)
don’t scale the embedded raster; update the root <svg> in LastWindowQuits to
include viewBox="0 0 32 32" (keeping the existing width/height/default props and
the <image> unchanged) so external sizing props correctly scale the icon.
---
Nitpick comments:
In `@frontend/pages/SoftwarePage/components/icons/LoRain.tsx`:
- Line 10: The embedded PNG data URI in the LoRain component still contains
EXIF/XMP metadata; re-export/optimize the image (e.g., using
pngcrush/optipng/Imagemagick or an image editor's “remove metadata” option) to
strip metadata, replace the long base64 in the href value inside the LoRain
component with the new metadata-free base64 string, and verify the visual output
is identical and bundle size reduced (refer to the href data URI in LoRain.tsx).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0a035407-716c-4b97-8d5f-c5b172435e92
⛔ Files ignored due to path filters (23)
website/assets/images/app-icon-lapce-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lasso-app-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-last-window-quits-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-latest-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-launchbar-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lightburn-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-linearmouse-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lingon-x-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lo-rain-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-local-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-localsend-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-locationsimulator-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-logseq-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lookaway-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-loop-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-loopback-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-losslesscut-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-low-profile-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lunacy-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lunar-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lunasea-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lunatask-60x60@2x.pngis excluded by!**/*.pngwebsite/assets/images/app-icon-lycheeslicer-60x60@2x.pngis excluded by!**/*.png
📒 Files selected for processing (71)
ee/maintained-apps/inputs/homebrew/lapce.jsonee/maintained-apps/inputs/homebrew/lasso-app.jsonee/maintained-apps/inputs/homebrew/last-window-quits.jsonee/maintained-apps/inputs/homebrew/latest.jsonee/maintained-apps/inputs/homebrew/launchbar.jsonee/maintained-apps/inputs/homebrew/lightburn.jsonee/maintained-apps/inputs/homebrew/linearmouse.jsonee/maintained-apps/inputs/homebrew/lingon-x.jsonee/maintained-apps/inputs/homebrew/lo-rain.jsonee/maintained-apps/inputs/homebrew/local.jsonee/maintained-apps/inputs/homebrew/localsend.jsonee/maintained-apps/inputs/homebrew/locationsimulator.jsonee/maintained-apps/inputs/homebrew/logseq.jsonee/maintained-apps/inputs/homebrew/lookaway.jsonee/maintained-apps/inputs/homebrew/loop.jsonee/maintained-apps/inputs/homebrew/loopback.jsonee/maintained-apps/inputs/homebrew/losslesscut.jsonee/maintained-apps/inputs/homebrew/low-profile.jsonee/maintained-apps/inputs/homebrew/lunacy.jsonee/maintained-apps/inputs/homebrew/lunar.jsonee/maintained-apps/inputs/homebrew/lunasea.jsonee/maintained-apps/inputs/homebrew/lunatask.jsonee/maintained-apps/inputs/homebrew/lycheeslicer.jsonee/maintained-apps/outputs/apps.jsonee/maintained-apps/outputs/lapce/darwin.jsonee/maintained-apps/outputs/lasso-app/darwin.jsonee/maintained-apps/outputs/last-window-quits/darwin.jsonee/maintained-apps/outputs/latest/darwin.jsonee/maintained-apps/outputs/launchbar/darwin.jsonee/maintained-apps/outputs/lightburn/darwin.jsonee/maintained-apps/outputs/linearmouse/darwin.jsonee/maintained-apps/outputs/lingon-x/darwin.jsonee/maintained-apps/outputs/lo-rain/darwin.jsonee/maintained-apps/outputs/local/darwin.jsonee/maintained-apps/outputs/localsend/darwin.jsonee/maintained-apps/outputs/locationsimulator/darwin.jsonee/maintained-apps/outputs/logseq/darwin.jsonee/maintained-apps/outputs/lookaway/darwin.jsonee/maintained-apps/outputs/loop/darwin.jsonee/maintained-apps/outputs/loopback/darwin.jsonee/maintained-apps/outputs/losslesscut/darwin.jsonee/maintained-apps/outputs/low-profile/darwin.jsonee/maintained-apps/outputs/lunacy/darwin.jsonee/maintained-apps/outputs/lunar/darwin.jsonee/maintained-apps/outputs/lunasea/darwin.jsonee/maintained-apps/outputs/lunatask/darwin.jsonee/maintained-apps/outputs/lycheeslicer/darwin.jsonfrontend/pages/SoftwarePage/components/icons/Lapce.tsxfrontend/pages/SoftwarePage/components/icons/LassoApp.tsxfrontend/pages/SoftwarePage/components/icons/LastWindowQuits.tsxfrontend/pages/SoftwarePage/components/icons/Latest.tsxfrontend/pages/SoftwarePage/components/icons/Launchbar.tsxfrontend/pages/SoftwarePage/components/icons/Lightburn.tsxfrontend/pages/SoftwarePage/components/icons/Linearmouse.tsxfrontend/pages/SoftwarePage/components/icons/LingonX.tsxfrontend/pages/SoftwarePage/components/icons/LoRain.tsxfrontend/pages/SoftwarePage/components/icons/Local.tsxfrontend/pages/SoftwarePage/components/icons/Localsend.tsxfrontend/pages/SoftwarePage/components/icons/Locationsimulator.tsxfrontend/pages/SoftwarePage/components/icons/Logseq.tsxfrontend/pages/SoftwarePage/components/icons/Lookaway.tsxfrontend/pages/SoftwarePage/components/icons/Loop.tsxfrontend/pages/SoftwarePage/components/icons/Loopback.tsxfrontend/pages/SoftwarePage/components/icons/Losslesscut.tsxfrontend/pages/SoftwarePage/components/icons/LowProfile.tsxfrontend/pages/SoftwarePage/components/icons/Lunacy.tsxfrontend/pages/SoftwarePage/components/icons/Lunar.tsxfrontend/pages/SoftwarePage/components/icons/Lunasea.tsxfrontend/pages/SoftwarePage/components/icons/Lunatask.tsxfrontend/pages/SoftwarePage/components/icons/Lycheeslicer.tsxfrontend/pages/SoftwarePage/components/icons/index.ts
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Adds 23 Fleet-maintained app(s) whose cask token starts with 'L': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries.
Summary by CodeRabbit