Skip to content

Commit 1663c3a

Browse files
pavelhovpavelhov
andauthored
docs: explain iCloud Drive backup for updater signing key (#54)
Co-authored-by: pavelhov <pavelhov@vt.edu>
1 parent 871287c commit 1663c3a

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

‎README.md‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,24 @@ UNIVERSAL=1 bun run package:macos
128128

129129
`package:macos` requires a clean git working tree so a release archive cannot include uncommitted files. Use `bun run build:macos` for a local development build from a dirty checkout.
130130

131+
#### Back up the macOS updater signing key
132+
133+
Maintainers must keep the **existing** Sparkle Ed25519 private key: losing it prevents signing updates
134+
for installations that trust its public key. The release scripts read the mode-`0600` file named by
135+
`SPARKLE_PRIVATE_KEY_FILE`; keep that working file outside the repository and release assets.
136+
137+
For a simple recovery copy, use Finder to **copy** that file into a dedicated iCloud Drive folder such
138+
as `iCloud Drive/CodexCommander Signing Backup/private-key`. Do not move the working file. Wait for
139+
Finder to finish uploading, then confirm the copy appears on another trusted device before relying
140+
on it. This is an ordinary synced file, so its cloud protection depends on your iCloud settings;
141+
local mode `0600` does not by itself encrypt the cloud copy. Keep the backup out of the repository,
142+
GitHub, and release assets.
143+
144+
On a replacement Mac, copy the backed-up file into a private local path outside the repository,
145+
restrict it to mode `0600`, and set `SPARKLE_PRIVATE_KEY_FILE` to that path. Verify that it derives
146+
the public key already embedded in released apps before signing anything. Do not generate a
147+
replacement key. An additional offline backup helps if you lose access to your Apple Account.
148+
131149
Every built app launches only the Bun runtime and server resources embedded in its own
132150
`Contents/Resources/runtime`; it never executes checkout `src/` or an ambient `ccx`. Rebuild the app
133151
to pick up source changes. If startup fails, the menu app stays open so its diagnostics and **Start**

0 commit comments

Comments
 (0)