Clear sysproxy on core death; probe+reconnect; subscription prune; Best ignores soft UDP; Windows tray; Android protocol gate; CI workflows. Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
# Code signing (release)
|
|
|
|
## macOS
|
|
|
|
1. Create a **Developer ID Application** certificate in Apple Developer.
|
|
2. Store notary credentials once:
|
|
|
|
```bash
|
|
xcrun notarytool store-credentials "navis-notary" \
|
|
--apple-id "you@example.com" \
|
|
--team-id "TEAMID" \
|
|
--password "app-specific-password"
|
|
```
|
|
|
|
3. Build with identity (packmac picks it up):
|
|
|
|
```bash
|
|
export NAVIS_CODESIGN_IDENTITY="Developer ID Application: Example Ltd (TEAMID)"
|
|
./scripts/build-macos-arm64.sh
|
|
```
|
|
|
|
4. Notarize the DMG:
|
|
|
|
```bash
|
|
export NAVIS_NOTARY_PROFILE="navis-notary"
|
|
./scripts/sign-macos.sh dist/navis-release/darwin-arm64/Navis.dmg
|
|
```
|
|
|
|
Without these env vars, packmac uses **ad-hoc** signing (`-`) — fine for local/dev.
|
|
|
|
For a **release gate** (fail if unsigned):
|
|
|
|
```bash
|
|
export REQUIRE_CODESIGN=1
|
|
export NAVIS_CODESIGN_IDENTITY="Developer ID Application: Example Ltd (TEAMID)"
|
|
./scripts/build-macos-arm64.sh
|
|
```
|
|
|
|
In-app macOS updates **do not** re-sign with ad-hoc `-` (that would strip Developer ID). They only re-sign when `NAVIS_CODESIGN_IDENTITY` is set to a real identity.
|
|
## Windows
|
|
|
|
Sign `Navis.exe` with Authenticode (EV or standard code signing cert):
|
|
|
|
```bat
|
|
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a dist\navis-release\Navis.exe
|
|
signtool verify /pa dist\navis-release\Navis.exe
|
|
```
|
|
|
|
Then refresh `sha256` in `dist/update.json` (or re-run the Windows release script that stamps it).
|