Replay 0.9.2
Download
Replay-0.9.2.zip — unzip it and drag Replay.app to Applications.
macOS will refuse to open it the first time. Here is why, and what to do.
Replay has no Apple Developer ID yet, so macOS marks it as unverified and shows
"Apple could not verify Replay is free of malware" — offering only Move to
Trash or Cancel. That message is about a missing certificate, not about
anything found in the app. Every unsigned app gets it.
To open it:
- Try to open Replay once and dismiss the warning.
- Go to System Settings ▸ Privacy & Security, scroll down, click Open Anyway.
- Confirm. It opens normally from then on.
Or one line in a terminal, which does the same thing:
xattr -dr com.apple.quarantine /Applications/Replay.appRight-click ▸ Open does not work. That bypass existed for years and Apple
removed it in macOS 15. It is still the advice in most projects' READMEs.
Or skip all of that
Homebrew compiles it on your machine, so it is never downloaded, never quarantined,
and opens with no warning at all:
brew tap nurkamol/tap
brew install nurkamol/tap/replay-app # the application
brew install nurkamol/tap/replay # the command-line readerA signed, notarised disk image — no warnings, nothing to click through — appears
here the day there is a certificate. The workflow that builds it is already written.
0.9.1 shipped an app that would not open. This is that fixed, and the check that should
have caught it.
Fixed
- The app died on launch if it could not find its strings catalogue.
Bundle.modulecalls
fatalErrorwhen the bundle is missing, andLocreached for it on a path that runs during
startup. Every other path inLocdegrades to English by design — a missing.lproj, an
unreadable table, a key nobody has translated — and missing the whole catalogue should
degrade the same way rather than take the app down. It resolves the bundle by hand now and
gives up quietly. - How it got through, because that is the useful part. The resource bundle has two shapes:
SwiftPM's native build produces a flat one withInfo.plistat the root, Xcode's produces
a deep one withContents/Resources/. Every local build was deep and worked; the release
was built flat and did not. No test sees either — they run where the bundle is always found.
951 contract checks, 115 behaviour cases and four audits all passed on a build nobody could
open. - The release workflow now runs the app it is about to publish and fails if it exits on
its own. The only way to catch this class of failure is to launch the artefact.