Skip to content

Readpaw 0.1.1

Choose a tag to compare

@moerdowo moerdowo released this 13 May 10:32
· 27 commits to main since this release

Hotfix for 0.1.0.

What was broken in 0.1.0

A packaged Readpaw.app from the DMG would launch and immediately SIGTRAP (EXC_BREAKPOINT) before any window appeared. Two compounding causes:

  • The SwiftPM-synthesized Bundle.module initializer calls fatalError when its resource bundle isn't on disk where it expects. Depending on quarantine state, this could trap the process on first reference.
  • NSApplication.shared.setActivationPolicy(.regular) was being called from inside App.init, which races with SwiftUI's own application-startup wiring when launched as a .app bundle.

Fix

  • USDZView no longer touches Bundle.module. It looks for the bundled USDZ via Bundle.main directly (Contents/Resources/Color_orb.usdz), with a fallback to the SPM bundle path, and gracefully returns nil if nothing's found — so the onboarding screen will render without the 3D model instead of crashing the app.
  • build-app.sh now also copies resources flat into the .app's Contents/Resources/, so Bundle.main finds everything without the SPM bundle.
  • setActivationPolicy(.regular) is now only called when launched as a plain executable (e.g. swift run) — guarded by Bundle.main.bundleIdentifier == nil. A .app launch uses the activation policy NSApplicationMain already set from Info.plist.

Verified by reproducing the user-install flow: dragging the .app out of the DMG, applying com.apple.quarantine recursively to every file inside, then open-ing the app. It now launches cleanly.

Install

Same flow as 0.1.0:

xattr -dr com.apple.quarantine ~/Downloads/Readpaw-0.1.1.dmg

Then double-click the DMG, drag Readpaw to Applications, and:

xattr -dr com.apple.quarantine /Applications/Readpaw.app

…before launching from Spotlight / Dock. The DMG is ad-hoc signed but not Apple-notarised, so the xattr step is required to convince Gatekeeper to let it run.

Full install / Gatekeeper guidance is on the v0.1.0 release page and in the README.

System requirements

  • macOS 15.0 (Sequoia) or later
  • Apple Silicon (arm64)