Repository navigation
Build and draft releases from version tags - #4
Merged
Merged
Conversation
Add a Release workflow: pushing a v* tag builds the self-signed macOS DMG (identity imported from repo secrets into a temporary keychain) and the Windows MSI, then attaches both to a draft release with the CHANGELOG section as notes. Manual runs build artifacts only. Windows publishing no longer depends on gitignored publish profiles, which never existed in the repo, so a clean clone built a framework-dependent app. The csproj now sets SelfContained and WindowsAppSDKSelfContained, and publish.ps1 fails if coreclr.dll or the Windows App SDK runtime is missing from the payload. The About dialog now shows major.minor.patch.
There was a problem hiding this comment.
🟡 Changes recommended
Release credentials can reach PR builds, and reruns can overwrite already-published releases.
2 open findings
What changed in this PR
Automates draft releases from version tags while fixing Windows packaging and version display.
Changes:
- Adds macOS/Windows installer builds and draft release creation.
- Ensures Windows publishes are self-contained.
- Updates release documentation and About-version formatting.
| File | Description |
|---|---|
.github/workflows/release.yml |
Builds installers and creates draft releases. |
README.md |
Documents the release process. |
Docs/Distribution/Packaging.md |
Documents CI signing secrets. |
CursorFollowWin/CursorFollowWin.csproj |
Enables self-contained publishing. |
CursorFollowWin/scripts/publish.ps1 |
Validates bundled runtime files. |
CursorFollowWin/SettingsWindow.xaml.cs |
Displays patch versions. |
CursorFollowWin/README.md |
Updates publishing instructions. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+48
to
+53
| if [ -z "$P12_BASE64" ]; then | ||
| if [ -n "$TAG" ]; then echo "::error::MAC_SIGNING_P12 secret is not set"; exit 1; fi | ||
| echo "::warning::No signing secret; building ad-hoc signed (artifacts only)" | ||
| echo "SIGN_IDENTITY=-" >> "$GITHUB_ENV" | ||
| exit 0 | ||
| fi |
Comment on lines
+120
to
+125
| if gh release view "$TAG" >/dev/null 2>&1; then | ||
| gh release upload "$TAG" dist/* --clobber | ||
| gh release edit "$TAG" --notes-file notes.md | ||
| else | ||
| gh release create "$TAG" dist/* --draft --verify-tag --title "CursorFollow ${TAG#v}" --notes-file notes.md | ||
| fi |
- mac: make PassthroughHostingView non-generic. Xcode 26.6's optimizer crashes (EarlyPerfInliner) on the deinit of the generic private NSHostingView subclass in Release builds; Xcode 27 is fine. - win: pin the publish output with -o. Without a publish profile the default path gains a bin\<platform>\ level and publish.ps1 lost it.
The self-contained publish adds per-language folders of .mui files. WiX validation rejected them (ICE03 odd .mui language ids, ICE64 per-user subfolders without RemoveFile rows). Suppress both and remove the whole install folder on a real uninstall, like the existing data-folder cleanup.
This was referenced Oct 10, 2026
With the Settings window open, Application.Exit closed only some of the three windows and returned. The window it skipped (the output window in one run, Settings in another) never got a close, so the WinUI message loop kept running and the process stayed alive. A trace of Closed events showed Exit never touched the surviving window. ExitApplication now closes Settings, the panel and the output window itself, then calls Exit. Not a regression from the self-contained publish: the framework-dependent Debug build hangs the same way. Fixes #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Pushing a
v*tag now builds the macOS DMG and Windows MSI in Actions and attaches them to a draft release, with the matching CHANGELOG section as notes. You review the draft, then publish it.MAC_SIGNING_P12/MAC_SIGNING_P12_PASSWORDsecrets into a throwaway keychain. A tag build fails if the secrets are missing; PR and manual runs fall back to ad-hoc signing.Also fixes two Windows release bugs found on the way:
win-*.pubxmlprofiles that are gitignored and never existed in the repo, so a clean clone built a framework-dependent app. The csproj now setsSelfContainedandWindowsAppSDKSelfContained, andpublish.ps1fails if the runtimes are missing from the payload.0.5for 0.5.1; it now shows major.minor.patch.Not yet tested: installing and launching the CI-built MSI on a real Windows machine.