Skip to content

Fix the icon filename that broke every desktop build - #22

Merged
RichardHightower merged 1 commit into
mainfrom
build/desktop-v0.3.0
Aug 3, 2026
Merged

Fix the icon filename that broke every desktop build#22
RichardHightower merged 1 commit into
mainfrom
build/desktop-v0.3.0

Conversation

@RichardHightower

Copy link
Copy Markdown
Collaborator

The bug

cargo tauri build has never succeeded in this repo. This is why:

failed to bundle project: Failed to create app icon: `The image format could not be determined`

src-tauri/icons/henry.w@example.net is a 256×256 PNG — a scrubbing artifact from
128x128@2x.png. The Tauri bundler infers image format from the file extension, and
.net is not one.

Why it survived this long

CLAUDE.md documented it, and got it wrong:

Known latent bug: … an icon named icons/henry.w@example.net — a scrubbing
artifact from 128x128@2x.png. Harmless today (file and reference agree) but wrong.

The references did agree. tauri.conf.json pointed at a file that existed. Every check
you can perform by reading passed — which is exactly why it stayed on the "latent,
cosmetic" list across two releases instead of being fixed.

It was never harmless. It was a hard build failure standing between this repo and its
first binary, and the only way to discover that was to run the build.

Generalisable: "the references agree" is not "it works." The consistency was
checkable by reading; the format inference was not. CLAUDE.md now says so, with the
claim corrected in place rather than quietly deleted.

The fix

Rename the file and update the config together — the only way to change it without
breaking the reference:

src-tauri/icons/henry.w@example.net  ->  src-tauri/icons/128x128@2x.png

Verification — beyond "it compiled"

Check Result
npm run build:desktop && npm run tauri:build ✅ succeeds
ForgeNotes.app 5.6 MB
ForgeNotes_0.3.0_aarch64.dmg 3.0 MB, arm64
Embedded icon Contents/Resources/ForgeNotes.icns present
App launches and quits cleanly
nm for mcp_bridge symbols in the release binary 0

That last row matters on its own. The MCP bridge is gated behind a cargo feature
specifically so release builds never contain it, and until now that was an untested
claim — there was no release build to test it against. It holds.

Still not done

  • Unsigned and un-notarised. The .dmg will hit Gatekeeper on any machine but this
    one. Signing needs an Apple Developer identity and is a separate decision.
  • arm64 only. No universal binary.
  • Tauri warns the bundle identifier com.forgenotes.app ends in .app, which
    collides with the macOS bundle extension. Left alone deliberately: changing an
    identifier moves the app's data directory, so it is the user's call, not a drive-by.
  • Binaries are not attached to a release here. The fix post-dates the v0.3.0 tag,
    so attaching this build to it would misrepresent what that tag contains.

Closes 01KZ3Z46SDWDGVD3CFZ0Z1S9FB.

🤖 Generated with Claude Code

https://claude.ai/code/session_012o4dVLL1GeMETrCbD8Hgc2

…3CFZ0Z1S9FB]

`cargo tauri build` has never succeeded in this repo, and this is why:

    failed to bundle project: Failed to create app icon:
    `The image format could not be determined`

`src-tauri/icons/henry.w@example.net` is a 256x256 PNG — a scrubbing artifact
from `128x128@2x.png`. CLAUDE.md called it "harmless today (file and reference
agree)". The references did agree, and it still broke the build: the bundler
infers image format from the extension, and `.net` is not one.

Renamed the file and updated tauri.conf.json together, which is the only way to
change it. Build now produces both artifacts:

    ForgeNotes.app                    5.6M
    ForgeNotes_0.3.0_aarch64.dmg      3.0M   arm64

Verified beyond "it compiled": the app launches and quits cleanly, the icns is
embedded, and `nm` finds zero mcp_bridge symbols in the release binary — which
is the first actual proof that the cargo-feature gating keeps the debug bridge
out of a shipped build.

CLAUDE.md's claim corrected rather than deleted. The generalisable form is worth
keeping: "the references agree" is not "it works". Consistency was checkable by
reading; format inference was not.
@RichardHightower
RichardHightower merged commit 9e76687 into main Aug 3, 2026
8 checks passed
@RichardHightower
RichardHightower deleted the build/desktop-v0.3.0 branch August 3, 2026 14:12
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