Fix
.zip casks were installed without the executable bit, because std.zip does not preserve Unix file modes. This broke:
binarycasks (e.g.ngrok) βpermission deniedwhen run..appcasks distributed as.zipβ the bundle's Mach-O executable was non-runnable, so the app wouldn't launch.
metalbrew now restores the executable bit at install time: binary artifacts are placed executable, and an app bundle's Contents/MacOS/* is made executable after the bundle is copied. .dmg and .tar.gz casks were unaffected (their modes were already preserved) and behave the same.
The end-to-end CI now installs real casks across every no-sudo path (.zip+app, .dmg+app, .zip+binary) and asserts an executable survives in each β plus runs the installed ngrok binary.
Upgrade from v0.2.0 recommended for anyone using metalbrew cask.