Skip to content

Package the macOS release as Ludusavi.app - #642

Merged
mtkennerly merged 3 commits into
mtkennerly:masterfrom
marcodallagatta:pr/macos-app-bundle
Aug 16, 2026
Merged

mtkennerly merged 3 commits into
mtkennerly:masterfrom
marcodallagatta:pr/macos-app-bundle

Conversation

@marcodallagatta

@marcodallagatta marcodallagatta commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Package the macOS release as Ludusavi.app with standard bundle metadata and the Ludusavi icon.
  • Preserve direct terminal use with a top-level ludusavi symlink to the bundled executable.
  • Add a macOS release-layout smoke test and document how to launch the app after extraction.

Problem

The current macOS archive contains only a raw Mach-O executable. It has no application bundle metadata or bundled app icon, so macOS services such as Launch Services, Raycast, and the Dock cannot consistently recognize it as Ludusavi. Users can end up with a generic executable or script-style icon rather than a normal application entry.

This makes the download more straightforward to use on macOS: extract the archive and open Ludusavi.app like any other app, while retaining the existing command-line workflow.

Testing

  • bash tests/package-macos-app.sh
  • Packaged the released ludusavi 0.31.0 binary, extracted the archive, and verified the app executable, icon metadata, bundle identifier, and relative CLI symlink.
  • Parsed .github/workflows/main.yaml with Ruby's YAML parser.

@mtkennerly

Copy link
Copy Markdown
Owner

Hi! Thanks, this does make sense. I'll make some time in the next couple of days to test this out.

Comment thread assets/icon.icns

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

For reference, how was this icns file generated?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Hi! I generated it from Ludusavi’s existing assets/icon.svg: rendered it to a 1024×1024 PNG with rsvg-convert, placed it on a transparent 1024×1024 canvas at 820×820 to give it more standard Dock padding (as it looked very big otherwise, compared to the other icons on the dock), then used Pillow to write the .icns sizes from 16 through 1024 pixels. I can add a small reproducible generation script or document the exact command rather than keeping the binary asset as a hand-generated export.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Having a reproducible script would be great if it's not too much hassle 👍

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done :)

@mtkennerly

Copy link
Copy Markdown
Owner

Finally got a chance to try this, and the .app works nicely :D Thanks again.

@mtkennerly
mtkennerly merged commit b822ac4 into mtkennerly:master Aug 16, 2026
@mtkennerly mtkennerly added this to the v0.32.0 milestone Aug 16, 2026
mtkennerly added a commit that referenced this pull request Aug 16, 2026
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.

2 participants