0d48221476b2c3a31005f8fa6eaff6f95dfd398f
Encrypted settings synced via NIP-78 were parsed with a bare JSON.parse() and cast with 'as EncryptedSettings', allowing invalid data (e.g. theme as an object instead of a string) to pass through unchecked and crash the UI when applied to classList.add(). Now both useEncryptedSettings and useInitialSync validate decrypted JSON with a shared EncryptedSettingsSchema, gracefully dropping invalid fields instead of propagating them.
Description
Languages
TypeScript
95.7%
Java
1.5%
JavaScript
0.9%
Swift
0.9%
CSS
0.5%
Other
0.4%