Skip to content

Stamp Windows FileVersion into the exe - #49

Merged
davidnewhall merged 3 commits into
mainfrom
ci/windows-fileversion
Aug 30, 2026
Merged

Stamp Windows FileVersion into the exe#49
davidnewhall merged 3 commits into
mainfrom
ci/windows-fileversion

Conversation

@davidnewhall

Copy link
Copy Markdown
Contributor

Summary

  • Embed icon, manifest, and PE `VERSIONINFO` via `goversioninfo` so Explorer Properties shows the version (same approach as unpackerr).
  • File version is the `x.y.z` prefix of `.Version` plus `REVISION` (not `.RawVersion`, which stays on the last tag if `--nightly` is ever used). Product version is `.Version`.
  • `-platform-specific` writes `resource_windows_{amd64,386,arm64,arm}.syso` because xt ships more than Windows amd64.

xt has no Darwin app bundle (quill-notarized universal CLI + Homebrew cask of the binary), so there is no `CFBundleShortVersionString` to stamp.

Test plan

  • Next tagged Windows zip shows File version in Explorer → Properties → Details (not `0.0.0.0`).
  • Icon is present on `xt.exe`.
  • `xt -v` still matches ldflags.

Made with Cursor

davidnewhall and others added 2 commits August 29, 2026 22:38
xt had a Windows icon and manifest sitting untracked; this commits
them and embeds VERSIONINFO the same way unpackerr does, using the
x.y.z prefix of .Version plus REVISION so --nightly cannot fall back
to a stale .RawVersion. No Darwin Info.plist: xt is a quill-notarized
CLI, not an app bundle.

Co-authored-by: Cursor <cursoragent@cursor.com>
The previous ico was Unpackerr's. This one is the circular paint-splatter
XT mark from the repo wordmark, packed as 16–256 so Explorer stays sharp.

Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds Windows-specific resources to the xt.exe build so Windows Explorer shows the expected icon/manifest metadata and (intended) version information in file properties.

Changes:

  • Add a Windows manifest and documentation for the Windows icon assets.
  • Add a GoReleaser pre-build hook to generate Windows .syso resource files via goversioninfo.
  • Ignore generated .syso resource artifacts in Git.

Reviewed changes

Copilot reviewed 3 out of 6 changed files in this pull request and generated 1 comment.

File Description
init/windows/README.md Documents the Windows icon assets and how they’re embedded.
init/windows/manifest.xml Adds an application manifest intended to be embedded into the Windows executable.
.goreleaser.yaml Adds a goversioninfo hook to generate Windows resource .syso files and stamp version metadata.
.gitignore Ignores generated Windows resource .syso files.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .goreleaser.yaml Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@davidnewhall
davidnewhall merged commit 2c2bc47 into main Aug 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants