Skip to content

Packaging and signing

Build on the OS and CPU architecture you are packaging for:

Terminal window
uv run scripts/build.py

It builds with the locked dependencies and the release profile, then writes the artifacts and SHA-256 checksum files to dist/.

Host Default output Other formats
macOS, Apple Silicon or Intel Aether-<version>-macos-<arch>.dmg --format app, --format tar
Linux, x86_64 or aarch64, glibc Aether-<version>-linux-<arch>.tar.gz --format deb
  • The DMG includes an Applications shortcut.
  • --format app writes dist/Aether.app; launch it with open dist/Aether.app. The bundle includes its icon and version metadata.
  • macOS builds target macOS 12 or newer. Set MACOSX_DEPLOYMENT_TARGET before building to raise the minimum.
  • The Debian package derives its shared library dependencies from the built binary.
  • Arch users can build with makepkg from the repository’s PKGBUILD.

Build Linux packages on the oldest distribution you intend to support. They depend on host libraries, including WebKitGTK.

Local builds use an ad-hoc signature. Distributing outside your own machine needs an Apple Developer ID certificate and notarization credentials. Store a keychain profile with xcrun notarytool store-credentials, then:

Terminal window
uv run scripts/build.py \
--sign-identity 'Developer ID Application: Your Name (TEAMID)' \
--notary-profile aether-notary

The build signs the app with the hardened runtime, creates and signs the DMG, submits it for notarization, then staples and validates the ticket. APPLE_SIGNING_IDENTITY and APPLE_NOTARY_PROFILE in the environment work too.

.github/workflows/build.yml runs on GitHub’s macOS and Linux runners: it checks formatting, runs the tests, validates the packaging scripts and desktop entry, then builds the packages with ad-hoc signatures.

The official icon is the character 岚 on the brand’s mango to papaya gradient (#F59E0B to #FB7185), matching the sidebar’s brand mark. The source is crates/app/assets/app-icons/aether.svg. The glyph is stored as outlines so builds don’t depend on an installed CJK font.

PNG sizes and the macOS .icns are checked in, so normal builds need no image tools. After editing the SVG, install ImageMagick and run:

Terminal window
bash scripts/generate-icons.sh

Packaging tests:

Terminal window
uv run -m unittest discover -s scripts/tests -v