Files
SonarDesk/docs/RELEASE-HARDENING.md
2026-09-29 16:55:12 +01:00

1.7 KiB

SonarDesk 2.2 Release Hardening

This build hardens the existing 2.1 iCloud-enabled application without changing its storage layout.

Implemented

  • Hardened Runtime and App Sandbox remain enabled for Release.
  • Release uses whole-module optimisation and product validation.
  • iCloud Drive JSON writes are file-coordinated and atomic.
  • Existing iCloud data files receive rolling backups in Backups (last 10 per data file).
  • iCloud reads detect files that are not downloaded instead of silently treating them as missing.
  • Report writes are coordinated and atomic; corrupt reports are preserved and reported rather than silently discarded.
  • Report deletion now surfaces filesystem errors.
  • SonarQube GET requests retry transient transport, 429, and 5xx failures with bounded backoff.
  • Authentication failures have a specific user-facing error.
  • Server URLs are normalised and reject credentials/query/fragment data.
  • Duplicate SonarQube server URLs are rejected.
  • Tokens remain in synchronisable Keychain and never enter iCloud Drive JSON.
  • Version bumped to 2.2.0 (build 6).

Required on the release Mac

A final archive still has to be compiled with Apple Xcode because this environment does not contain the macOS SDK/Xcode. Before distribution:

  1. Select the correct Apple Developer Team and confirm iCloud.net.absdev.SonarDesk is enabled for the App ID.
  2. Build the Release configuration with zero compiler errors.
  3. Archive with Developer ID Application signing.
  4. Notarize the archive and staple the notarization ticket.
  5. Test the signed/notarized build from a clean user account or second Mac, including iCloud Drive, Keychain, server add/edit/delete, reports, offline launch, and reconnect.