[ soapbox-pub/ditto ] Merge branch 'fix/blobbi-progression-state-separation' into 'main'
Separate progression state from activity state to prevent evolution reset
Closes #238
See merge request soapbox-pub/ditto!192
[ chebizarro/nostrc ] fix: guard UNUserNotificationCenter behind bundle identifier check
UNUserNotificationCenter throws NSInternalInconsistencyException
("bundleProxyForCurrentProcess is nil") when the binary runs outside a
.app bundle. The exception fires inside dispatch_once so @try/@catch
cannot intercept it. Instead, check [[NSBundle mainBundle] bundleIdentifier]
before touching the API — nil means no bundle, so skip notifications
entirely and set delegate = NULL so all downstream calls no-op.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
[ soapbox-pub/ditto ] Harden against malformed untrusted data that crashes pages
- ExternalContentPage: new URL() on non-URL NIP-73 identifiers (isbn:,
iso3166:) threw TypeError crashing the page; now URL is only created
for url-type content and #-prefixed strings are used for other types
- ExternalContentPage & RelayPage: decodeURIComponent on malformed
percent-encoded URL params threw URIError; now wrapped in try/catch
- useMastodonPost: new URL() on invalid URLs inside queryFn now returns
null instead of letting the error propagate
- colorUtils/themeEvent: malformed hex color values from theme events