Skip to content

Windows host: compile the generated icon + VERSIONINFO resources - #15

Merged
turinglambdaai merged 1 commit into
mainfrom
fix/windows-exe-icon-resources
Oct 17, 2026
Merged

turinglambdaai merged 1 commit into
mainfrom
fix/windows-exe-icon-resources

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

The exe shipped with no icon and no file identity. User-visible symptom: the tray entry — and any taskbar/Explorer listing — showed the generic fallback box instead of the Fulcrum logo.

Root cause (scaffold drift, not a rivet regression)

raco rivet build generates .rivet/build/windows/app-icon.rc (app icon + VERSIONINFO) and points RIVET_WINDOWS_ICON_RC at it. Rivet's scaffold template RivetHost.vcxproj consumes it with a ResourceCompile group — but this repo carries its own RivetHost.vcxproj, which predates the feature and never got the group. Empirically the staged exe had zero RT_ICON / RT_GROUP_ICON / RT_VERSION resources.

Fix

The same one-line group the template has:

<ItemGroup Condition="'$(RIVET_WINDOWS_ICON_RC)'!=''">
  <ResourceCompile Include="$(RIVET_WINDOWS_ICON_RC)" />
</ItemGroup>

Rivet-side companion: turinglambdaai/rivet#283 — the generated rc now emits the icon at numeric resource ID 1 (a bare IDI_RIVET_APP_ICON identifier compiles to a string-named resource that LoadIconW(MAKEINTRESOURCEW(1)) in MainWindow can never reach). rivet issue #282 documents both halves and the follow-up idea of a raco rivet doctor check for host projects that don't consume the variable.

Verified on this machine

RIVET_WINDOWS_ICON_RC points at the resource script raco rivet build
generates (app icon + version block), but this project never consumed
it — the ResourceCompile group only existed in rivet's scaffold
template, and this repo carries its own vcxproj. The exe shipped with
no RT_GROUP_ICON and no RT_VERSION: the tray icon, taskbar button and
Explorer listings all fell back to the generic application icon, and
the tray entry the user sees was the white fallback box.

With the group in place the exe carries the Fulcrum icon at resource
ID 1 — the slot LoadIconW(MAKEINTRESOURCEW(1)) in MainWindow expects —
and its VERSIONINFO block. Verified by enumerating the staged exe's
resource directory: RT_ICON #1-#7, RT_GROUP_ICON #1, RT_VERSION #1.
@turinglambdaai
turinglambdaai merged commit 6648336 into main Oct 17, 2026
7 checks passed
@turinglambdaai
turinglambdaai deleted the fix/windows-exe-icon-resources branch October 17, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant