Elsat Cherry-Picks Report - 2026-02-02 ====================================== Branch: next (based on master) Total commits cherry-picked: 14 Summary ------- Cherry-picked small bug fixes from elsat's (alltheseas) branches that were recently rebased (1 commit behind master) and had Closes: PR references. Commits Added to next Branch ---------------------------- 1. cbc1b5576fb7 - ndb: reduce mapsize for app extensions to prevent crashes Source: elsat/fix/extension-mapsize-crash Closes: #3560 Changelog-Fixed: Fixed notification service extension crashes caused by excessive memory allocation 2. 984e549a1bb0 - Fix crash when loading nevent via URL or search Source: elsat/fix/nevent-crash-3544 Closes: #3544 Changelog-Fixed: Fixed crash when navigating to a post from search or URL 3. 6144c0be4283 - ndb: replace force unwraps with safe optionals in NdbTxn Source: elsat/fix/ndbtxn-force-unwraps Changelog-Fixed: Fixed potential crash in NdbTxn when thread-local storage is incomplete 4. 0f2f8ddfe9ab - Fix Lightning invoice parsing for notes with multiple invoices Source: elsat/fix-invoice-rendering Closes: #3456, #3151 Changelog-Fixed: Fixed Lightning invoice not rendering in notes 5. bb005b238f10 - Simplify Swift invoice handling with non-optional return types Source: elsat/fix-invoice-rendering 6. aec6ceaadac6 - Fixes temporary mute. Adds temp mute indicator in muted items view. Source: elsat/feature/fix-temp-mute Closes: #1452 Changelog-Fixed: Fixed temporary muting not working Changelog-Added: Added time remaining indicator for temporary mutes 7. f00584a17678 - Fix case-insensitive word matching and add MuteItemRow.swift to project Source: elsat/feature/fix-temp-mute 8. 5a82cf3c38e6 - ndb: copy profile buffer to prevent use-after-free Source: elsat/fix/yjw-use-after-free Closes: #3560 9. 81d6f8ceccd9 - ndb: add test for profile buffer ownership Source: elsat/fix/yjw-use-after-free 10. 683168787cf6 - Fix Kingfisher cache clearing Source: elsat/fix-kingfisher-cache-clear 11. 2f687a4517bf - Ensure clear cache wipes shared caches and temp files Source: elsat/fix-kingfisher-cache-clear Closes: #2861 Changelog-Fixed: Fixed cache clearing not properly wiping all cached data 12. eec67798daf7 - Add modal overlay during cache clearing to prevent race conditions Source: elsat/fix-kingfisher-cache-clear Changelog-Changed: Show progress overlay during cache clearing to prevent UI freezes 13. 93ed2e53ce3c - Fix Kingfisher cache swap race condition Source: elsat/fix-kingfisher-cache-clear Closes: #3567 14. 53a0ec3b47d4 - Fix ByteCountFormatter thread safety in cache manager Source: elsat/fix-kingfisher-cache-clear Remaining Candidates for Future Integration ------------------------------------------- Small fixes (cherry-pick candidates): - elsat/mute-improvements (2 commits) - More mute UX improvements, Closes #3166 - elsat/nip57-lnurl-callback (5 commits) - Zap retry + toast notifications, Closes #3533 - elsat/fix/readonly-ndb-no-threads (6 new commits) - NDB readonly safety improvements Larger features (merge candidates): - elsat/relay-hints (13 commits, 1 behind master) - NIP relay hints support, Closes #1147 - elsat/nip30-custom-emoji (6 commits, 1 behind master) - Custom emoji support, Closes #3524 - elsat/pr-3523 (6 commits) - Custom emoji reactions - elsat/nip25-custom-emoji-reactions (24 commits) - Extended emoji reactions Issues Closed by These Changes ------------------------------ - #3560 - Extension mapsize crash - #3544 - nevent crash via URL/search - #3456 - Lightning invoice rendering - #3151 - Lightning invoice rendering - #1452 - Temporary muting not working - #2861 - Cache clearing not wiping all data - #3567 - Kingfisher cache race condition Conflicts Resolved ------------------ 1. nostrdb/Test/NdbTests.swift - Merged both extension mode tests and use-after-free tests 2. damus/Shared/Media/ImageCacheMigrations.swift - Used elsat's fallback logging approach