diff --git a/README.md b/README.md index 9cf53b0..51c69e9 100644 --- a/README.md +++ b/README.md @@ -8,23 +8,6 @@ cycle through the spectrum. Requires macOS 13 or later. Universal (Apple silicon and Intel). -## Install - -```sh -make install -``` - -Then open System Settings → Screen Saver and pick **Macstify**. - -macOS keeps the loaded bundle cached, so when you install a newer build over an older one, the old -version may keep running. Force a reload with: - -```sh -killall legacyScreenSaver -``` - -and quit and reopen System Settings. - ## Options ![Options](docs/options.png) @@ -39,78 +22,3 @@ and quit and reopen System Settings. | Color speed | 1.00× | 0.0–3.0 | Hue cycling rate. `0.00×` freezes each shape on its starting color. | Settings are stored per user through `ScreenSaverDefaults` under `jp.winebarrel.Macstify`. - -## Development - -Built in Swift 6 language mode, so strict concurrency checking is on. Everything that touches AppKit -runs on the main actor; `MacstifyEngine` stays free of actor isolation, which is what lets the -snapshot path drive it directly. - -`Sources/MacstifyEngine.swift` holds the simulation and drawing, and depends on nothing but a -`CGRect` and a `CGContext`. `MacstifyPreview` is a development harness around it: - -```sh -make preview # build it and open the live window - -P=build/Build/Products/Release/MacstifyPreview.app/Contents/MacOS/MacstifyPreview - -$P # live window -$P --options # live window with the Options sheet open -$P --snapshot out.png --frames 900 # render frames offscreen, write a PNG -$P --snapshot out.png --preview # as the small System Settings thumbnail -$P --snapshot out.png --speed 4 # override the saved speed for one render -$P --snapshot out.png --options # render the Options sheet itself -``` - -The live window hosts the real `MacstifyView`; snapshots drive the engine directly, which is how -`--speed` applies to a single render without touching your saved settings. `--size` is in points and -snapshots are written at 2x, as on a Retina display. - -The screenshots above were produced with `--snapshot`. - -CI builds and analyses both schemes and runs the same checks `make lint` and `make format` run -locally. - -### Thumbnail - -The picker in System Settings shows `Contents/Resources/thumbnail.png` and `thumbnail@2x.png` -(90×58 and 180×116, the sizes Apple's own savers use). Without them macOS substitutes a generic -placeholder image. `COMBINE_HIDPI_IMAGES` is off so the two stay separate PNGs instead of being -merged into a single `thumbnail.tiff`, which the picker does not pick up. - -Trail spacing is proportional to the screen's shorter edge while line width is absolute, so a -render this small collapses into a fat line at the stored speed. `--speed` compensates: - -```sh -$P --snapshot Resources/thumbnail@2x.png --preview --size 90x58 --speed 4 --frames 600 -sips -Z 90 Resources/thumbnail@2x.png --out Resources/thumbnail.png -``` - -## Releasing - -`make install` signs with whatever certificate the project is configured for, which is enough for a -saver you build and install yourself. Copying that bundle to another Mac is not: it arrives -quarantined, and Gatekeeper refuses anything without a Developer ID signature and a notarization -ticket. - -```sh -make release -``` - -builds with the Developer ID identity and a secure timestamp, submits the bundle to Apple's notary -service, staples the returned ticket, and writes `dist/Macstify.zip` alongside a SHA-256 -`dist/checksum.txt`. The zip that gets submitted and the zip that gets distributed are different -files — stapling applies to the bundle, so the distributable has to be re-zipped afterwards. - -It needs a `Developer ID Application` certificate in the keychain and notary credentials stored -under the profile name `macstify`: - -```sh -xcrun notarytool store-credentials macstify --apple-id you@example.com --team-id TEAMID -``` - -Override the defaults with `make release CODESIGN_IDENTITY="..." NOTARY_PROFILE="..."`. - -## License - -[CC0 1.0 Universal](LICENSE).