# SonarDesk release distribution The website now owns SonarDesk release distribution from the admin area. ## Deploy 1. Deploy the code normally. 2. Run `php artisan migrate --force`. 3. Ensure Laravel's `storage` directory remains shared/persistent between releases (the existing Deployer configuration already shares `storage`). 4. Ensure the web/PHP upload limits are large enough for the DMG. For a 1 GB application limit, configure nginx `client_max_body_size` and PHP `upload_max_filesize` / `post_max_size` accordingly. ## Publishing a build Open **Admin → Releases → New release**. Enter the marketing version, build number, minimum macOS version and release notes, upload the signed/notarized DMG or ZIP, and paste the Sparkle EdDSA signature when Sparkle is enabled. Save as a draft until the package is ready, then publish it. Published stable releases automatically feed: - `/release` — customer-facing distribution centre - `/download` — latest stable package - `/updates/appcast.xml` — Sparkle feed - the licence portal download call-to-action - licence delivery email download call-to-action The SHA-256 checksum and file size are calculated on upload. Download counts are tracked per release. ## Sparkle Generate the EdDSA signature with the Sparkle release tooling and paste it into the release editor. Configure the macOS app's feed URL to the production `/updates/appcast.xml` endpoint. Do not place Sparkle private signing keys on the public web server.