included Sparkle

This commit is contained in:
Micha
2025-11-22 18:56:55 +01:00
parent db1f15f981
commit dc710d53aa
15 changed files with 579 additions and 28 deletions

View File

@@ -11,6 +11,7 @@ iKeyMon is a native macOS app written in SwiftUI that provides live monitoring f
- Automatic updates:
- Ping every 10 seconds
- Server info every 60 seconds
- Optional automatic update checks that watch the latest Gitea release (with manual “Check now” button and prerelease channel toggle)
- Organized layout using tabs: General / Resources / Services
- Stores API keys securely in the macOS Keychain
- Native macOS look & feel using SwiftUI
@@ -46,6 +47,34 @@ Use the helper script to produce distributables in `dist/`:
```
It cleans previous artifacts, builds the `Release` configuration, and drops both `iKeyMon-<version>.zip` and `iKeyMon-<version>.dmg` into the `dist` folder (ignored by git). To enable codesigning + notarization, copy `signing.env.example` to `.signing.env`, fill in your Developer ID identity, Apple ID, team ID, and app-specific password. The script sources that file locally (it remains gitignored) and performs signing/notarization when the values are present.
To auto-publish the artifacts as a Gitea release, extend `.signing.env` with:
```
GITEA_TOKEN="..."
GITEA_OWNER="tracer"
GITEA_REPO="iKeyMon"
# optional: GITEA_API_BASE="https://git.24unix.net/api/v1"
# optional: GITEA_TARGET_COMMIT="master"
# optional: GITEA_PRERELEASE="false" # defaults to true until preferences are done
```
`GITEA_TARGET_COMMIT` defaults to the current `HEAD` commit, so overriding it lets you publish from another branch if needed. Whenever those variables are set, the script will create (or reuse) tag `v<version>` and upload both ZIP and DMG as release assets automatically.
### Update checks
- The app can automatically query the Gitea release feed on launch (Preferences → Updates → “Automatically check for updates”).
- “Check for updates” also lives in the main window toolbar; if you're already up to date, you'll get a confirmation alert.
- Preferences let you opt into prerelease builds (enabled by default for now because current releases are flagged prerelease) and show the latest fetched release number for reference.
- When a newer build is available, a prompt offers to open the DMG download (or you can revisit the release info inside Preferences).
### Versioning workflow
- The canonical marketing version lives in `version.json` and follows the format `YY.major.minor` (example: `26.1.2`). Update that file manually whenever you cut a new release branch.
- The build number is derived automatically from the git commit count on the current branch (you can override it by exporting `BUILD_NUMBER` before running the script if needed).
- Run `./scripts/sync_version.sh` anytime after editing `version.json` (the release script already calls it). The helper updates `MARKETING_VERSION` and `CURRENT_PROJECT_VERSION` inside `iKeyMon.xcodeproj`, keeping Xcode, the app bundle, and release artifacts in sync.
- `scripts/build_release.sh` reads the same `version.json` for naming the generated ZIP/DMG, so the artifact names, Info.plist values, and UI displays all stay aligned.
## 📦 License
MIT — see [LICENSE](LICENSE) for details.