Skip to content

v0.1.41

Choose a tag to compare

@hadefication hadefication released this 27 Aug 01:37
· 9 commits to main since this release

If Zetty won't launch after updating, reinstall from the DMG

A small number of installs came out of an earlier update with an incomplete
app bundle. They fail at launch with a macOS crash dialog naming
Library not loaded: @rpath/ZettyGhostty.framework/… — the app never
reaches its own code, so "Check for Updates…" can't reach you and this
release can't repair it on its own. The zetty CLI shares that binary, so it
fails the same way.

Download the DMG below and drag Zetty into Applications, replacing the
existing copy
, then clear the quarantine flag:

xattr -d com.apple.quarantine /Applications/zetty.app

Nothing of yours is inside the app bundle — projects, tabs, splits, settings
and preserved zmx sessions all live elsewhere and come back on first launch.
To check a copy without launching it:

test -f /Applications/zetty.app/Contents/Frameworks/ZettyGhostty.framework/Versions/A/ZettyGhostty \
  && echo OK || echo "BROKEN — reinstall from the DMG"

Updates keep your working copy until the new one is verified

This release fixes the bug behind the notice above.

Installing an update replaces Zetty with itself, which a running app can't do —
so Zetty hands the swap to a small helper that waits for it to quit. That helper
used to delete the installed app and then copy the new one into place. If
anything interrupted it in between — a restart, a full disk, a killed process —
you were left with whatever the copy had managed to write. A bundle missing even
one file won't launch, and there's no way back from inside an app that can't
start.

The swap is now staged:

  • The new bundle is checked before the installed one is touched. An
    incomplete download never gets the chance to overwrite a working app.
  • Your current version is moved aside, not deleted, and only removed once
    the new copy is verified in place.
  • A failed copy is rolled back — the previous version is restored and
    relaunched, so an interrupted update leaves you with a working Zetty rather
    than nothing.
  • Zetty relaunches on every path, including the ones that give up.

The same completeness check now runs while Zetty is still open, right after the
disk image is unpacked, so a bad download surfaces as an error message instead
of a silent rollback you'd never see.