Amethyst

com.vitorpamplona.amethyst
by Amethyst amethyst@vitorpamplona.com

The all-in-one Nostr client

A privacy-focused Nostr client for Android. Built-in TOR support, the most configurable relay system, encrypted messaging, zaps, marketplaces, live streams and complete data sovereignty.

First release: Sep 2, 2025, 28 total releases.

Most recent release: Sep 17, 2026.

Website Repo

Appears in 49 app stacks.

303,900 sats / 98 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 17, 2026 1.16.0
    ## What's Changed * Fix single-flight guarantee for fast signers in BlossomReadAuthTokenProvider by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4100 * chore: sync geode Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4102 * chore: sync amy Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4103 * chore: sync winget manifests to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4104 * chore: sync amethyst-nostr cask to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4105 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4101 * fix(blossom): re-check the token cache after winning the in-flight slot by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4108 * test: run relay-backed tests against geode; fix the relay bugs that surfaced by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4109 * fix: clear every compiler, Gradle and mechanical lint warning, and two things the sweep turned up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4110
    More…
    * BOLT12 offers in the profile payment rail and zap picker, with BOLT11 fallback on refused offers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4112 * test(commons): make the vault strict-lookup test pass off macOS by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4115 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4107 * fix(amethyst): use https in preview data and image-URL placeholders by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4117 * Remove unused Guardian Project Maven repository by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4118 * fix(media): stop a no-imeta GIF rendering as an invisible note while it loads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4114 * fix(relay): honest connected-relay count by finishing the WebSocket close handshake by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4113 * Split commons into headless + commonsUI; fix 34 bugs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4111 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4119 * Update Arti to 2.6.0 and jni to 0.22, pin and enforce the NDK revision by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4120 * bump LightCompressor-enhanced to 2.2.3 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4123 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4124 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4125 * test(nwc): pin refusal rendering and the in-flight REQ filter hold by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4128 * fix(blossom): send the auth token as standard padded Base64 again by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4127 * feat(wallet): open the zapped note from NWC wallet history by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4126 * feat: My Fitness — a personal training dashboard, to bring Health Connect inside an approved use case by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4129 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4130 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.2...v1.16.0 ## What's Changed * Fix single-flight guarantee for fast signers in BlossomReadAuthTokenProvider by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4100 * chore: sync geode Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4102 * chore: sync amy Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4103 * chore: sync winget manifests to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4104 * chore: sync amethyst-nostr cask to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4105 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4101 * fix(blossom): re-check the token cache after winning the in-flight slot by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4108 * test: run relay-backed tests against geode; fix the relay bugs that surfaced by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4109 * fix: clear every compiler, Gradle and mechanical lint warning, and two things the sweep turned up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4110 * BOLT12 offers in the profile payment rail and zap picker, with BOLT11 fallback on refused offers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4112 * test(commons): make the vault strict-lookup test pass off macOS by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4115 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4107 * fix(amethyst): use https in preview data and image-URL placeholders by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4117 * Remove unused Guardian Project Maven repository by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4118 * fix(media): stop a no-imeta GIF rendering as an invisible note while it loads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4114 * fix(relay): honest connected-relay count by finishing the WebSocket close handshake by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4113 * Split commons into headless + commonsUI; fix 34 bugs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4111 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4119 * Update Arti to 2.6.0 and jni to 0.22, pin and enforce the NDK revision by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4120 * bump LightCompressor-enhanced to 2.2.3 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4123 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4124 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4125 * test(nwc): pin refusal rendering and the in-flight REQ filter hold by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4128 * fix(blossom): send the auth token as standard padded Base64 again by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4127 * feat(wallet): open the zapped note from NWC wallet history by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4126 * feat: My Fitness — a personal training dashboard, to bring Health Connect inside an approved use case by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4129 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4130 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.2...v1.16.0 ## What's Changed * Fix single-flight guarantee for fast signers in BlossomReadAuthTokenProvider by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4100 * chore: sync geode Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4102 * chore: sync amy Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4103 * chore: sync winget manifests to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4104 * chore: sync amethyst-nostr cask to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4105 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4101 * fix(blossom): re-check the token cache after winning the in-flight slot by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4108 * test: run relay-backed tests against geode; fix the relay bugs that surfaced by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4109 * fix: clear every compiler, Gradle and mechanical lint warning, and two things the sweep turned up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4110 * BOLT12 offers in the profile payment rail and zap picker, with BOLT11 fallback on refused offers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4112 * test(commons): make the vault strict-lookup test pass off macOS by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4115 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4107 * fix(amethyst): use https in preview data and image-URL placeholders by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4117 * Remove unused Guardian Project Maven repository by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4118 * fix(media): stop a no-imeta GIF rendering as an invisible note while it loads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4114 * fix(relay): honest connected-relay count by finishing the WebSocket close handshake by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4113 * Split commons into headless + commonsUI; fix 34 bugs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4111 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4119 * Update Arti to 2.6.0 and jni to 0.22, pin and enforce the NDK revision by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4120 * bump LightCompressor-enhanced to 2.2.3 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4123 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4124 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4125 * test(nwc): pin refusal rendering and the in-flight REQ filter hold by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4128 * fix(blossom): send the auth token as standard padded Base64 again by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4127 * feat(wallet): open the zapped note from NWC wallet history by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4126 * feat: My Fitness — a personal training dashboard, to bring Health Connect inside an approved use case by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4129 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4130 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.2...v1.16.0 ## What's Changed * Fix single-flight guarantee for fast signers in BlossomReadAuthTokenProvider by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4100 * chore: sync geode Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4102 * chore: sync amy Homebrew formula to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4103 * chore: sync winget manifests to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4104 * chore: sync amethyst-nostr cask to v1.15.2 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4105 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4101 * fix(blossom): re-check the token cache after winning the in-flight slot by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4108 * test: run relay-backed tests against geode; fix the relay bugs that surfaced by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4109 * fix: clear every compiler, Gradle and mechanical lint warning, and two things the sweep turned up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4110 * BOLT12 offers in the profile payment rail and zap picker, with BOLT11 fallback on refused offers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4112 * test(commons): make the vault strict-lookup test pass off macOS by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4115 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4107 * fix(amethyst): use https in preview data and image-URL placeholders by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4117 * Remove unused Guardian Project Maven repository by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4118 * fix(media): stop a no-imeta GIF rendering as an invisible note while it loads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4114 * fix(relay): honest connected-relay count by finishing the WebSocket close handshake by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4113 * Split commons into headless + commonsUI; fix 34 bugs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4111 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4119 * Update Arti to 2.6.0 and jni to 0.22, pin and enforce the NDK revision by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4120 * bump LightCompressor-enhanced to 2.2.3 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4123 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4124 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4125 * test(nwc): pin refusal rendering and the in-flight REQ filter hold by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4128 * fix(blossom): send the auth token as standard padded Base64 again by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4127 * feat(wallet): open the zapped note from NWC wallet history by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4126 * feat: My Fitness — a personal training dashboard, to bring Health Connect inside an approved use case by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4129 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4130 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.2...v1.16.0
  • Sep 12, 2026 1.15.2
    ## What's Changed * chore: sync geode Homebrew formula to v1.15.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4087 * chore: sync amy Homebrew formula to v1.15.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4088 * chore: sync amethyst-nostr cask to v1.15.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4090 * chore: sync winget manifests to v1.15.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4089 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4091 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4094 * fix(media): require a dot before a file extension, and play a player page's og:audio/og:video by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4092 * Health Connect: add rationale screen and improve source name caching by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4096 * Split NIP-22 root-scope replies into separate engagement filters by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4095
    More…
    * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4097 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4098 * chore(release): bump to 1.15.2 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4099 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.1...v1.15.2
  • Sep 11, 2026 1.15.1
    ## What's Changed * chore(l10n): add missing cs, de, sv, pt-BR translations by @davotoula in https://github.com/vitorpamplona/amethyst/pull/4083 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4082 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4084 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/4085 * chore(release): bump to 1.15.1, unblocking the AAB on AGP 9.4.0 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/4086 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.15.0...v1.15.1
  • Aug 22, 2026 1.14.0
    ## What's Changed * Add NIP-84 highlights support: composer, feed, and share intent by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3793 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3794 * Desktop: profile screen parity — tabs, header actions, banner/bio, zaps by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3795 * Work around a fatal media3 crash on Low-Latency HLS (LL-HLS), eg NoGoodRadio by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3796 * Harden workflow-ship.sh and pin it with a regression harness by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3797 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3799 * chore: sync geode Homebrew formula to v1.13.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3802 * chore: sync amy Homebrew formula to v1.13.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3801 * Add Pictures, Videos, Shorts, and Torrents feed types by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3803
    More…
    * Address buzz CLI review findings; pin the wrapper copies and the amy arg surface by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3798 * chore: sync winget manifests to v1.13.1 by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3805 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3806 * Refactor chat bubble swipe gesture to use lower-level pointer APIs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3807 * Fix flaky PeerUniStreamDrainTest by confining drainer to producer's event loop by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3809 * Make draft posts in thread view open edit screen on tap by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3811 * NIP-29: Channel deletion, archival, and Buzz community UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3812 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3808 * Consolidate NIP-71 video event types under shared interface by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3813 * Add Nostr badge watermark to notification icons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3815 * Remove facepile from channel rows, simplify layout by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3814 * feat(nip73): show rich previews for external-content comments by @dmnyc in https://github.com/vitorpamplona/amethyst/pull/3810 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3816 * Confine Blossom cache probe and resolver to IO dispatcher by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3818 * perf(nip73): prefetch external-content preview URLs by @dmnyc in https://github.com/vitorpamplona/amethyst/pull/3820 * Extract RelayNameChip to shared component and add it to relay group message headers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3822 * Fix Tor→clearnet fallback banner logic with live socket state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3823 * Redesign channel invite cards as feed rows with metadata-only observers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3821 * fix: quiet the default log, add a boot narrative, and stop pinning Concord entities across a Refounding by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3819 * Handle blank and malformed metadata gracefully by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3824 * Add media share targets for Pictures, Shorts, and Video feeds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3825 * Fix metadata JSON parsing to use lenient parser consistently by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3828 * Listen only while foregrounded, and fix the meter that measures it by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3827 * Fix ServiceType parsing to handle edge cases safely by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3830 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3826 * Fix SharedKeyCache hash collision vulnerability & add constant-time MAC comparison by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3833 * feat(relays): explain why every subscription exists, and fix what that exposed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3832 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3831 * chore(actions): bump the actions group with 5 updates by @dependabot[bot] in https://github.com/vitorpamplona/amethyst/pull/3834 * Add optimized decode64/decode128 and encode64/encode128 to Hex by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3837 * NIP-66: measure relays from the traffic a client already makes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3836 * Fix InProcessWebSocket race condition in connect-time AUTH delivery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3838 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3839 * Let a monitor publish what it learned without dialling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3841 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3840 * Add StoreQueryContext for observer-relative ranking in stores by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3842 * rtt-open is the transport's handshake, not our own queueing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3843 * refactor: decouple LocalCache and Account god classes (behavior-preserving) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3844 * Test: Type ExplainedFilter.copy() result as base Filter by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3845 * fix: request follower-count provider's 30382 cards in UserCardsSubAssembler by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3846 * Stop COUNT from inheriting the default page size by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3848 * Fix fetchAllPages cropping streaming pages; normalize accessory timeouts to idle windows by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3850 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3849 * fix(relay): stripe the subscription-state lock per relay to end an ANR convoy by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3851 * docs: Add three store-implementer skills (event-store-semantics, nip85, searchable-events) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3853 * nip50Search: search grammar + weighted field extraction; nip01Core: shared store-semantics rules by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3854 * quartz/geode: sync accessories from vespa-relay, InsertOutcome.Failed contract, mirror resume coverage by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3855 * fix(relay): compare every filter in FiltersChanged, not just the first by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3856 * NIP-66 relay monitoring: streaming probes, read/write checks, URL fixes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3857 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3852 * Support IPv6 overlay relays (Yggdrasil) with RFC 5952 canonicalization by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3859 * Fix URL detection to exclude quotes from parsed URLs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3860 * SyncCoverage: one band interval cannot speak for several kinds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3862 * Replace BackHandler with KeyboardAwareBackHandler in posting screens by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3864 * Suspend the incoming-message chain down to SubscriptionListener.onEvent by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3863 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3861 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3867 * Make the left drawer configurable by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3866 * fix(media): stop rendering non-media NIP-94 files as video by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3868 * fix(ime): settle the keyboard in Nav so every screen stops stranding imePadding by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3870 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3869 * negentropy: size reconcile windows from the caller's index, and state the relay's cap by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3871 * Stop the outbox getting slower with every publish by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3872 * Repair bare-subtype imeta MIME types so images can be shared by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3874 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3875 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3876 * Quartz: give SyncCoverage's persistence a typed band key by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3877 * Rename parameters for clarity and consistency by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3878 * feat(resourceusage): measure why relay data is spent, not just how much by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3879 * feat(concord): staff-held control_root write-gates the Control Plane (CORD-02 §2) by @alexgleason in https://github.com/vitorpamplona/amethyst/pull/3873 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3880 * fix(quartz): update NIP-66 relay records instead of rebuilding them by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3882 * fix(quartz): merge probe verdicts into the record they replace by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3883 * Let a drained paged walk close the sync leg below it by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3884 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3881 * fix(concord): close the soft-ban authority holes (audit A1–A4, B1, B2, B4) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3885 * fix: stop reposts from being bundled with the always-on service notification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3886 * Align napplet host with current NIP-5D and NAPs by @dskvr in https://github.com/vitorpamplona/amethyst/pull/3858 * quartz: make a paged walk terminate — floor the cursor at 0, stop when a relay ignores it by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3889 * feat(concord): close the CORD-05/06 invite lifecycle — Invite List, re-mint on Refounding, revocation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3888 * negentropy: let a caller decline an id before the download REQ by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3892 * feat(desktop): per-visible metadata + reaction loading via shared finders in commons by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3890 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3891 * fix(nav): switching between two pinned web-app tabs crashed onto the wrong one by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3894 * fix(embed): bring the keyboard back on a tap in an already-focused field by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3895 * Declare pointer hints on Report, ChatMessage, Classifieds and ChannelCreate events by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3896 * Add "Copy Original/Translated" chooser for translated notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3897 * feat(polls): extended poll results page with voter list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3898 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3893 * Redesign relay auth permissions UI and decision flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3899 * Optimize locale application to skip redundant system calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3901 * Fix push registration to fail loudly on HTTP errors by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3900 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3902 * Add bulk audience picker for short-note composer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3903 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3904 * Auth: recognize NIP-29 groups and Concord communities as joined venues by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3906 * perf: stop blocking coroutine workers on synchronous OkHttp calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3907 * NIP-42: wait for auth challenge resolution instead of timing out by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3905 * Remove maxTotalMs ceiling from fetchAll/fetchAllWithHooks by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3908 * Discoverable key backup: guided first-run save-your-keys + Settings backup (Desktop) + Android nudge by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3909 * NIP-13: refresh created_at while mining, analyze GPU path by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3911 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3910 * feat: translate missing strings into cs, de-DE, sv-SE and pt-BR by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3912 * Fix PDF preview layout stability and aspect ratio handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3913 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3914 * perf: scan note content by literal instead of driving the regex engine by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3915 * i18n fixes by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3916 * perf: AOT-compile the relay ingest path with a baseline profile by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3918 * perf: drop the S (startup) flag from the hand-authored baseline profile by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3920 * build: add a baseline profile generator (:baselineprofile) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3919 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3917 * feat(desktop): searchable settings accordion by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3922 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3924 * perf: bound the dedup decoder cache in size and in time by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3926 * fix: blank parent card above a top-level community post by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3923 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3925 * Bump dependencies and Gradle to latest stable versions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3927 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3928 * feat: disable the automatic high resource usage prompt by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3930 * feat: default new accounts to always AUTH with relays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3931 * Handle IME insets in full-screen napplet hosts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3932 * Optimize PoWMiner hot loop for Android runtime by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3935 * fix: reclaim memory under heap pressure and stop leaking sandbox Activities by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3936 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3929 * fix: honour "always log in" for relays the account does not use itself by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3937 * Fix Cashu wallet balance truncation via proof backfill and history paging by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3941 * Mute public chats by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3939 * feat: demote relay/ingest worker threads below the UI thread (~40% faster cold-start first paint) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3942 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3943 * perf: scan hashtags and #[n] references without ICU by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3945 * perf: scan NIP-19 entities without ICU to stop the cold-start native-heap OOM by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3944 * fix: cache the painter on its first miss in painterRes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3946 * perf: memoize guestbook envelope opens so the Concord fold stops re-decrypting the buffer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3947 * Fix Buzz channel invite flickering by deriving from cache by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3940 * fix: give the invite roster line's member count its unit by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3950 * feat: keep invite replies, reactions and zaps inside the relay that sent them by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3951 * Make the "reading someone I follow" relay-auth toggle reachable, and scope Buzz per-account state to the account by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3952 * fix: collect buzzWorkspaces instead of reading .value in composition by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3956 * Add session grants for relay auth to survive reconnects by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3955 * ci: shrink MirrorSyncThroughputTest's corpus to 100k on CI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3957 * feat(desktop): enrich the DM chat composer + message UX by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3953 * Fix registry leak in subscription lifecycle by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3958 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3948 * Add Trusted Lists (kinds 30392-30395) implementation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3959 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3960 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3962 * Optimize MetaTagsParser: fix quote tracking in comments/scripts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3963 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3964 * Upgrade dependencies: Firebase, Jackson, OkHttp, Gradle, and others by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3965 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3966 * chore(release): v1.14.0 changelog and version bump by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3967 ## New Contributors * @alexgleason made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3873 * @dskvr made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3858 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.13.1...v1.14.0
  • Jul 29, 2026 1.13.1
    ## What's Changed * Refactor parameter names for clarity and update Material3 API by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3763 * Fix keyboard state tracking and back handler races by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3765 * Fix duplicate app entries in Discover Apps grid by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3766 * Implement CORD-02 §9 community dissolution seal by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3767 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3764 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3770 * Remove unnecessary FontWeight.Bold styling from Text components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3771 * Add long-press menu to relay group & Concord channels in Messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3772 * Simplify ConcordAuthorFacepile to use ClickableUserPicture by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3774
    More…
    * Relax resource usage alert thresholds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3775 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3773 * Remove unused buzz_dm_hide string resource by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3776 * Fix back arrow visibility during predictive back-swipe animations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3778 * Add delete group/channel functionality (kind-9008) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3779 * Fix bogus URL references from scheme-less prose tokens by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3781 * Fix NoteListMatchingFilter to prevent duplicate entries under concurrent updates by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3777 * Trim highlight context to bounded window, collapse whitespace by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3783 * fix(buzz): make the Messages toggle read the list it claims to change by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3782 * fix(concord): open a community by tapping its name, not just its avatar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3784 * fix(buzz): drop the grey slab behind the community Channels section by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3785 * style: import the symbols the two merged nostr proposals referenced inline by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3786 * Add CONTINENT geohash level for whole-globe location channels by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3787 * Support NIP-29 group relays in first-party AUTH logic by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3788 * Add BUD-01 read-auth retry for gated Blossom blob downloads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3789 * Add per-content-type toggles for Home feed event kinds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3790 * Pass comment tags to DisplayHighlight for proper rendering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3791 * Fix highlight author detection and improve source display by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3792 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.13.0...v1.13.1
  • Jul 28, 2026 1.13.0
    ## What's Changed * Keep balanced closing delimiters in URLs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3299 * Seed translator npub placeholders by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3300 * Keep NIP-82 release versions live via LocalCache observer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3301 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3303 * Seed translator npub placeholders by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3302 * Consolidate Crowdin sync and translator seed into single PR by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3305 * NIP-22: Reply to Amethyst threads as kind 1111 Comments by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3306 * feat(notifications): render NIP-30 custom emoji reactions as avatar badge by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3307 * Auto-dismiss notifications when events are read in-app by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3310
    More…
    * i18n: localize Marmot group chat strings and remove unused resources by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3308 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3311 * Remove unused NIP-31 alt tag surrogate code and clean up imports by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3309 * fix: surface reply, not root, for multi-e-tag reactions in Android tray by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3318 * feat: add Notification setting to show or hide Messages on the Notification tab by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3320 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3319 * feat: add a search box to the App Recommendations screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3322 * Extract share options to reusable bottom sheet by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3312 * Notify on public chat replies without p-tags by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3314 * Add search and follow-list filtering to app recommendations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3313 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3321 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3324 * Add POWR / NIP-101e strength workout interop (read-only) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3323 * feat(feeds): prefetch media + pre-parse text ahead of the viewport by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3325 * Refactor command dispatch: extract Router helper, remove Commands.kt by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3326 * Fix disappearing bar settle logic to prevent blank bands on partial reveals by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3327 * Add comprehensive CLI command suite and Cashu wallet support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3333 * MoqLiteSession: send Ended announce on publisher close race by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3334 * Add more options button to software app note rendering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3336 * Show blocked/muted user indicator on profile tabs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3337 * Implement NIP-5A/5D napplet & nsite sandbox host with capability broker by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3339 * fix(build): resolve :nappletHost benchmark variant via matchingFallbacks by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3340 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3335 * Load author relay lists for missing addressable notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3342 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3341 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3343 * fix: render markdown when a heading/list follows a blank line by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3344 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3345 * NIP-46: Add optional client metadata to connect requests by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/3346 * Add full-screen direct-WebView browser and embedded napplet/nSite tabs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3348 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3347 * Fix bottom bar fallback to use default entries instead of empty list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3349 * Browser: add visit history, omnibox suggestions, and favicon capture by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3350 * Implement tiered memory trimming with debug UI and feed size limits by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3352 * Add JavaScript console logging to embedded and full-screen browsers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3353 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3351 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3355 * Fix/note grid layout issues by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3356 * Extract MintPickerItem composable in CashuWalletScreen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3354 * Add favorite toggle to web browser and embedded napplets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3357 * Use hollow gem icon for relay service notification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3358 * Add URL-scoped comment feeds by @LubuSeb in https://github.com/vitorpamplona/amethyst/pull/3315 * Clean up imports: organize and remove unused declarations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3360 * Remove API 30+ requirement from Browser feature by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3361 * Add theme preference support to napplet/browser WebViews by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3359 * Reorganize navigation drawer and settings menu items by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3363 * Fix bottom sheet grabber positioning and add console toggle state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3364 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3362 * Rename web/napplet screens and controllers; introduce HostProfile by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3366 * Extract AddRecommendationSection and WalletTypeCardContent composables by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3365 * Add Onion-Location support for transparent Tor routing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3368 * Shift Cashu icon left and tint orange in nutzap displays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3369 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3367 * Render single zaps/nutzaps as large cards in MultiSetCompose by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3370 * Scale outline gem icon to match filled gem size by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3372 * Render zap receipts as full notes in MultiSetCompose by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3373 * Add and update translations across 50+ locales by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3371 * Fix compiler instruction limit in AccountSettings constructor by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3375 * feat: query zapstore's relay in the global Apps feed and keep its filter specific by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3376 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3374 * Add Git pull request event rendering support (NIP-34) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3377 * Show boosted notes as compact preview in activity cards by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3379 * Embedded text selection: native-parity IME + selection UI + magnifier, and platform-bug fixes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3378 * Auto-save Cashu wallet on mint add/remove, remove manual key picker by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3380 * Redesign service notification icon with network topology by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3382 * Fix draft deletion by holding strong reference to draft notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3383 * fix: delete per-account dir on account removal + sweep orphans at startup by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3385 * Move browser strings to commons for shared localization by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3386 * Show nSite/nApplet icons from bundled blobs in favorites by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3384 * Fix activity card background propagation to embedded notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3387 * Preload favorited nSites/nApplets to avoid "isn't loaded yet" toast by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3388 * Style Git pull request clone URLs with labelMedium typography by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3389 * docs(claude): document the ngit + GitHub PR workflow for agents by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3391 * Add Accrescent APK set build & remove cleartext traffic flag by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3392 * Add Open/Closed filter to Git repo Issues and Patches tabs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3393 * Move UI components to commons module for better code sharing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3394 * Make Arti native library builds reproducible by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3396 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3390 * Move rememberFeedContentPadding to commons.ui.layouts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3398 * refactor: scope account ViewModelStore with Lifecycle 2.11 rememberViewModelStoreOwner by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3399 * Cache favorited nsite/napplet manifests for offline resolution by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3402 * fix(video): show browser-fallback overlay when a decoder silently stalls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3401 * added support for more payment targets by @roguehashrate in https://github.com/vitorpamplona/amethyst/pull/3400 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3403 * fix(perf): unfreeze the cold-start "Loading account" screen in debug builds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3404 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3405 * Add Git Repositories feed screen with community and author filtering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3406 * Align Cashu icon with reaction gallery icons in Nutzap by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3407 * Browser: add Discover section with hardcoded web apps & followed nSites/nApplets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3409 * Remove network routing confirmation dialog from napplet host by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3408 * Add loading progress bar and error logging to napplet/browser by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3410 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3411 * Add customizable accent colors, fonts, and font sizes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3412 * Add surface background color to SearchBar Column by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3414 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3413 * Add Nostr signer permissions & relay auth management UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3395 * Add Cashu wallet find-or-create wizard with cross-relay discovery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3418 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3416 * Add git smart-HTTP browser for NIP-34 repositories by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3415 * Console panel: add visibility toggle, elevation, and state sync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3420 * Fix first-connect dialog suppression to allow retry after cooldown by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3421 * feat(nip89): parse and display app-handler t/i/a/client tags by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3422 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3419 * feat(desktop): Follow Packs (NIP-51 kind 39089) — Discover + follow flow by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3424 * Add "Manage permissions" UI for Connected Apps detail screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3426 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3425 * docs: add per-module plans indexes and master roll-up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3427 * Centralize "Mine" feed filter to shared TopFilter.Mine flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3428 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3429 * feat(desktop): hashtag-spam filter with collapse-with-reveal by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3431 * Rename gzip test corpus to .json.gz to clear Sonar file-encoding warning by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3433 * chore(actions): bump the actions group with 4 updates by @dependabot[bot] in https://github.com/vitorpamplona/amethyst/pull/3430 * Add NIP-77 negentropy sync with streaming and windowing support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3434 * Document Quartz utilities: hex, time, random, hashing, bech32 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3435 * Support Blossom URI scheme for media downloads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3436 * Add pre-push Spotless formatting gate by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3437 * Add OptionalAuthPolicy for NIP-42 without requiring authentication by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3439 * docs: Add NIP-05 identifier resolution guide and update skill by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3442 * Escape raw NUL bytes to fix Sonar encoding warning by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3440 * Add type-safe DSL builder for NIP-11 relay information documents by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3443 * Persist bottom bar defaults as blank sentinel for auto-migration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3444 * Add optional full-text search indexing toggle to SQLiteEventStore by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3445 * Add podcast authoring UI and NIP-XX Podcasting 2.0 support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3441 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3438 * Centralize default search relays into DefaultSearchRelayList by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3446 * Remove elevation from bottom and top sheet surfaces by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3447 * feat(desktop): Privacy lock for Messages column by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3432 * Add compose signature setting to auto-append custom text to posts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3450 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3449 * Implement SearchableEvent interface for NIP-50 search support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3452 * Make Log.sink pluggable for custom logging backends by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3453 * feat: expand the "Let's be reasonable" napplet auto-approve set by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3455 * feat(desktop): notifications redesign — inbox UX, native OS toasts, shared filter by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3457 * Add lock-free concurrent collections and fix UDP socket threading by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3459 * Add production benchmarks and negentropy sync optimizations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3458 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3456 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3460 * Consolidate Czech onto the base values-cs qualifier by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3461 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3463 * Strip NIP-50 search extensions before querying SQLite FTS by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3464 * Prune empty locale files and dead language-picker entries by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3462 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3465 * Add relayBench: comprehensive Nostr relay benchmark suite by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3466 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3467 * Make dedup decode benchmark resilient to CI load variance by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3468 * feat(quartz): NostrServer.ingest — local write path with per-submission verify skip by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3469 * fix(quartz): record REQ state before send in PoolRequests.syncState by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3470 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3471 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3472 * support Birdstar bird detection events (kind 2473) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3473 * Handle unchecked File.delete() return values across all modules by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3474 * Upgrade negentropyKmp to v1.1.1 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3475 * fix: stabilize flaky LocalRelayStoreHydrationTest against GC eviction by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3476 * Repair equals/hashCode contracts in OpenTimestamps ops and VerifyResult by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3477 * perf(relay): geode↔strfry 1M sync — negentropy + store speedups, strfry-parity mirror, benchmark harness by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3478 * Fix negentropy refusal handling to prevent window-split storm by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3480 * feat: add setting to hide the on-chain (Bitcoin) wallet by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3481 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3479 * fix(desktop): sidebar nav replaces detail overlay + guard RelayLatencyTracker.sweep against CME by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3484 * render PS1 memory-card saves over nostr (kind 38192) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3482 * cli: full relay-settings parity for `amy relay` (noun-first, all list kinds) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3485 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3486 * Add efficient hex-to-Long conversion utilities for Nostr IDs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3488 * fix(quartz): fetchAllPages paging correctness + amy drainAllPages + SeenIds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3489 * Clean up empty when branches and remove unnecessary null checks by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3490 * Add logoff command to CLI for account deletion by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3491 * CLI: enable read-only verbs to run without an account by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3493 * Add `amy status` command for cross-account disk overview by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3492 * GrapeRank web-of-trust for amy: sync → score → publish (NIP-85) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3494 * perf(graperank): faster crawl (cap 100→16, dead-discovery shedding, fewer sweep barriers) + relay diagnostics by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3497 * NIP-77 deletion sync: two-pass settle over the reconcile residual by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3498 * Persist SecretTree ratchet positions across MLS group restores by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3499 * feat(desktop): apply the privacy lock to the Wallet column by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3495 * feat(desktop): Web-of-Trust score badges + shared index relays + amy wot verbs by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3483 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3487 * Eliminate null-safety suppressions and unsafe casts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3501 * Fix race condition in fetchFirst when relay sends buffered events at EOSE by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3502 * Adapt memory trimming to Android 14+ trim level changes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3503 * chore: automate Homebrew formula sync for amy CLI + add cask reference by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3505 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3500 * Opt-in local SonarQube analysis via local.properties by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3504 * Add NIP-77 outbox-model refresh for GrapeRank via NegentropyStoreSync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3506 * feat(quartz): add IEventStore.authorsMissingOutbox() anti-join query by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3507 * feat(desktop): NIP-17 DM reliability — AUTH banner, strict inbox resolution, relay hints by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3508 * fix(pictures): show title/caption before reactions row by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3509 * Replace synchronized with Mutex in InMemoryAuthApprovalStore by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3510 * graperank: relay reachability cache (NIP-66), aggregator kind:3 recovery, and outbox-discovery dedup by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3511 * Enforce blocked relays centrally via decorator client by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3512 * Relay Groups: NIP-29 relay-based group chat (Armada interop) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3514 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3515 * Persist login UI state across configuration changes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3517 * Trim message text before tagging in post ViewModels by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3518 * docs: Add APK signature verification instructions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3516 * Update Brainstorm web app icon URL by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3521 * Strip trailing whitespace from rich text parser output by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3522 * NIP-42 relay auth: contextual "why", per-situation trust, and prompts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3520 * Support markdown hashtag links (#tag fragments) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3523 * Fix relay attribution in gift-wrap chains and Marmot messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3524 * Fix DM read state: mark rooms as read when sending messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3525 * Add NIP-13 Proof-of-Work mining queue with persistence and UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3527 * Add NIP-29 relay groups button to relay information screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3526 * Mark DM rooms as read when wraps are mined in background by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3528 * Reduce PoW badge size for better UI balance by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3529 * GrapeRank crawl: connect once, wait once — 38% faster at hop-3; hop-8 31% faster at +15% lists / +47% users by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3513 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3519 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3531 * Parallelize PoW mining with multi-worker nonce search by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3533 * Clarify relay auth descriptions for profile and engagement data by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3534 * fix: don't drop whole kind-0 profiles over one mistyped field by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3535 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3532 * Aggregate Kover coverage (for SonarQube import) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3536 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3537 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3538 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3540 * Remove Kover coverage plugin to fix runner OOM by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3539 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3542 * fix(relay-auth): stop paid relays billing accounts that don't use them (inbox.nostr.wine over-AUTH) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3543 * Clean up Git card styling and fix duplicated subject in content by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3544 * Add AutoReplayLimiter to cap video auto-loops in feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3545 * Replace remove-from-notify with mute/unmute bell toggle by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3546 * fix(ci): serialize :amethyst Kotlin compilations on CI to stop daemon OOMs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3547 * Nickname users via NIP-85 contact cards (encrypted petname + private note, custom emojis) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3548 * Decouple Android notification kinds from Desktop subscription list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3550 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3549 * Add Flatpak bundle support to release CI + Flathub submission by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3554 * Battery: background-usage fixes, 122-relay ping study, and an on-device resource-usage ledger by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3551 * Fix profile banner image scaling from FillWidth to Crop by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3556 * Fix null pointer in AntiSpamFilter when LRU cache evicts duplicates by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3557 * Improve NIP-72 approval event parsing robustness by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3558 * Adaptive large-screen layout: nav rail, permanent drawer, notification panel, reading-column cap by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3553 * Unify note-header markers into a pill / quiet-mark design system by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3559 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3555 * Warn users when relay group relay doesn't advertise NIP-29 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3561 * Refactor GrapeRank into separable pipeline stages with local persistence by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3562 * Surface NIP-29 group replies and likes in notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3563 * Fix NoteHeaderFirstRowDensityPreview to use tryEmit for Flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3564 * Add floating action button to create new public chats by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3565 * Concord: end-to-end-encrypted communities (CORD-01…07) on Android + CLI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3566 * Add MIP-01 v2 group avatar encryption and upload support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3568 * feat(desktop): note scheduling + NIP-37 draft sync (shared scheduling in commons) by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3552 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3567 * feat: style Messages room-type labels as Concord-style pills by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3570 * fix(strictmode): stop CleartextNetworkViolation noise from the Tor SOCKS proxy by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3571 * Replace nullable safe calls with immutable map operations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3572 * Support NIP-92 imeta attachments in chat messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3573 * Replace Messages FAB speed-dial with full-screen conversation chooser by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3575 * Bottom nav: pin individual chats/groups + redesigned setup screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3576 * Extract imeta URL rendering logic to shared utility by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3577 * Prefetch recent group chat messages for list previews by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3578 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3574 * Modernize chat message rendering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3579 * Fix reactive state handling in Concord entry display by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3581 * Concord: richer channel rows — previews, unread counts, facepiles, live typing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3582 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3580 * Skip empty reaction chip rows on messages without engagement by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3584 * NIP-29 message pinning: UI bar, moderation events, and relay group integration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3586 * Sync Blossom media server list (kind 10063) across clients by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3583 * Desktop NIP-17: deliver DMs & reactions to the recipient's DM relays, downloaded up front by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3587 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3585 * Add IO dispatcher import to BlossomServerListState by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3589 * CORD-05: Distinguish invite redemption failures for better UX by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3592 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3590 * Fix AUTH grant persistence for long relay URLs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3591 * Add hashtag muting support via NIP-51 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3593 * fix(desktop): auto-approve pending relay AUTH once the DM-inbox (kind:10050) set loads by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3594 * NIP-29: subgroups, custom roles, timeline refs, invite links + relay-signed hardening by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3596 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3595 * Add global master switch for always-on notification service by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3598 * Add NIP-22 LIMITS message support with per-relay tracking by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3597 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3599 * Improve Concord invite error messaging and Gradle infra detection by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3602 * refactor: converge rich-text rendering across Android + Desktop into commons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3600 * Make theme colors follow selected accent, not fixed purple by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3601 * Pre-seed Gradle distribution in web sandbox to unblock ./gradlew by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3605 * Add geohash location chat support (Bitchat interop Phase 2) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3604 * Redesign settings screen with segmented controls and sections by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3606 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3603 * Keep live HLS streams playing; cache only proven on-demand HLS by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3607 * Tolerate bare URL icons and keyless channels in CORD-05 invites by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3609 * Fix onPrimary contrast and add color scheme preview tool by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3610 * Refactor settings search field to use Material 3 TextField by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3611 * Add NIP-46 remote signer (bunker) support with consent UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3612 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3608 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3614 * feat(relay): stop re-sending REQs relays structurally refuse by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3613 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3615 * Prevent re-joining Concord communities via old invite links by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3617 * fix(nip46): remote-signer pubKey is the user identity + amy Concord epoch tooling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3618 * NIP-84: Support W3C TextQuoteSelector for highlight context by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3619 * Replace Jackson with kotlinx.serialization for FHIR parsing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3620 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3616 * feat(concord): backfill channel history across Refounding epochs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3622 * Add per-chat-type load toggles to Messages settings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3623 * Move relay badges from author column to reaction gallery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3624 * refactor(commons): extract note-type UI rendering to commons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3625 * chore: include commons Compose resources in Crowdin sync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3627 * Redesign media servers UI with drag-reorder, health probes, and cards by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3628 * Add follower crawl and trusted-follower metrics to GrapeRank by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3626 * fix(ci): reclaim working-tree ownership after Crowdin Docker action by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3629 * Move settings search field to top bar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3632 * Add unread indicators for NIP-29 relay groups and Concord channels by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3631 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3630 * Extract GrapeRank CLI flag names into constants by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3634 * Add Blossom blob manager UI and BUD-07 payment handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3635 * Fix StrictMode DiskReadViolation in BootCompletedReceiver by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3636 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3633 * Fix media detection for malformed imeta MIME types by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3638 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3637 * Reorder settings menu entries and update icons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3640 * NIP-29 group chat: split state (always-on) from content (paginated) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3641 * amy CLI overhaul: exit-code/JSON contract v1, per-command help, contract tests, docs, and thin-layer extractions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3642 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3639 * Map-first geohash location UX: picker, teleport, follow, retarget by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3643 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3644 * chore(deps): update dependencies across all modules by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3646 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3645 * docs(changelog): add v1.13.0 release notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3647 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3648 * fix: v1.13.0 pre-release QA — napplet account isolation, Concord authority, and 30 other fixes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3650 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3651 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3652 * Add infinite-scroll backward pagination for notification history by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3653 * Share a note (link) as a QR code by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3654 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3655 * Replace raw bidi/invisible Unicode characters in source with \u escapes by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3656 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3657 * fix: persist the MIP-00 key-package and favorite-algo-feeds lists by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3659 * fix: Concord groups missing or slow on the Messages tab after a cold boot by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3658 * Optimize relay query performance: cost-based driver selection, tag-author indexing, and fanout memoization by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3660 * docs: fix license badge and refresh stale SKILL.md by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3662 * SQLite query scaling: FTS contentless, tag-merge, pooled statements by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3663 * feat(desktop): NIP-88 polls (render, vote, create) + "Polls" search facet by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3664 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3665 * fix(video): decoder-budget exhaustion and black bars on live streams by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3667 * Downgrade JVM target from 21 to 17 in quartz module by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3668 * Replace abandoned Android test report action with mikepenz/action-junit-report by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3670 * Stop ConcurrentModificationException in AddressableAuthorRelayLoaderSubAssembler by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3666 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3669 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3672 * fix(signer): never stamp our client tag on someone else's template by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3673 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3674 * Bootstrap Concord communities from pinned bottom-bar tabs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3675 * Refactor privacy settings UI to use composable components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3676 * Redesign ZapTheDevsCard with gradient hero header and improved UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3677 * Fix excessive vertical spacing in home feed when no live bubbles by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3678 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3679 * Warn users when a DM comes from an account that people they follow have reported by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3680 * Add Buzz protocol support with workspace, DM, and agent features by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3682 * Add "send without PoW" option for template posts during mining by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3684 * fix(concord): recover communities that won't load + warm channel previews by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3686 * Redesign push notifications with per-kind styles and channels by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3683 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3681 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3688 * feat(desktop): Moderation & Safety — mute/block enforcement, NIP-56 report, NIP-36 content warning by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3687 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3689 * Improve RSVP button layout and text handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3691 * Remove unreachable duplicate StreamMessageV2Event branch in computeReplyTo by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3690 * Add pluggable event store backend selection via StoreFactory by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3692 * docs: update v1.13.00 changelog with Buzz, Notifications, and more by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3693 * Refactor persistent collections API and fix deprecation warnings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3694 * Stop the decoder-budget counter from leaking and disabling the warm player cache by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3695 * Add geode standalone Nostr relay with release pipeline by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3696 * Anchor message edits to their targets instead of workspace state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3698 * Redesign Blossom blob manager UI with gallery grid and full-screen viewer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3699 * Add image attachment support to minichat threads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3700 * Anchor OTS attestations to target notes, replace verification cache by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3702 * Add Blossom blob import flow to pull files from other servers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3703 * Add NWC payment notifications and deep-link pairing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3701 * Support Buzz stream messages in group chat and improve chat previews by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3704 * Add pinnable relay servers and Concord channels to bottom bar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3706 * fix(concord): isolate the Control Plane sub so channels don't starve by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3705 * Add mirrorOrUpload fallback when Blossom /mirror endpoint unsupported by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3708 * Add NIP-XX BOLT12 zap support with validation and UI integration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3685 * Extract chat room mark-as-read logic into reusable function by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3707 * Fix race condition in NIP-01 compliance test with concurrent relays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3709 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3697 * Support RelayGroupChannelListScreen as bottom-nav tab by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3712 * Upgrade genaiPrompt to 1.0.0-beta4 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3713 * Fix GC-dependent flaky test in LargeCacheAddressableFilterTest by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3711 * Relay Rail: cluster relay groups by host relay with slim headers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3715 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3714 * fix(nip29): deliver Buzz/NIP-29 channel updates live, and ask before showing channels you were added to by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3716 * Stop the inline audio player painting over the note by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3719 * fix(buzz): thread kind-9 replies into the minichat instead of the channel by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3718 * Rename NIP-XX to NIP-B1 for BOLT12 Zaps specification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3720 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3717 * fix(tor): self-heal a guard sample that is rotten at runtime, not just on disk by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3721 * fix(quartz): route kind-39005 by tag shape so Buzz thread summaries stop parsing as NIP-29 pin lists by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3725 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3726 * fix: decode numeric HTML entities in link preview meta tags by @dergigi in https://github.com/vitorpamplona/amethyst/pull/3724 * feat(buzz): say who joined and what changed in the kind-40099 system lines by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3727 * refactor(chats): demote Threads and Share to the channel overflow menu by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3729 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3728 * docs(quartz): correct the Buzz kind-conflict table and document how to read Buzz's source by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3731 * fix(buzz): only offer "new thread" where a forum post belongs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3732 * Support P2PK witness signing for pasted Cashu tokens by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3734 * Remove community banner from Concord home screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3737 * Redesign Buzz channel rows to match Concord style with activity previews by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3736 * fix(chats): render the community tab correct on its first frame by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3735 * test(quartz): clean up compiler warnings across the test suites by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3738 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3733 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3739 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3740 * Add SearchableEvent implementation to 18 event types by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3743 * feat(quartz): index the public petname on contact cards (30382) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3745 * fix(buzz): make channel create, add-member and role changes actually work by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3742 * Merge close workout sessions to reduce noise in Health Connect suggestions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3746 * Add Buzz job/workflow boards and CLI agent/workflow commands by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3748 * Fix NIP-77 negentropy stall against relays that refuse via NOTICE by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3747 * Resolve @mentions in message bodies to p-tags across all chat types by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3749 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3744 * docs: update v1.13.00 changelog with new features by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3750 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3751 * Fix flaky FindUsersTest by retaining users in cache by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3754 * docs(changelog): tighten v1.13.0 highlights and audit against commits since v1.12.6 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3753 * Display user profiles in notification settings account list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3756 * Move bottom-bar persistence from app-global to per-account synced settings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3755 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3752 * feat(highlights): render NIP-84 quotes with a highlighter-pen marker by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3757 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3758 * Make the combined-sessions count a plurals resource by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3760 * Keep the "open in browser" button alive in a short error box by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3759 * Reorganize settings catalog: move UI settings to dedicated section by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3762 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3761 ## New Contributors * @LubuSeb made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3315 * @roguehashrate made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3400 * @dergigi made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3724 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.12.6...v1.13.0
  • Jun 19, 2026 1.12.6
    ## What's Changed * Add translator credit automation via Crowdin sync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3280 * Seed translator npub placeholders by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3281 * Move Cashu token parsing to quartz, unify v3/v4 parsers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3283 * Remove unused `updated` field from translator mappings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3284 * Handle Health Connect binding failures gracefully by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3285 * Fix ForegroundServiceDidNotStartInTimeException in NotificationRelayService by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3286 * Deduplicate emoji packs in selection event by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3287 * Fix unstable sort in live activity feeds by snapshotting status order by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3288 * Refactor feed sorting to use extension function and fix race condition by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3289
    More…
    * Handle missing camera app gracefully in photo/video capture by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3290 * Deduplicate emoji pack entries by shortcode and visibility by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3291 * Swallow signer exceptions in relay auth and bunker responses by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3292 * Improve error message for failed media downloads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3294 * Fix metadata bitmap recycling crash on some OEM ROMs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3295 * Add NIP-5A static-site resolver + NIP-5D napplet support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3296 * Fix disappearing bar overshooting on fast reveal fling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3297 * Centralize Blossom URL and auth header construction by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3298 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.12.5...v1.12.6
  • Jun 19, 2026 1.12.5
    **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.12.4...v1.12.5
  • Jun 17, 2026 1.12.1
    ## What's Changed * fix(tor): set Active deterministically so the bootstrap callback can't race it by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3233 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3234 * Add share-as-image feature for notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3236 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3235 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3237 * Promote Kenyan Swahili to the base resource qualifier by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3241 * Hide Android system bars in immersive scroll and full-screen media by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3240 * Add Health Connect integration for workout suggestions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3242 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3243
    More…
    * Support measurement system detection on Android API <28 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3244 * Release 1.12.1 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3245 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.12.0...v1.12.1
  • Jun 16, 2026 1.12.0
    ## What's Changed * feat(notifications): include public chat mentions in feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3027 * fix: keep Send button visible in onchain zap split mode by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3028 * Enforce minimum on-chain zap amount and update default zap presets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3030 * Calendar Translations (cs, de, pt-BR, sv) and skill update by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3029 * Surface NIP-47 wallet response errors to user by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3032 * Use URL SHA for Blossom bridge, not imeta hash by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/3035 * feat(desktop): note action bar — long-press details popups + right-click customize by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3034 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3031 * feat: pin followed public chats to the top of the Public Chats feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3037
    More…
    * Add NIP-82 Software Applications support with dedicated feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3036 * Makes the NWC process less strict, while checking for inconsistencies after the request reply is processed. by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3041 * feat(desktop): wallet zapping, LNURL-pay send, QR receive, and session persistence by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3038 * NIP-BC onchain zaps: add verification state machine & reverify driver by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3039 * Fix reaction row layout for icon-only rightmost items by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3042 * Fix account cache race condition in setDefaultAccount by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3043 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3040 * Restructure privacy policy and add build-variant legal UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3045 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3046 * Phase 1: iOS support for Quartz and Commons (KMP purity) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3047 * feat(desktop): rich text migration, profile metadata, copy JSON, @mention autocomplete by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3049 * Complete Phase 2 KMP migration to unblock iOS CI by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3050 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3048 * Phase 2: Gemini AppFunctions bridge + CLI action verbs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3051 * onchain zaps + nip-05 filter when returning users to Gemini by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3052 * Add Tor self-heal watchdog + integration tests + Arti v2.3.0 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3053 * Replace wallet reorder buttons with drag-and-drop UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3054 * fix(user-metadata): fall back to indexer relays when outbox is exhausted by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3055 * feat(desktop): full profile editing — 13 fields, image upload, NIP-05 verification, drag-and-drop by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3058 * Add "Add/remove to/from emoji list" row to pack-card menu by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3059 * feat(profile): modern chip layout for payment targets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3061 * feat(profile): toast when no app handles a payment target scheme by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3062 * feat(namecoin): add Namecoin Core RPC backend with optional ElectrumX fallback by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3056 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3060 * Comprehensive AVIF support (#837) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3063 * Add playback error overlay with browser fallback for video codec failures by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3064 * Exclude author from zap split display logic by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3065 * fix(playback): hide video controls while the error overlay is shown by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3066 * feat(namecoin): TOFU pin for Namecoin Core RPC TLS path by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3068 * fix(search): route d/ and id/ Namecoin namespaces through the resolution row by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3070 * Add Software Apps feed with follow list filtering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3071 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3069 * refactor(namecoin): consolidate NamecoinSettings into commons by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3072 * Fix route hint re-firing on activity recreation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3074 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3073 * feat(desktop): persist TOFU-pinned Namecoin ElectrumX certs by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3076 * Add music tracks and playlists support with NIP-51 events by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3067 * feat(desktop): Namecoin Core RPC backend + composite fallback by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3077 * Add dedicated NIP-82 software app detail screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3078 * Use distinct icons for password visibility toggle by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3079 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3080 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3081 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3082 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3083 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3084 * Fix StrictMode violation in ML Kit translation initialization by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3087 * Auto-stick feeds to top on prepend with StickToTopOnPrepend by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3088 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3089 * Add NIP-71 audio-track support with language and bitrate tags by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3090 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3091 * Add NIP-78 AppDataEvent (kind 78) and refactor AppSpecificDataEvent by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3092 * Add podcast support (NIP-F4) with favorites, metadata, and episodes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3093 * docs: consolidate CLAUDE.md guidance and inject skills dynamically by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3094 * Switch Java distribution from Zulu to Temurin by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3096 * Fix scroll position restoration in feed lists on return by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3097 * feat(desktop): Visual Personality Overhaul — Unified Theme, Sidebar, Search, Cards by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3098 * Fix lifecycle-aware subscription grace timer starvation by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/3103 * Use locale-aware date/time formatting throughout the app by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3095 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3102 * Fix live stream chat relay fallback by @carpedkm in https://github.com/vitorpamplona/amethyst/pull/3086 * Add NIP-60 Cashu wallet and NIP-61 nutzap support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3075 * Add dedicated podcast screen with episode list and inline player by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3105 * Redesign Cashu icon as monochrome tintable glyph by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3106 * Refactor RelayProxyClientConnector to use injected StateFlows by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3107 * Unify zap amount chips and add cashu reload flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3108 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3104 * Reorganize commons packages: NIP-64 chess, NIP-AC WebRTC, and model caches by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3109 * Move utility functions and models to commons module by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3110 * NIP-32: Add hashtag labeling and label-based hashtag feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3111 * Move NIP-51/72 decryption caches and models to commons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3112 * Remove wallet reordering UI and drag-and-drop functionality by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3114 * feat(cashu): show per-mint balance, drop inline recommend button by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3115 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3113 * Run git from rootDir in versionName detection so worktrees work by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3117 * chore(actions): bump the actions group with 2 updates by @dependabot[bot] in https://github.com/vitorpamplona/amethyst/pull/3119 * Move HTML parsing and broadcast service to commons for KMP by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3120 * Fix inverted guard in TagArrayBuilder.addUniqueValueIfNew by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3121 * Support ephemeral signers for anonymous post uploads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3123 * Share content directly to a DM ("Send as DM" share target) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3122 * feat(desktop): Feed UI refresh — inline expansion, comments, related content by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3124 * feat(desktop): home-feed scroll polish + sidebar tooltips by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3126 * Searchable, data-driven settings screen by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3127 * fix: address root causes of 6 runtime log noise issues by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3125 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3128 * Register CommunityRulesEvent in EventFactory for kind 34551 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3129 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3130 * Add ReqResponderServer for non-storage relays + NIP-50 search support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3131 * Move authenticated identity from policy to connection scope by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3133 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3132 * docs(namecoin): refresh NIP-05 design doc to match current main by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3118 * Fix cache-pruning invariant for onchain zaps and nutzaps by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3134 * Fullscreen swipe controls for brightness & volume by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3135 * Hide reposts whose boosted kind is unsupported by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3136 * feat(desktop): reply context in feeds + profile Replies tab by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3138 * Render Agora fundraiser campaigns (kind 33863) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3137 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3139 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3140 * fix(quartz): NIP-46 bunker double-resume + retry id-reuse races by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3141 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3142 * Minimal first-class rendering for Birdstar "Birdex" species collections (kind 12473) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3143 * Resilient profile metadata (birthday) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3144 * Unify poll and zap poll options into single state map by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3145 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3146 * Audio visualiser for audio notes by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3147 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3148 * Square the feed audio player by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3149 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3150 * Add LaTeX math rendering for $...$ and $$...$$ equations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3152 * fix(math): collapse over-escaped backslashes in inline equations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3153 * fix(math): center inline equations on the text line by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3154 * feat(desktop): image compression + preview gate, plus lightbox URL hover/copy by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3155 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3156 * Inline LaTeX — render wrapped equations, upgrade renderer, baseline alignment by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3157 * DM history: per-relay backward paging, live-tail split + prune-aware window realignment by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3151 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3158 * Count NIP-18 quote-reposts as boosts of quoted notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3161 * fix(commons): make commonTest compile for iOS targets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3159 * Replace String.format with toString(16).padStart in test helpers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3162 * Add NIP-14 group subjects and improve DM group creation UX by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3163 * Replace GPLv3 TarsosDSP with an in-house pitch shifter by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3160 * Work around Compose ui-uikit prebuilt cache linking failure by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3164 * Add InlineQuoteRenderer strategy for customizing quoted notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3168 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3167 * fix: treat kind-9 ChatEvent as a chat kind for inline chat-style quotes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3170 * Extract Marmot group message composer to ViewModel by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3171 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3169 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3172 * Audit & refresh skill library, docs, and hooks (Phase 2–3) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3173 * Compute legacy NIP-71 video addresses with their d tag by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3166 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3174 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3176 * feat(desktop): replace vlcj (GPLv3) with kdroidFilter ComposeMediaPlayer + JCodec/FFmpeg by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3175 * Implement CLINK (Common Lightning Interface for Nostr Keys) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3177 * Marmot: seed subscription since from stored messages on restart by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3178 * Optimize string resource loading in WalletScreen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3180 * Fix ThumbnailDiskCache to recreate cache dir if cleared at runtime by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3181 * Add kotlinx-serialization support for CLINK protocol DTOs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3182 * Add pinned chatrooms feature with NIP-78 sync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3183 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3179 * Add NIP-101e fitness workout support (Kind 1301) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3184 * Add unified profile payment screen with multi-rail support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3185 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3187 * Localize onchain zap send UI and failure messages by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3188 * feat(desktop): unhealthy-relay review banner + popup by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3186 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3190 * Unify payment card UI with PaymentCard component by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3191 * Add --payer-data flag to offer request command by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3193 * Exclude metadata tags from text search by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3194 * Add NIP-89 app recommendation management UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3192 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3195 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3198 * Make relay failure logs diagnosable (exception class on null message, correct NIP-11 error label) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3197 * Add Selected filter mode for curated notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3196 * Improve NIP-82 software app UI with author info and screenshots by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3200 * Support private notes: gift-wrap kind-1 replies and posts to p-tagged users by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3201 * Refactor notification chips UI with Material 3 components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3203 * Add show button to hidden words list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3204 * Redesign activity cards (reactions, zaps, nutzaps) with unified UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3202 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3199 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3205 * Fix test name grammar in LnZapRequestAnonTagTest by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3206 * Migrate notification filter from Global to Selected on first load by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3207 * Remove write-only RelayStat liveness fields by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3208 * Stop media-server default from resetting on every launch by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3209 * Reorganize changelog into versioned files by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3210 * desktop(namecoin): port DiagnosticCard from Android settings by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/3211 * docs: Add v1.12.0 release notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3214 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3212 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3215 * fix: parse IPv6-literal URLs in post content by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3217 * Restore iOS test native-cache workaround dropped in dependency bump by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3216 * Don't reset relay reconnect backoff on momentary connections by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3219 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3222 * fix: RelayHealthStore threading + sleep-resume socket recovery (follow-up to #3186) by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/3221 * Gate Tor-routed relay dials until Tor is ready by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3223 * fix: Tor lifecycle race + bounded bootstrap so a hostile network can't wedge Tor by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3224 * Redesign workout display with hero metric and stats grid by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3226 * Eagerly preload thread for replies visible in feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3227 * fix(tor): bound Arti bootstrap with a 60s timeout + repeatable network test suite by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3228 * perf(tor): stop wiping Arti's consensus cache on every start by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3230 * feat(tor): self-heal when Tor is Active but every circuit is dead by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3231 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3229 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3232 ## New Contributors * @carpedkm made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3086 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.11.0...v1.12.0
  • May 20, 2026 1.11.0
    ## What's Changed * feat(profile): restore Lightning Address + LNURL fields in Edit Profile by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2947 * Raises the default maximum hashtag limit from 5 to 8 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2948 * feat(notifications): include onchain zaps in summary stats by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2949 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2951 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2952 * fix: subscribe and observe PaymentTargetsEvent for other users by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2953 * Fix public chat deduplication by channel ID extraction by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2954 * fix(blossom): only bridge to local cache when URL is BUD-01 layout by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2959 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2960
    More…
    * fix(desktop): fix release build crashes (ProGuard, VLC, jlink modules) by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2961 * feat(electrumx): add electrum.nmc.ethicnology.com to default server set by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2950 * Apply scaffold padding to GitRepositoryOverview by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2963 * Thread-safe authStatus in RelayAuthenticator (#2946) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2962 * feat(profile): long-press to copy Nostr Address, Website, LN Address, identities, payment targets by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2958 * feat(onchain-zaps): enable Send when typed name resolves via NIP-05 by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2955 * feat(onchain-zaps): inline Namecoin resolution indicator + result row by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2956 * feat(search): inline Namecoin resolution indicator in global search bar by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2957 * Replace AtomicReference with LargeCache in RelayAuthenticator by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2964 * Support floating-point dimensions in NIP-92 imeta tags by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2968 * Add excessive hashtag detection to hidden note UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2969 * Refactor media upload to use AccountViewModel.launchSigner by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2970 * Extract notification settings to dedicated screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2967 * Fix MediaStore MIME type compatibility for video files by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2966 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2965 * Add Nowhere link detection and branded card rendering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2971 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2972 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2976 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2979 * Fix popup menu positioning and parameter naming by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2980 * test(desktop): add Compose UI smoke test + release .deb launch CI by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2975 * Show on-chain Bitcoin zappers as a dedicated ₿ row in the expanded reactions gallery by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2977 * Release MediaController after 30s background timeout by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2973 * Convert hashtag-limit message to <plurals> by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2978 * Add on-chain transaction history screen with pagination by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2974 * Improve onchain transaction filter UX with separate empty states by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2983 * Fix playback notification tap target in warm-pool fast path by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2982 * NIP-57 Appendix F zap receipt validation with LNURL provider verification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2984 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2981 * Fix feed sorting race condition with snapshot-based comparator by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2986 * Align push notifications with in-app feed filtering by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2987 * Plan: local Bitcoin headers explorer for NIP-03 OTS (revised 2026-05-19) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2988 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2985 * Fix zoomed image dismiss animation to start from actual bounds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2989 * Add I2P support with unified privacy routing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2990 * Reorder FeedGroup enum for improved UX by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2992 * Refactor geolocation retry logic with suspend coroutines by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2993 * Add reply support for Marmot/MLS group messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2995 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2991 * Simplify Nip11Retriever by removing nested withContext by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2997 * Fix PrivacyOptionsScreen initialization with LaunchedEffect by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2998 * Add NIP-52 calendar events support with UI and reminder system by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2994 * Fix notification feed composition issue by removing CrossfadeIfEnabled by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2999 * Remove I2P support and privacy routing abstraction by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3000 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2996 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3001 * fix: observe locale in CalendarDateTimePickerButton by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3002 * Refactor ZapAmountChoicePopup UI with extracted components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3004 * Handle ForegroundServiceStartNotAllowedException in PlaybackService by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3005 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3003 * Include thread name in crash reports by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3006 * fix: surface Pay row in Reaction Settings for existing accounts by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/3009 * Refactor payment targets UI by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/3011 * Migrate build scripts from Groovy to Kotlin DSL by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3007 * Add public wallet warning chip and dialog to onchain section by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3012 * docs: add Material Symbols font subset regeneration guide by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3014 * Re-add Nostrcheck.me Blossom server to defaults by @quentintaranpino in https://github.com/vitorpamplona/amethyst/pull/3015 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3013 * Add fallback relay logic for abandoned users in metadata queries by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3019 * Add on-chain split zap support with per-recipient distribution by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3018 * Add warning dialog for copying public onchain addresses by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3021 * Migrate text input to new Compose TextFieldState API by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3022 * i18n: convert calendar count + reminder strings to <plurals> by @davotoula in https://github.com/vitorpamplona/amethyst/pull/3020 * Add Contact List display and navigation screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3023 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/3017 * fix(ui): restore outlined visual on EditPostView + ForwardZapTo TextF… by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3024 * feat: tighten the zap UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/3025 ## New Contributors * @quentintaranpino made their first contribution in https://github.com/vitorpamplona/amethyst/pull/3015 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.10.0...v1.11.0
  • May 16, 2026 1.10.0
    ## What's Changed * ci: remove macos-13 x64 build legs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2939 * Replace linuxdeploy with appimagetool for AppImage packaging by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2940 * Sync inner note highlight fade with parent background color by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2941 * Handle denied call permissions with settings dialog by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2942 * Fix gradient rendering with transparent background colors by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2943 * Add NIP-BC onchain Bitcoin zaps support (send, receive, display) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2944 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.09.2...v1.10.0
  • May 16, 2026 1.09.2
    ## What's Changed * Fix Blossom blob detection to reject non-compliant filenames by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2919 * fix(desktop): add ProGuard keep rules so v1.09.1 desktop builds actually launch by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2921 * fix(video): pause playback when app goes to background by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2925 * fix(desktop): mirror Android ProGuard strategy for release builds by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2922 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2920 * feat(desktop): wire NamecoinSettingsSection into Settings screen by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2923 * feat(desktop): wire Import Follow List dialog into UI by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2924 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2926 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2927
    More…
    * Fix crash when toggling home tabs with persisted pager state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2930 * Fix ChatroomListKnownFeedFilter to use flowSet instead of flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2932 * Use accountViewModel.launchSigner for relay join/leave requests by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2933 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2931 * Migrate DNS cache from SharedPreferences to cacheDir by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2935 * Filter DNS poison (loopback/any-local) from non-loopback hosts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2936 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2934 * perf(dns-cache): hand-rolled binary persistence format for SurgeDnsStore by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2937 * Remove unused ammolite module and optimize build config by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2938 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.09.1...v1.09.2
  • May 15, 2026 1.09.1
    ## What's Changed * Rename onRefresh callback to avoid shadowing parameter by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2912 * Fix desktop app ProGuard build with Compose 1.11.0 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2914 * Fix pull-to-refresh indicator positioning in DisappearingScaffold by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2916 * Remove collectAsStateWithLifecycle from BottomBarSettingsContent by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2918 * Add Git repository detail screen with issues/patches tabs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2917 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.09.0...v1.09.1
  • May 15, 2026 1.09.0
    ## What's Changed * Add scroll-to-event functionality for push notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2066 * Add NIP-51 list event types for content curation and management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2067 * Add support for NIP-53 Meeting Spaces and Meeting Rooms by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2069 * Add floating action buttons for media and poll creation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2070 * Enhance long-form article editor with banner image and tags UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2071 * Add WebRTC-based peer-to-peer voice and video calling via NIP-AC by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2068 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2072 * Improve markdown rendering with enhanced typography and styling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2073 * Add support for NIP-59 Ephemeral Gift Wrap events (kind 21059) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2074
    More…
    * Add remote video activity monitoring to detect peer disconnections by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2075 * Add multi-device call state synchronization by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2076 * Implement Tor SOCKS port retry logic with dynamic port allocation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2077 * Clamp PiP aspect ratio to Android system limits by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2079 * Add proximity sensor support to auto-pause video during calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2078 * Preload bookmark events to improve scrolling performance by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2080 * Fix resource leaks and improve coroutine lifecycle management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2081 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2082 * Implement Picture-in-Picture mode for call activity by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2083 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2084 * Improve video call quality with 720p resolution and bitrate limiting by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2085 * NIP-AC: Document mid-call renegotiation and multi-device support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2086 * Add group call support to WebRTC call system by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2087 * Add group call support with participant management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2088 * Improve call handling: busy rejection, peer tracking, and ICE state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2089 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2090 * Add group call support with multi-member p-tags and per-peer SDP by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2091 * Add maximum hashtag limit security filter by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2092 * Disable hardware acceleration for profile picture image loading by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2094 * Simplify poll creation UI and consolidate poll types by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2093 * Add comprehensive logging to WebRTC call session and controller by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2096 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2095 * Exclude current user from group call member displays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2097 * Add Marmot protocol support (MIP-00 through MIP-05) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2098 * Fix group call handling for answer/reject events by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2099 * Fix call UI to exclude current user from peer list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2100 * Add Marmot protocol support with MIP-00, MIP-02, MIP-03, MIP-05 implementations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2101 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2102 * Refactor CallController for multi-peer group calls with mesh topology by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2103 * Exclude current user from peer lists in call UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2104 * Fix call state handling to prevent missed cleanup due to StateFlow conflation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2105 * Add MLS (Messaging Layer Security) implementation for Marmot by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2106 * Fix call audio state transitions and notification handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2107 * test: add comprehensive MLS engine tests and fix self-decrypt ratchet by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2108 * Handle peer rejections in incoming group calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2109 * Improve group call peer management and signaling robustness by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2110 * Improve peer disconnection handling in calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2111 * Add option to forward profile events to local relays by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2112 * Add payment targets feature with NIP-A3 support by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2114 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2113 * Support multiple remote video tracks in group calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2115 * Fix intermittent test failure, DesktopFeedFilters.kt by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2116 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2117 * Improve video call UI to show active peer videos with fallback avatars by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2119 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2118 * Improve video call detection to include active video streams by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2120 * Handle WebRTC offer glare in call renegotiation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2121 * Replace NIP-59 Gift Wraps with Ephemeral Gift Wraps for WebRTC calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2123 * Add ability to dismiss poll notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2124 * Add MLS interoperability test vectors and implementations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2125 * fix for 5m hung windows build: Switching to cache: gradle in setup-java. by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2026 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2126 * Improve broadcast completion detection and dismissal timing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2127 * Add routing support for Poll and ZapPoll draft edits by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2128 * Set explicit surface color for Card in notification feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2129 * Add tabbed interface to Polls screen for open/closed polls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2130 * NIP-AC: Comprehensive WebRTC call state machine and group call spec by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2131 * show toast while downloading video for sharing by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2135 * Fix image sharing error by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2133 * Add MLS group state persistence and KeyPackage rotation management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2141 * Add poll results preview feature with persistent viewing state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2139 * Add thumbnail disk cache for profile pictures by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2140 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2137 * Add comprehensive test suite for NIP-AC call state machine by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2143 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2142 * feat: add missing translations for 5 keys across 4 locales by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2144 * Add Marmot inbound/outbound message processors and subscription manager by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2146 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2145 * Add Marmot MLS group messaging support to Amethyst by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2147 * Add ALT tag support to PaymentTargetsEvent by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2148 * Add Marmot MLS group messaging UI and integration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2149 * Add comprehensive MLS test suite and improve GroupInfo signing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2150 * fix: prevent share dialog from being dismissed by control auto-hide by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2151 * Add periodic ticker to re-evaluate open polls after close date by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2154 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2152 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2155 * Refactor Marmot group chat UI with improved message composer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2157 * Add KeyPackage publication status tracking for Marmot groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2158 * Reorganize settings: move sensitive options to "Danger Zone" section by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2159 * Add permission handling for accepting calls from notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2160 * Add drag-to-reorder functionality for relay lists by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2161 * Fix audio cleanup and call state handling on Activity destroy by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2163 * Prevent stale call offers from retriggering after app restart by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2164 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2162 * Add pure Kotlin secp256k1 implementation for Nostr operations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2166 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2165 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2167 * Add thread safety and robustness improvements to Marmot MLS implementation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2169 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2171 * Optimize secp256k1 with unrolled arithmetic and caching by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2170 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2174 * Add thread-safe state management to CallManager by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2168 * Add member removal and group info editing for Marmot groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2173 * Add groupId parameter to commit ordering tracker methods by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2177 * Implement Ed25519 and X25519 cryptography for native platforms by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2178 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2175 * fix: account switcher bottom sheet not showing logged-in accounts by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2172 * Refactor note layout to use custom zero-overhead NoteComposeLayout by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2138 * Change relay feed icon from door to storage by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2179 * Move Event Sync and Import Follows to Settings screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2180 * Add AI writing assistance with ML Kit integration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2176 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2181 * Add relay feed support and refactor feed filtering logic by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2182 * Enhance chess UI with user profiles and player display by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2184 * Integrate Lightning Address and Payment Targets into NIP47 Setup by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2183 * Remove redundant route parameter from Community FeedDefinition by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2185 * feat: add multi-wallet NWC support with balance view and default picker by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/1988 * Add wallet connection UI controls to AddWalletScreen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2186 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2187 * Animated gif to mp4 conversion by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2189 * Optimize secp256k1 field arithmetic with fused multiply-reduce and platform-specific intrinsics by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2188 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2190 * Remove LiveChessGameChallengeEvent from home feed filters by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2192 * Optimize secp256k1 field arithmetic with fused multiply and inline comparisons by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2195 * Add cross-platform support and simplify benchmark output by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2197 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2193 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2200 * fix(quartz): snapshot LargeCache entries in forEach to prevent ConcurrentModificationException by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2201 * RFC 9420 compliance: encryption, commit ordering, and thread safety by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2202 * Improve WebRTC call reliability and notification handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2203 * Replace LongArray with Fe4 struct for secp256k1 field elements by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2204 * Add call settings screen for video quality and TURN server configuration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2205 * fix: start foreground service earlier to prevent call death on Androi… by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2206 * Add thread safety, network monitoring, and camera controls to WebRTC calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2208 * Improve thread safety and error handling in call management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2209 * Add macOS support to benchmarks and Kotlin/Native compilation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2210 * Claude/review webrtc calls vc6v0 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2211 * Use GifToMp4Converter from LightCompressor-enhanced 1.9.0 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2239 * Add high-performance C secp256k1 implementation with JNI bindings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2374 * Improve Tor bootstrap resilience and WebSocket connection handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2269 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2270 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2375 * fix: VLC video playback shows Install VLC fallback when running via Gradle (#2062) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2377 * feat: Desktop Tor support — embedded kmp-tor, full privacy routing, settings UI by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2381 * Update LightCompressor-enhanced to v2.0.0 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2382 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2383 * Add YouTube-style video quality picker for adaptive videos by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2384 * Fix secp256k1 field arithmetic carry-fold bugs and optimize squaring by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2387 * Add per-peer invite timeouts and calls enable/disable setting by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2388 * Fix GCM IV length in KeyStore decryption by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2389 * Fix Bluetooth SCO receiver registration for Android 12+ by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2390 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2386 * Update AndroidBleTransport for Android 13+ Bluetooth API changes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2391 * Fix Marmot initialization error in group creation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2392 * Add MarmotGroup chat room support to ChatroomHeaderCompose by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2394 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2396 * Make editState parameter optional in ReactionsRow and related components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2397 * Extract pinned notes into separate screen and navigation route by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2395 * Update Android SDK to platform 37 and build-tools 37.0.0 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2398 * Add shared element transition animation to image/video dialogs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2399 * Implement per-peer watchdog timers for group call members by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2400 * Fix Ed25519 provider selection to avoid AndroidKeyStore on Android by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2403 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2402 * Share HLS Video via NIP-71 + LightCompressor-enhanced 2.2.0 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2401 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2404 * fix: end call when the last connected peer hangs up by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2405 * Fix ringtone/notification stuck after rejecting consecutive calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2407 * Add comprehensive logging to MLS group persistence and recovery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2408 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2406 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2409 * fix(marmot): switch KeyStoreEncryption transformation to AES/GCM/NoPa… by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2410 * fix(marmot): use GCMParameterSpec for decrypt + stop auto-deleting gr… by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2411 * Add NIP-82 Software Apps event types and tag support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2412 * Add multi-device call handling and architecture documentation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2413 * Improve call notification display with user metadata resolution by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2414 * Fix Marmot group invite delivery to use recipient's inbox relays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2415 * keep screen on + smooth per-file upload progress bar by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2416 * Add NIP-34 Git pull requests, status events, and repository state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2417 * Add persistent storage for Marmot KeyPackages and group messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2418 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2419 * Add Marmot group messages to notifications feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2421 * Implement MIP-04 encrypted media support for Marmot groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2424 * Add Products feed screen with classified listings support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2422 * Add Articles feed screen with NIP-23 long-form content support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2423 * Refactor call session lifecycle to Activity-owned CallSession by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2425 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2427 * Enhance long-form article preview with metadata and topics by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2429 * feat(desktop): multi-platform distribution — 8 assets, Homebrew + Winget by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2430 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2428 * chore(actions): bump the actions group with 4 updates by @dependabot[bot] in https://github.com/vitorpamplona/amethyst/pull/2431 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2432 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2433 * Add MIP-00 KeyPackage Relay List support for group invitations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2435 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2434 * Implement Marmot MIP compliance fixes for admin gates and media handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2436 * Rename kind3GlobalPeople to kind3GlobalPeopleRoutes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2439 * Skip audio animation when blurhash is present by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2437 * Optimize video player mutex with single-winner cache by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2440 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2438 * Simplify payment button logic and handle empty targets earlier by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2442 * Add Marmot interop test harness for Amethyst ↔ whitenoise-rs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2441 * Optimize media loading with improved HTTP connection pooling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2444 * Refactor content warning UI with backdrop support and image preloading by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2447 * feat(desktop): App Drawer with workspaces, customizable nav bar by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2445 * Add deleted items banner to bookmarks, pins, and bookmark groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2448 * Add PDF viewing support with preview cards and full-page viewer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2450 * Add NIP-90 DVM favorite list support with content discovery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2449 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2443 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2451 * Add comprehensive badge system with creation, awarding, and profile management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2452 * Add ThumbHash support for image placeholders by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2454 * Add Interest Sets feature for organizing hashtags by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2456 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2453 * Refactor DisappearingScaffold to use unified bar state management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2455 * Refactor Marmot group members to use reactive state flow by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2457 * Add emoji set support and shortcode validation to NIP-30 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2458 * Track relay activity for Marmot group chats by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2459 * Show placeholder notes for empty Marmot groups in chat list by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2460 * HLS video: Lowest resolution in feed/PiP, auto resolution in full screen by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2461 * MIP-01/MIP-05 compliance: VarInt encoding, validation, and MDK interop by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2462 * Add daemon diagnostics and heartbeat logging to invite polling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2464 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2463 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2465 * Fix MLS commit framing for wire protocol compliance by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2466 * Add separate autoplay videos setting independent of video loading by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2467 * Add community creation and management UI with NIP-72 support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2468 * Add live stream top zappers leaderboard and NIP-53 event types by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2469 * Fix MLS group state divergence and outer-layer decryption issues by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2471 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2470 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2472 * Add comprehensive emoji pack management UI and functionality by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2473 * fix: the consumer read activity.intent instead of the intent parameter passed into the callback by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2475 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2474 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2476 * Fix MLS spec compliance issues in commit path and message encryption by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2477 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2478 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2479 * Cache on-demand HLS videos + adaptive cache sizing by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2480 * Organize drawer navigation into collapsible sections by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2482 * Expand skill library with feed patterns, auth signers, and relay client docs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2483 * Add Follow Packs discovery feed screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2485 * De-emphasize topic chips in LongFormHeader by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2484 * Add Live Streams feed screen with filtering and discovery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2486 * Add Public Chats screen with feed filtering and relay subscriptions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2487 * Add CLI interface (amy) for Marmot/MLS group operations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2488 * Add customizable bottom navigation bar with drag-to-reorder UI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2489 * Add follow packs support to default follow list preferences by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2490 * Add NIP-53 proof of agreement and event builders by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2491 * docs: add Amy CLI development guides and skill reference by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2492 * Fix MLS commit cryptography and add comprehensive validation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2493 * Add MoQ-transport client and audio rooms support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2494 * Add always-on notification service for real-time Nostr relay connections by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/1983 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2481 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2495 * Improve sanity checks and build resilience in marmot-interop by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2496 * Fix external join path encryption and add processFramedCommit by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2497 * Use processFramedCommit for RFC 9420 §6.1 signature verification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2498 * Replace newStack with navBottomBar for bottom navigation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2499 * Improve wnd daemon startup reliability and error diagnostics by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2500 * Claude/debug marmot harness o cu2g by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2501 * Isolate MLS and Marmot stores per account by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2505 * Auto-republish account settings when relay lists change by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2504 * Fix disappearing bars hiding on pure overscroll for non-scrollable lists by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2506 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2502 * Inline member management in Marmot group info screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2508 * Fix navigation stack handling when creating marmot groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2509 * Refactor MarmotGroupInfoScreen layout for better UX by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2510 * Implement known/new group classification based on follow set by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2511 * Implement per-recipient relay routing for Marmot protocol by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2512 * Filter non-displayable messages from Marmot group chat feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2513 * Add admin privilege management for Marmot group members by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2514 * Fix MIP-03 inner event verification in group messages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2515 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2507 * Fix MLS UpdatePath filtering and improve interop harness diagnostics by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2517 * feat(desktop): Relay Power Tools — Dashboard, Config Editors, Subscription Wiring by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2519 * fix(playback): route HLS URIs to HlsMediaSource via MediaItem mimeType by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2520 * fix for: release/benchmark crash on start-up by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2521 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2516 * Improve search toggles by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2522 * Improve search part 2 by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2523 * Fix Marmot group message filtering for multi-account scenarios by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2524 * Fix undecryptable outer layer events being marked as processed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2525 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2526 * Fix memory leak when leaving Marmot groups by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2527 * Configurable video buttons by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2528 * Quiet happy path logging, surface failures prominently by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2529 * Add NIP-17 direct message support to CLI (send, list, await) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2531 * Enhance Marmot group UI with member avatars and dynamic naming by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2532 * Refactor notification pipeline to use cache observer pattern by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2534 * Replace Material Icons with Material Symbols by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2533 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2530 * Improve broadcast UI styling with better spacing and rounded corners by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2535 * Add leave/rejoin, reactions, deletions, and Marmot reset functionality by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2536 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2537 * Improve WakeUp event handling for multiple referenced events by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2540 * Optimize Material Symbols rendering with shared font and text measurer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2541 * add SECURITY.md with private vulnerability reporting policy by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2542 * Fix: hand raised toggle bug and sonar fixes by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2543 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2544 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2545 * Fix Material Symbol icon rendering and adjust bottom bar icon sizes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2546 * feat(reactions): place payment targets icon after zap by default by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2547 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2548 * Add reply and mention notifications for public notes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2538 * Preload all writable accounts for always-on notifications by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2539 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2550 * feat(media): add playback controls and autoplay support for GIFs by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2503 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2551 * Add profile and notes commands to CLI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2552 * Add native distribution packaging for Amy CLI (jlink + jpackage) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2555 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2553 * Consolidate CI/CD workflow: merge test and build jobs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2554 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2556 * Simplify SwipeToDelete by using onDismiss callback by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2557 * Add secure private-key storage with OS keychain and NIP-49 support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2559 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2558 * test(marmot-interop): unwrap newer whitenoise-rs `groups show` shape by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2561 * A filesystem-backed event store by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2560 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2562 * fix(avatar): center-crop profile picture thumbnails to prevent squashing by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2563 * Ci/split android job by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2565 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2564 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2566 * Implement NIP-01 lexical id tiebreaker and NIP-09 author-only deletion by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2567 * ci: add Android Lint as first step of the Android job by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2569 * fix(zoom): keep aspect ratio during the avatar zoom-in animation by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2570 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2568 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2571 * Dual-output contract: text by default, --json for machines by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2572 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2573 * fix(lint): observe locale via LocalConfiguration in composables by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2574 * feat(settings): split broadcast tracker visibility from Complete UI mode by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2575 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2576 * Add native OS theming and improve desktop UI layout by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2549 * feat(quic+nestsClient): pure-Kotlin QUIC v1 + HTTP/3 + WebTransport + MoQ listener stack by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2577 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2578 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2580 * Make event store operations async with coroutine support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2583 * fix(translation): bug, perf and jitter overhaul of rich-text translation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2582 * Optimize video playback with warm player pool and buffer tuning by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2584 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2586 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2587 * perf(note types): cache event-derived values and hoist static modifiers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2588 * perf(ui): drop remember wrappers where overhead exceeds savings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2589 * fix(playback): hoist DataSourceBitmapLoader build into a function by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2590 * Refactor FeedFilterSpinner to pass FeedDefinition objects instead of indices by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2591 * fix(packaging): relax libicu dependency in .deb for cross-distro compat by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2596 * Fix chat cursor jump by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2597 * Add AI-powered alt-text suggestions for images by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2598 * Remove stop action from notification service and update icon imports by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2599 * Make ChatroomLazyKey types Serializable for LazyColumn state by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2601 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2600 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2602 * Add back button visibility check to prevent navigation from root by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2603 * Fix back stack management in bottom navigation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2604 * Claude/fix nav back arrow 99 n gn by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2605 * Adds a BottomNavBar for screens that didn't have before by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2606 * Add NIP-53 audio room speaker/broadcaster support by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2585 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2607 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2608 * Add full-featured composer to nest room chat by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2609 * Extract profile top bar into separate composable component by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2611 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2610 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2613 * Refactor NestFullScreen layout: tabs, action bar, and stage grid by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2614 * Add image upload functionality to CreateNestSheet by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2616 * refactor(nests): split nests/room flat package into named subpackages by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2615 * Add presence-based liveness detection for meeting rooms by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2617 * Fix FAB positioning when AppBottomBar hides on nested navigation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2618 * Move NestActivity to activity subdirectory by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2619 * Add Nests audio-room interop test harness for Amethyst ↔ web by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2622 * feat(nests): bigger avatars + clearer mute/speaking state in participant grid by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2620 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2623 * Enhance Nest PIP with dynamic speaker focus and connection status by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2625 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2624 * Remove custom C secp256k1 implementation, migrate to libschnorr256k1 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2627 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2626 * feat(nests): proactive JWT refresh + reconnect for speaker path by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2621 * Refactor nest room UI: collapsible summary and stage header redesign by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2629 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2628 * Update schnorr256k1-kmp dependency to v1.0.3 and fix group ID by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2631 * Fix window insets handling in NestActionBar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2632 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2630 * Update MOQ relay URLs to include port 4443 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2633 * Fix IME padding and window insets in NestFullScreen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2634 * Add presence-based freshness filtering for Nests feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2635 * fix(quartz): skip schnorr256k1 benchmark when native lib fails to load on Windows by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2637 * test(nests): fix flaky ReconnectingNestsListenerTest on macOS by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2638 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2636 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2640 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2641 * ci(desktop): retry vlcDownload on transient network failures by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2643 * Fix Last Seen formatting for older timestamps ("Last seen Jan 14 ago" → "Last seen on Jan 14, 2026 (3 months ago)") by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2642 * Fix sonar empty functions and string literals by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2639 * Add payment targets navigation to settings screen by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2645 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2644 * Align nests servers with NIP-53 spec: separate relay and auth URLs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2646 * test(quic): add concurrent producer/consumer regression for SendBuffer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2648 * Fix stage presence sync and relay propagation in meeting rooms by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2649 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2647 * Fix race condition in MoQ subscription registration by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2651 * Add tap gesture support for audience member promotion by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2652 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2650 * fix(android): silence StrictMode cleartext violations for 127.0.0.1 (Tor SOCKS) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2659 * fix(nip39): reject identity claim tags without a platform separator by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2658 * Replace unused lambda parameters with `_` by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2657 * feat(nests): use mic icons for talk / stop talking by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2655 * feat(home): user-configurable home tabs (new threads, conversations, everything) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2654 * Improve Nests feed filtering to check for active speakers by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2653 * Preload bottom bar feeds reactively based on user's pinned items by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2660 * Fix race condition in ReconnectingNestsSpeakerTest broadcast handle access by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2661 * Fix expiration timing in ExpirationTest by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2662 * Support Android's hostname-aware certificate validation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2663 * Add event projection and interning for reactive event store queries by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2664 * Add Tor connection timeout with graceful fallback to regular connection by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2665 * Add NestLobbyScreen for read-only room preview before joining by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2666 * Refactor NestActionBar UI layout and state handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2667 * Add chat composer to nest lobby screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2669 * Claude/update nestlobby chat layout jimq w by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2670 * Refactor NestLobbyScreen layout: move header outside LazyColumn by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2671 * Refactor relay integration docs: EventCollector pattern and lifecycle management by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2672 * Fix double padding in two-pane chat layout by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2673 * Gate Nest room launches by liveness status by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2674 * Keep screen on during active nest room connections by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2675 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2668 * Auto-scroll to newest messages in chat when new messages arrive by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2676 * Add prod nostrnests.com audio transmission diagnostic tests by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2677 * Sustained-cadence test: dump partial arrivals + gap pattern by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2678 * Claude/audio transmission tests z kzl b by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2679 * Downgrade "Zap Request not found" log from error to debug by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2680 * Jump-to-parent icon on replies in Full UI mode by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2682 * Add restore-default button to bottom nav settings by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2681 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2683 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2684 * Fixes some dropped frames in audio calls by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2686 * Final fix on missed audio frames. by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2687 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2685 * Claude/audio transmission test learnings by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2688 * Fix race conditions and improve resilience in MOQ-Lite subscribe/broadcast by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2689 * Improve Nest room UX: loading states, error handling, and performance by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2690 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2691 * Fix flaky test by waiting for mute state instead of start count by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2692 * Switch audio playback to USAGE_MEDIA for hands-free rooms by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2693 * Add section headers and compact view for Nests feed by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2694 * fix: drop redundant StopBroadcastButton from nest action bar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2695 * feat: animate local speaker ring from MoQ frame transmission by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2696 * fix: use LocalActivity to resolve NestActivity (lint ContextCastToActivity) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2698 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2699 * Off-by-one error in PoW evaluator by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2697 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2702 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2703 * fix(quartz): bound Tlv.parse against malformed naddr/nevent/nprofile by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2704 * Save downloads: validate Content-Type & support PDF downloads by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2711 * desktop: verify event signatures on receive by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2705 * feat(electrumx): add bare IP peer for relay.testls.bit (23.158.233.10) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2709 * feat(electrumx): add relay.testls.bit endpoints (clearnet TLS + Tor) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2708 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2713 * feat(namecoin): resolve `import` items per ifa-0001 (NIP-05 only) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2707 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2715 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2717 * Generate poster JPEGs and fix HLS video rendering in profile gallery by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2716 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2718 * Add SurgeDns: burst-tolerant DNS resolver for OkHttp by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2714 * feat(desktop): Multi-Account Support + Feed Metadata Optimization by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2656 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2723 * Add bulk unblock/unmute functionality to Security Filters by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2721 * chore: convert interpolated Log calls to lambda overload + restore throwables in Marmot catch blocks by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2720 * fix(nip46): fix bunker decrypt/encrypt parsing and increase timeout by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2719 * Add animated outer ring indicator for speaking participants by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2724 * Add grace period to lifecycle-aware subscriptions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2726 * Handle Android 12+ ForegroundServiceStartNotAllowedException gracefully by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2727 * Replace KeyDataSourceSubscription with LifecycleAwareKeyDataSourceSubscription by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2728 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2725 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2729 * Add keep-alive mechanism to reconnect disconnected relays by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2730 * debug(nests): wire NestRx/NestTx logs across listener and speaker paths by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2731 * Refactor settings screen UI with card-based layout and improved styling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2732 * Eliminate audio gaps during JWT refresh and improve network resilience by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2733 * Fix header protection sampling for short QUIC payloads by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2734 * Add notifications for Marmot group messages (kind:445) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2737 * Add IME padding to MessagesTwoPane Scaffold by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2735 * Fix race condition in ReconnectingNestsListenerTest frame delivery by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2738 * Cache vlc-setup downloads in desktop CI by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2736 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2739 * Optimize CI builds and reduce APK size with Gradle caching and font subsetting by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2741 * test(quartz): widen NIP-40 expiration buffer to outlive insert race by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2742 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2740 * Upgrade schnorr256k1Kmp dependency to 1.0.5 by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2744 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2743 * Make NostrClientRepeatSubTest more resilient to relay behavior by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2746 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2745 * Correct '_@' display in profile header + centralise wildcard rule by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2747 * Pre-fetch VLC and UPX archives to improve build reliability by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2748 * Plan: cross-stack interop test (T16) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2749 * Add audio format negotiation and cliff detection for Nests by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2750 * Implement stream priority scheduling for QUIC writer by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2751 * Replace cliff-detector cooldown with per-attempt backoff schedule by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2752 * Fix avatar glow/ring clipping and energy-gate speaking indicator by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2753 * Fix NestViewModelTest hanging by properly tearing down VMs by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2754 * Add stereo audio support to nests speaker broadcasts by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2755 * Downgrade VLC version to 3.0.20 due to Maven artifact availability by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2756 * test(quartz): add :quartz-test-relay for in-process Nostr relay testing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2757 * test(nests): add cross-stack interop test suite (Phases 1-3) by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2763 * Add QUIC interop runner support and observability infrastructure by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2764 * Scheduled Posts (Android) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2765 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2766 * Scale relay to 10k+ concurrent connections with streaming JSON parsing by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2767 * Increase Gradle daemon JVM heap memory from 4GB to 6GB by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2768 * Implement event ingestion batching with group commit and parallel verify by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2769 * Close moq-relay routing investigation; harden interop assertions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2770 * NIP-77: strfry-interop snapshot path with bounded sync by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2771 * Add FilterIndex for inverted-index fanout dispatch by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2772 * feat(quic): retire fully-settled streams to keep tracker bounded under audio-room churn by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2773 * test(quartz): make repeat-sub test tolerant of resub timing race by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2774 * fix(scheduled-posts): explicit POST_NOTIFICATIONS check before notify by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2775 * Fix plural string formatting in Brazilian Portuguese translations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2776 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2777 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2784 * feat(desktop): custom feeds system with creation, discovery, and author search by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2778 * Various language fixes to scheduled posts by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2779 * fix(desktop): make error messages selectable so users can copy them by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2781 * Lint and sonar cleanup on scheduled-posts by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2782 * Add copy-to-clipboard functionality for payment targets by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2783 * Add option to disable NIP-89 client tag in published events by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2785 * Add local Blossom cache bridge for transparent media proxying by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2786 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2787 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2788 * fix(desktop): make the single-pane navigation rail scrollable by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2780 * feat(quartz): NIP-9A community rules parser + validator (kind:34551) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2758 * Port Namecoin NIP-05 resolution to Desktop app by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/1914 * fix(quartz): drop empty/whitespace-only imeta values by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2792 * Implement RFC 9000 §9 client-initiated path validation and DCID rotation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2793 * Rename lock fields to reflect their specific purposes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2795 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2794 * Plan: Local Bitcoin headers explorer for NIP-03 OTS verification by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2796 * feat(notes): show stale-relay hint on replaceable events using NIP-66 cache by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2797 * Security hardening and performance improvements across QUIC stack by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2802 * feat(namecoin): distinguish malformed-JSON values from missing-field by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2801 * feat(community): validate posts against NIP-9B community rules in composer by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2798 * feat(community): structured NIP-9B rules editor in new-community flow by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2799 * feat(community): opt-in NIP-9B feed filter for community moderation by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2800 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2803 * QUIC: audit follow-ups — RFC 9002 loss timer, AEAD allocation, SETTINGS validation by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2805 * QUIC: audit closeout — TLS PSK fallback, AEAD allocation, PSL subset, ECN by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2806 * Clean up documentation and organize constant definitions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2807 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2804 * perf(quic): lock-free hot paths — ThreadLocal Cipher, AtomicReference close, @Volatile getters by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2808 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2809 * feat(note): copy raw JSON from note dropdown by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2811 * fix: redact secrets and sensitive payloads from debug logs (Quartz/Amethyst) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2812 * Add Favorite Feed Algorithms to bottom-bar catalogue by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2810 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2813 * RFC 9000/9001 compliance audit: connection lifecycle, flow control, AEAD limits by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2815 * moq-lite Lite-03/04 compliance audit: wire-compatible codec & session fixes by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2816 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2814 * fix(gallery): forward imeta hashes through gallery by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2817 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2818 * Rich imeta on every published HLS event + auto-published kind:1 sibling by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2821 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2823 * Update translations and the find missing translations skill by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2822 * Align favourites icon, add to default bar, redesign empty state by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2820 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2824 * feat(desktop): embedded local relay with SQLite event persistence by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2841 * Add GIF keyboard uploads to chat composers by @coreymull in https://github.com/vitorpamplona/amethyst/pull/2834 * Fix hidden DM unread badge after blocking users by @skotchdopolepet in https://github.com/vitorpamplona/amethyst/pull/2828 * Configure report warning threshold by @skotchdopolepet in https://github.com/vitorpamplona/amethyst/pull/2830 * Show two-stage zap progress by @skotchdopolepet in https://github.com/vitorpamplona/amethyst/pull/2831 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2838 * Add LAN video casting via Chromecast (Google Play flavour only) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2842 * docs: add CONTRIBUTING.md and PR template by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2844 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2843 * Add CONTRIBUTING-WITH-AI.md companion guide by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2845 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2848 * Fix avatar oval distortion in narrow grid cells by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2851 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2853 * Add preferences for home feed tab visibility by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2850 * Fix coroutine scope for async broadcast operations in room actions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2852 * Split notifications: Following vs Everyone by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2855 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2856 * Optimize Compose state management and flow subscriptions by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2857 * Refactor participant sheet: extract sub-composables, add confirmations by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2858 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2859 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2860 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2864 * contributing-with-ai: add 8 rules surfaced by recent feature PR by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2865 * Refactor homeHasNewItems to respect tab visibility settings by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2867 * Fix Blossom bridge to only rewrite last path segment as SHA256 by @greenart7c3 in https://github.com/vitorpamplona/amethyst/pull/2866 * Sonar cleanup — mechanical refactors only by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2863 * Client-side thread mute (NIP-51 kind-10000 e tags) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2862 * Preserve image URLs in CJK translations (#1180) by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2869 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2870 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2871 * Refactor relay broadcast logic for personal and channel events by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2872 * Round-5 performance & security: frame decode, HP, AEAD, resumption by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2873 * Add compose settings screen with auto-draft creation toggle by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2874 * Make timestamps toggleable between relative and absolute formats by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2875 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2876 * Add profile UI settings to customize visible sections and feeds by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2877 * Refactor SecurityFiltersScreen into modular settings screens by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2878 * docs(community-rules): rename NIP-9A -> NIP-9B (upstream slot collision with #2194) by @mstrofnone in https://github.com/vitorpamplona/amethyst/pull/2879 * feat: show bottom nav on Favorite Algo Feeds screen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2881 * fix: pad zoomable dialog pager dots above gesture/nav bar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2882 * fix(nests): cap AudioTrack ring at ~250 ms so audio tracks the speaking-now ring by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2883 * feat: add audio playback support for .f4a files by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2885 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2880 * Defer image cache eviction unlinks to background thread by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2888 * Add technique-layer Compose and Kotlin skills by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2889 * feat(nests): add a zap button to the room action bar by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2887 * Add bottom navigation bar to ScheduledPostsScreen by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2890 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2886 * Display external identifier scopes in NIP-22 comments by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2891 * Fix IME padding in HiddenWordsScreen using WindowInsets by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2893 * Move packaging/appimage to desktopApp/packaging/appimage by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2894 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2892 * Remove speaker reordering in stage grid to prevent UI shuffle by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2895 * Invert client tag setting: add instead of disable by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2896 * Move drag gesture detection to icon Box in VideoPlayerButtonItemCard by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2897 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2899 * bugfix: break a-tag cycle in computeRelayListToBroadcast by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2900 * Drop stale groups on reconnect to prevent audio replay by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2898 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2901 * Favourite feeds: clearer empty state + pinned "Add more…" CTA by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2903 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2902 * Replace ConcurrentRequestStrategy.UNCOORDINATED with DeDupeConcurrentRequestStrategy by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2904 * Release v1.09.0: We are going crazy by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2905 * Fix QUIC handshake timeout, IPv4 preference, and SNI handling by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2906 * Refactor ComposeSettingsScreen to use unified tile components by @vitorpamplona in https://github.com/vitorpamplona/amethyst/pull/2907 * New Crowdin Translations by @github-actions[bot] in https://github.com/vitorpamplona/amethyst/pull/2909 * fix(desktop): Account security hardening — NWC to keychain, single source of truth by @nrobi144 in https://github.com/vitorpamplona/amethyst/pull/2908 * Stop reporting verification errors as Verified by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2911 * Resolve quoted notes via author's NIP-65 outbox by @davotoula in https://github.com/vitorpamplona/amethyst/pull/2910 ## New Contributors * @dependabot[bot] made their first contribution in https://github.com/vitorpamplona/amethyst/pull/2431 * @coreymull made their first contribution in https://github.com/vitorpamplona/amethyst/pull/2834 * @skotchdopolepet made their first contribution in https://github.com/vitorpamplona/amethyst/pull/2828 **Full Changelog**: https://github.com/vitorpamplona/amethyst/compare/v1.08.0...v1.09.0
  • Apr 1, 2026 1.08.0
    - Migrates C Tor to Arti Tor (hopefully no more random crashes) - Fixes highlight of users when composing and tagging
  • Apr 1, 2026 1.07.5
  • Mar 31, 2026 1.07.3
    - Migrates Shorts UI out of a paged design - New edge-to-edge feed for Pictures only - New edge-to-edge feed for Shorts only - New edge-to-edge feed for long Videos only - Migrates Badges to kind 10008 - Migrates Bookmarks to kind 10003 - Fixes AOSP keyboard auto-correction bug - Fixes Poll's top nav filter - Fixes loading of Bookmark sets - Fixes sorting stability by including event ids
    More…
    - Fixes cursor position in quote post field - Fixes rendering of nostr: uris when composing notes - Adds Basic support for reaction notifications - Refactors NIP-58 Badges on Quartz - Refactors LocalCache methods - Improvements to the Chess engine (debug only) - Add error handling to Tor service initialization and control
  • Mar 30, 2026 1.07.2
    - Adds GIF uploads support from Keyboard - Migrates text fields and @ modifiers to the new Jetpack Compose states - Fixes Bug that wasn't openning Amber to sign - Fixes Bug on rejections using old Ambers - Replaces hex input with user search dialog in relay management (allow/ban user)
  • Mar 30, 2026 1.07.1
    Fixes
  • Mar 25, 2026 1.06.3
    Improvements to Anon Posting and Reply navigation on DMs
  • Mar 23, 2026 1.06.1
    Improvements to the rendering of Polls. Solves some of the crashes of the concurrent modification exception Fixes URL parsers with Japanese chars Fixes Wallet import from Primal on Poco phones Improves the wording of the Last Seen Fixes for "Cannot disable reuse from root if it was caused by other groups" Fixes comparator to avoid Comparison method violates its general contract! Improves zap-store settings
  • Mar 23, 2026 1.06.0
    Polls: - Adds support for creating and rendering NIP-85 - Redesign of the poll and zap poll cards - Adds special notification card while the poll is running Relay Feeds - Adds support for rendering relay feeds - Adds support for NIP-51 favorite relay feeds - Shows favorite relays in the top navigation filter - Clicking wss:// links shows the global feed for that relay.
    More…
    - New user account adds nostr.wine to favorite relay feeds Media Player - Redesigned player controls for videos, audios, and picture-in-picture. - Adds our own buttons and indicators for the video playback - Adds Music support with waveform animations - Migrates to new Media3 content view frames - Improved Picture in Picture actions - Turn video controller creation into a flow to fix playback lifecycle issues - Adds support for uploading audio NWC Wallets: - Adds support for NIP-47 Wallets and compete NWC spec - Adds views for Balance and Transactions - Add transaction filtering and pagination to wallet screen - Added several test cases from other repos to guarantee interoperability Calendar: - Adds support for NIP-52 Calendar appointments - Adds proper display of calendar time slot and date slot events in the note feed - Refactored the early implementation on Quartz for easier use Code Snippets: - Adds support for NIP-C0 Code Snippets - Replies using NIP-22 NIPs on Nostr - Adds support for event kind 30817 - Replies using NIP-22 PayTo: - Adds support for NIP-A3 Payment targets by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 Blossom BUD-10: - Adds support for "Blossom:" URIs on the post - Supports automatic discovery of blossom servers - Renders/Previews images, audios, videos, and documents - Includes support for encryption when using it in NIP-17 DMs. Expirations - Adds enhanced support for custom expirations in any new post. - Displays expirations on posts and DMs Relay Monitors: - Adds support for NIP-66 Relay monitor and discovery support to Quartz Attestations: - Adds support for rendering Attestations (https://attestr.xyz/) - Recommendations, Requests and Attestor Declarations are also included. Chess: - Adds basic support for Chess with Jester protocol - Full chess game implemented - Supports for game challenges and view external games - Running on debug only for now DMs: - Removes NIP-04 DMs - Blocks DM sending if the receiver doesn't have NIP-17 relay lists. - Removed incognito icon from the new post field. Push Notifications: - Adds support for inline reply - Adds support for notification grouping - Adds support for Async image Loading - Removed NIP-04 notifications Long Form: - Adds support for writing Long Form/Markdown content - Includes support for automatic Draft saving and editing - Includes support for editing Uploads: - Adds support to upload Documents to all new post screens. - Adds toggle to stip file metadata regardless of compression by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Adds encrypted file upload fallback option for NIP-17 chats - Removes support for NIP-96 and updates Blossom recommendations Content Warning: - Adds an optional description field for sensitive content warnings in new posts. - Displays additional information on warning composables Settings redesign: - Consolidate drawer settings into a single Settings hub screen - Redesigns Zap Amount and NWC setup screens - Redesigns Custom zap amount screens - Adds brand new Translation Settings screen - Adds blockchain explorer settings page for OTS verification - Adds reactions row settings (enable/disable, order, show/hide counters) by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 - Tapping on Zap without any pre-configured amount opens the custom dialog Content parsers: - URL/URI parser rewrite in Kotlin multiplatform (KMP) - Fixes characters attached to URLs or nostr URLs without a space - Massively increases parsing performance - Treat multibyte characters as URL terminators in RichTextParser by @npub1k0jrarx8um0lyw3nmysn50539ky4k8p7gfgzgrsvn8d7lccx3d0s38dczd - Adds a parser for blossom: uris UI Improvements: - Minimizes parent thread rendering in quoted notes by @npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx - New Material 3 UI for DropDowns by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - New Material 3 UI for feed filters by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Draft Screen requests confirmation before deleting drafts on swipe - Swipe to switch tabs. Main screen and messages by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Adds support for rendering Zap events when quoted inside of posts. - Adds a Broadcasting feedback pop-up in the Complete UI mode Relay Management: - Adds relay search tooltip when adding relays - Adds the list of keys using each relay to the relay information - Adds active subscriptions and outbox event in the queue to relay information - Adds a complete list of event kind names to the subscription card to relay information - Tracks and displays connection success rate on relay settings - Adds relay settings export functionality - Adds NIP-45 count queries to show how many events each relay has. - Adds Relay sync utility to help users move posts between relays. Search: - Breaks the search filter into two subscriptions to prioritize Metadata without punishing content. - Fixes the need to start user searches with @ in user fields - Fixes the stability of the search feed when the user navigates away and back. - Replaces about me for NIP-05 in the user search results - Adds relay URL search to the search page - Forces returning one user when searching by nip-05 - Removes outdated versions of addressables from the search results Profiles: - Adds support for NIP-39 External Identities with kind 10011 - Adds a profile picture upload button when the user has no picture - Adds last seen to the user profile - Adds nprofile and npub copy options to the profile - Groups received zap amounts by sending the user in the profile tab - Increases the limit of Zap downloads for profiles to 1000 - Simplifies profile edit screen layout by @npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx - Migrates profile galleries to display a thumbnail for videos - Fixes profile galleries' aspect ratios - Adds support for Namecoin .bit urls to NIP-05 and choice of ElectrumX server to resolve namecoins. Onboarding - Adds bulk follow screens to search for a user and to copy his/her follow list Voice message by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Adds voice anonymization - Change from "hold to record" to "click to start, click to stop" - Display kind 1 voice replies as an audio waveform - Increases max voice record duration to 600 seconds - Switches the public message event to use quoted posts for replies Fixes: - Fixes "forked from" label rendering over the name - Avoids crashing when the `k` tag cannot be parsed to a number - Only use Voice Reply events when replying to voice notes. Others just receive a URL. - Fixes the lack of update in the follow count on the UserProfile page - Fixes out of memory when downloading large videos - Fixes Jackson deserialization for empty Filters and add regression test by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 - Fixes NullPointerException when the filter contains tags - Fixes download cancellations when screen components disappear - Migrates to use "title" instead of "name" tags for NIP-51 lists - Adds a longer crop for npubs so that we can see vanity keys better - Fixes the need to have tags and kinds for inbox.nostr.wine to work - Blocks the size of Relay Auth Status arrays from growing forever with auth messages - Fixes crash when getting OpenGraph tags of invalid URLs - Fixes NIP-44 key mutation in NIP-46 connect - Location permission watcher moved outside screens to avoid recreation - Solves the sorting contract crash on search by precaching all values before sorting users. - Fixes lingering relay connections from loading follows outbox's settings. - Enhance NIP-38 user status display with emoji support and metadata tags - Fixes bug on Show More calculations for very long texts without spaces - Fixing IO Dispatchers and coroutine scopes of choice - Fixes anySync parallel operation that was returning the first result, not the first positive "any". - Fixes Req onCannotConnect listeners to the relays that actually sent the req - Fixes hanging subscriptions when exceptions happen during NostrClient utility methods Defaults: - Switches wss://nostr.band to wss://antiprimal.net, wss://relay.ditto.pub on app defaults - Adds wss://nostr.wine, wss://news.utxo.one as favorite relay feeds - Adds wss://directory.yabu.me and wss://profiles.nostr1.com as index relays - Adds electrumx.testls.space, nmc2.bitcoins.sk, 46.229.238.187 and i665jpwsq46zlsdbnj4axgzd3s56uzey5uhotsnxzsknzbn36jaddsid.onion as ElectrumX servers Quartz: - Adds Relay Server implementation with NIP-45 COUNT and NIP-42 AUTH support - Adds support for dynamic auth policies to the relay implementation. - Migrates Quartz EventStore from Android-only to KMP - Adds a reqUntilEoseAsFlow extension to the Nostr Client - Adds a reqBypassingRelayLimits extension to the Nostr Client - Adds comprehensive NIP-46 Bunker support - Adds comprehensive support for NIP-47 non-payment methods. Adds complete support for iOS to Quartz by @npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k - Provide implementation for Rfc3986 on iOS, using the Swift Rfc3986UriBridge. - Provide implementation for LargeCache, using a CacheMap - Provide implementation for fastFindURLs() - Provide implementation for makeAbsoluteIfRelativeUrl() in ServerInfoParser.ios.kt - Provide implementation for UrlEncoder - Provide implementation for UnicodeNormalizer - Provide implementation for GZip compression/decompression. Some small fixes in URLs.ios.kt - Provide implementation for AESCBC - Provide implementation for AESGCM - Provide implementation for DigestInstance - Provide implementation for LibSodium Amethyst Desktop by @npub12cfje6nl2nuxplcqfvhg7ljt89fmpj0n0fd24zxsukja5qm9wmtqd7y76c - Adds NIP-46 Bunker Login - Adds Support for Chess - Adds Thread Screens - Adds advanced search with query engine and filter panel - Adds encrypted DMs (NIP-04/NIP-17) - Adds proper empty states with EOSE tracking - Adds multi-column deck layout - Adds Full media parity — images, video, audio, encrypted DMs, upload, lightbox - Adds advanced search with NIP-50, collapsible sections, and nav state preservation - Clear stored credentials on logout - Adds bunker heartbeat indicator - Adds QR-based signer pairing - Migrates lifecycle-viewmodel KMP dependencies to KMP/Commons - Migrates drawReplyLevel modifier to KMP/Commons - Migrates ThreadFilter to KMP/Commons - Migrates Card interface and CardFeedState to KMP/Commons - Migrates Channels (public chats, ephemeral channels, and live streams) Account modules to KMP/Commons - Migrates private chatroom models to KMP/Commons - Migrates reports states to KMP/Commons - Migrates Emoji State to KMP/Commons - Migrates lud06 to lud16 mapping to KMP/Quartz - Migrates the new LocalCache observables to KMP/Commons - Migrates rich text parser from JVM to KMP/Commons Code Quality - Migrates to AGP 9.0 - Adds Amethyst Desktop to CI/CD and Release builds - Removes the in-app memory counter methods - Refactors the old NIP-05 code on Quartz - Migrates contact list management to addressable notes - Creates new observable flows for LocalCache. - Moves metadata methods from User to UserCache objects - Separate Addressable vs Replaceable event class bases - Avoid dependency on AccountSettings for NwcSignerState - Finishes the transition to EventHint objects for building events. - Lots of code review fixes by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Large accessibility review by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Moves Top Nav Filter markers from Strings to full objects. - Removes support for feed definitions - AccountState refactoring AI: - Add SKILL.md for AI agent customization - Add settings and hooks to setup Android Development for the agent Updated translations: - Czech, German, Swedish, and Portuguese by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Hungarian by @npub1dnvslq0vvrs8d603suykc4harv94yglcxwna9sl2xu8grt2afm3qgfh0tp - French by @npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz - Polish by @npub16gjyljum0ksrrm28zzvejydgxwfm7xse98zwc4hlgq8epxeuggushqwyrm - Hindi by @npub1ww6huwu3xye6r05n3qkjeq62wds5pq0jswhl7uc59lchc0n0ns4sdtw5e6 - Slovenian by @npub1qqqqqqz7nhdqz3uuwmzlflxt46lyu7zkuqhcapddhgz66c4ddynswreecw - Bengali by @npub13qtw3yu0uc9r4yj5x0rhgy8nj5q0uyeq0pavkgt9ly69uuzxgkfqwvx23t - Chinese by hypnotichemionus4 - Spanish by @npub1luhyzgce7qtcs6r6v00ryjxza8av8u4dzh3avg0zks38tjktnmxspxq903
  • Jan 9, 2026 v1.05.1 Release page →
    - Fixed mixed DMs between logged in users. - Fixed draft screen click to edit post.
  • Jan 8, 2026 v1.05.0 Release page →
    This release introduces Bookmark List management, a complete overhaul of Voice Notes/YakBaks, and the debut of Web of Trust (WoT) scores for a safer social experience. This version adds support for creating, managing, deleting, and viewing multiple bookmark lists, which include both public and private members. You will find an improved "Bookmarks" menu option in the sidebar and extra bookmark options in the context menu of each post, allowing you to add posts directly to one or more individual lists. The Voice Notes UI has been redesigned to allow recording directly within the new Post Screen and a dedicated Voice Reply screen. Users can record a new voice message, preview it with waveform
    More…
    visualization, re-record if needed, select a media server, and post the reply. You now have full control. Amethyst now supports Trusted Assertions. By connecting to a WoT provider, you can see trust scores and verified follower counts directly on user pictures. This helps filter signal from noise, identifying reputable accounts to follow, which DMs to open, and which notifications to prioritize. To activate this, you will need to find a provider capable of computing these scores. While providers are currently limited and resource-constrained, we hope more will bring their own algorithms to Nostr over time. Quartz received a significantly improved database engine capable of sub-microsecond queries using Android's default SQLite database. The engine is optimized for mobile environments, using as little memory as possible to avoid impacting other apps. In the background, we have begun building Amethyst Desktop. While much work remains, the goal is a standalone, mouse-first application that moves away from mobile-centric UI layouts. New Features - Trusted Assertions: Added support for trust scores displayed on user profile pictures - WoT Followers: Displays verified follower counts in user profiles - Bookmark Lists: Full support for custom lists by @npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k - Relay Information: New UI with expanded NIP-11 feature support - Voice Notes & Replies: Redesigned experience by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Profile Banner: New default banner by @npub1tx5ccpregnm9afq0xaj42hh93xl4qd3lfa7u74v5cdvyhwcnlanqplhd8g - Native Links: Intercept njump, yakihonne, primal, iris.to, zap.stream, and shosho.live to open directly on Amethyst by @npub1lu4l4wh7482u8vq0u63g2yuj8yqjdq8ne06r432n92rnd22lspcq0cxa32 Improvements: - New in-memory graph-based cache scheme; moved reports and WoT scores to this new system - Disabled top bar reappearance to prevent feed shifting when navigating between pages - Lenient Kotlin Serialization to prevent crashes from malformed JSON; - Removed expired addressable events from cache - Moves reports from the old caching system to the new Graph-based one. - Reverted to a 500-post load limit for Profile screens to handle high-reply accounts - Moved the QR Code screen from a Dialog to a full Route. - Re-adds name as a tagging name to the profile edit page. Performance: - Faster event id checker by serializing, sha256 hashing, and ID comparison without creating any intermediary buffers. - Faster event JSON parsers by avoiding new variables and thus garbage collection calls - Faster tag array Deserializer - Manages the pool state without having to loop through relays, saving some milliseconds of processing. - Adds a cache system for WoT scores - Improved Compose stability for video UI BugFixes: - Fixes JSON serialization of UTF-8 Emoji surrogates for compatibility with standard Nostr implementations - Improves error message on zap configuration errors with detailed NWC URI by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Centers QR dialog content and reduce excessive top spacing by @npub1qqqqqqz7nhdqz3uuwmzlflxt46lyu7zkuqhcapddhgz66c4ddynswreecw - Closes subscriptions when ending them on NostrClient instead of waiting for them to finish - Requires a relay to be an outbox/inbox relay to be able to NOTIFY a user of a payment - Improves the speed of parsing of invalid kinds inside an address string - Fixes count not working for LIMIT queries in the DB - Fixes icon bug with incorrect resource id by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Fixes missing updates to the feed when the top list is not yet available locally - Fixes List of supported NIPs as Integers on NIP-11 by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Fixes ConcurrentExceptions on event outboxes Desktop: - Base Compose Multiplatform Desktop App with posts and global/following feeds by @npub12cfje6nl2nuxplcqfvhg7ljt89fmpj0n0fd24zxsukja5qm9wmtqd7y76c Web: - New website by @npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424 Quartz: - Adds support for Trust Provider lists and Contact Cards for NIP-85 - Early support for Payment targets as per [NIP-A3](https://github.com/nostr-protocol/nips/pull/2119) by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 - Initial support for NIP 46 by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 - Adds support for fast MurMur hash 3 64 bits - Adds a nextLong secure random method - Removing the generalist approach of ptag-mentions - Removes deprecated fields in UserMetadata - Removes compose bom from Quartz to avoid unnecessary dependencies. - Removes datetime dependencies from Quartz - Adds dependency on coroutines directly (instead of through compose runtime) - Removes old secp256 target dependencies - Adds Default scope for NostrClient and Relay Authenticator Quartz-Event Store: - Moves from text tags to probabilistic 64-bit MurMur Hash3 integers for performance - Moves from range index queries to kind,pubkey queries by default. - Adds simpler SQL queries for specific simple Nostr filters - Expose SQL query plans, vacuum, and analyse to lib users - Implements AND Tag queries from [NIP-91](https://github.com/nostr-protocol/nips/pull/1365) - Implements GiftWrap deletions by p-Tag with deletions and vanish requests - Offers several indexing strategy options to users. - Adds several test cases that verify not only the SQL but also the indexes used - Exposes raw queries that return columns for relays that might not need the tag array - Forces the use of the index on Addressables and Replaceables on triggers - Fixes duplicated events being returned from the DB - Fixes unused Or condition in the SQL builder - Refine the structure of the module classes for the DB - Removes the Statement cache since statements are not thread safe - Creating interfaces for multiple EventStores Code Quality: - Updates kotlin, compose, multiplatform, activity, serialization, media3, mockk, secp256, tor, androidxCamera, stdlib - Adds a compose stability plugin to allow traces in debug - Updates to the latest Zapstore config - Updates quarts instructions in the ReadMe. Updated translations: - Czech, German, Swedish, and Portuguese by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Polish by @npub16gjyljum0ksrrm28zzvejydgxwfm7xse98zwc4hlgq8epxeuggushqwyrm - Hungarian by @npub1ww8kjxz2akn82qptdpl7glywnchhkx3x04hez3d3rye397turrhssenvtp @npub1dnvslq0vvrs8d603suykc4harv94yglcxwna9sl2xu8grt2afm3qgfh0tp - Hindi by @npub1ww6huwu3xye6r05n3qkjeq62wds5pq0jswhl7uc59lchc0n0ns4sdtw5e6 - Slovenian by @npub1qqqqqqz7nhdqz3uuwmzlflxt46lyu7zkuqhcapddhgz66c4ddynswreecw - Spanish by @npub1luhyzgce7qtcs6r6v00ryjxza8av8u4dzh3avg0zks38tjktnmxspxq903 - Latvian by @npub1l60stxkwwmkts76kv02vdjppka9uy6y3paztck7paau7g64l687saaw6av - Dutch by @npub1w4la29u3zv09r6crx5u8yxax0ffxgekzdm2egzjkjckef7xc83fs0ftxcd - French by @npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz and Alexis Magzalci - Chinese by @npub1gd8e0xfkylc7v8c5a6hkpj4gelwwcy99jt90lqjseqjj2t253s2s6ch58h
  • Nov 15, 2025 v1.04.2 Release page →
  • Nov 15, 2025 1.04.0 Release page →
    This version adds support for creating, managing, deleting, and viewing follow lists, which include both public and private members. We've also added similar UI to support for creating, managing, deleting, and viewing follow packs from following.space, allowing you to assemble following lists not only for yourself, but also as a starter packs for other users. You will find a new "My Lists" menu option in the side bar and Follow buttons when extended behavior to add users directly into lists or packs. This version also introduces significant improvements to the quality of video compression and hash checks during media upload/download, along with new codecs and a new image gallery for displaying sequences of images in posts. The startup loading of outbox relay lists and user metadata for large follow lists (> 1000 people) has been significantly improved with new mechanisms to search for missing outbox relay lists. The Top Bar filter "All Follows" now merges all follow lists, follow packs, following hashtags, following geotags, and following communities into a single feed. Two new options were also added: "All User Follows," which includes only the main and other follow lists, and "Default Follow List," which is the standard follow list used by every client. Finally, we completed our Quartz migration to Kotlin Multiplatform, added significant performance improvements when processing events and running cryptographic procedures, as well as new ease-of-use extensions. New Features: - People List creation and management by nostr:nprofile1qqswc4nrhvp4lrjct0ayy0ps8f2hvj8e2guucp63dwcx6m6e8pka9fqpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qy08wumn8ghj7un9d3shjtnwdaehgu3wwa5hyetydejhgtn2wqhsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9ue5n65v
    More…
    - Follow Pack creation, management and feed view - Image gallery in posts by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Finishes migration of Quartz to Kotlin Multiplatform - New Filters in the top nav bar - Performance improvements across all features Improvements: - Adds support to rejection replies from NIP-55 signers by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk - Adds live/offline indicator to live bubbles by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Refines the video compression procedure by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Replaces MP4 parser libraries with native MediaMuxer / MediaCodec by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Adds a H.265/HEVC codec to reduce file size by up to 50% while maintaining the same quality by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Optimizes video file structure by moving metadata to the beginning, so videos start playing more quickly by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Adds "All User Follows" feed filter in the top nav bar that removes hashtags, communities and geotag follows - Adds "Default Follow List" feed filter in the top nav bar that contains only Kind 3 follows - Shows a dialog to select a signer when using multiple signers are present by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk - Saves bandwidth by avoiding constant REQ updates before EOSEs come back in a subscription - Changes the following icon on top of user's pictures to include follows in all lists and follow sets - Removes non-outbox relays from the outbox lists - Adds support bigger, up to 4GB, payloads in NIP-44 - Restructures the default REQ limits from each relay in all feeds - Adds a guarantee incoming message order to OkHttp websocket implementations to avoid EOSE mismatch - Only downloads DMs and Drafts if the account is writeable / nsec is present - Adds support for copying/cloning follow lists in the UI. - Adds a default relay list for indexers in new accounts with local backup - Smoothes the disappearing effect for the Top and Bottom navigation. - Adds support for NWC deep links and removes hardcoded Alby integration - Adds a missing outbox relay list popup on posting new notes - Adds a missing inbox relay list check on notification screens - Migrates to njump.to to disperse shareable links Quartz: - Migrates Quartz from Android to CommonMain (Kotlin Multiplatform) - Adds a maven publishing to ship quartz - Fully converts OpenTimestamp Java codebase to Kotlin, migrating the sync and async HTTP call interfaces to OkHttp and coroutines - Redesigns parsing of relay commands, messages and filters for performance in Jackson. - Uses KotlinX Serialization when speed is not a requirement - Migrates all Jackson field annotations to Kotlin Serialization - Migrates Regex use in Quarts to Kotlin's Regex class - Migrates Base64 library from Android to Kotlin - Migrates UUID library from Android/Java to Kotlin - Migrates LRUCache usage from Android/Java to Kotlin collections - Migrates all String to bytearray conversions to Kotlin methods - Migrates all System.arraycopy calls to kotlin native ones. - Separates parsing code from the data classes in Companion objects - Exposes Rfc3986 normalizations to each platform. - Exposes URI parsing classes to each platform. - Exposes URL Encoders to each platform. - Exposes BigDecimal to each platform. - Exposes the Url Detector to each platform. - Exposes Mac instances to each platform - Exposes Diggest instances to each platform. - Exposes BitSet to each platform. - Exposes GZip to each platform. - Exposes Secp256k1 to each platform. - Exposes SecureRandom to each platform. - Exposes Time in seconds to each platform. - Exposes the LargeCache to each platform. - Exposes AES CBC and AES GCM encryption/decryption to each platform - Migrate test assertions to Kotlin Tests - Exposes Address class to each platform because of the Parceleable requirement in Android - Creates our own ByteArrayOutputStream. - Removes threadsafe features inside our Bloomfilters because we don't need that consistency - Migrates UserMetadata parser from Jackson to Kotlin serialization - Removes @Static methods in each tag. - Adds an EventTemplate serializer - Removes the need for KotlinX Datetime - Adds support for LibSodium in the JVM desktop platform - Creates a shared test build for iOS targets - Increases the Bloom filter space to better use hints in the app. - Removes support for iOS in x86 - Creates a performant JacksonMapper just for NIP-55, which stays in the Android build only. - Keeps the event store in the android build due to the SQL Lite dependency - Removes @ syncronized tags in favor of Mutexes. - Improved sendAndWaitForResponse NostrClient method to properly account for returns from each relay. - Removes the need for GlobalScope and async calls - Removes the dependency on Jackson's error classes across the codebase. - Moves the hint to quote tag extension methods to their own packages. - Migrates NIP-06 and Blossom uploads to use Kotlin Serialization - Adds ease of use functions for the downloadFirst nostr client extension method - Refactors error logging in BasicRelayClient - Starts NostrClient in active instead of waiting for a connect() call - Adds initial test cases for NostrClient and extensions - Adds an option to ignore failed reconnection delays that should be used when the network settings change. - Adds a build template option for NIP-42 AUTHs - Moves quartz to Java 21 due to binary inconsistencies between the multiple builds of KMP (tests conflicting with main) - Adds support for COUNT relay messages - Treat COUNT as query only, not subscriptions in the NostrClient - Moves statistics collection out of the inner classes to be an external option for app developers instead. - Restructuring relay classes to maintain order of incoming messages for relay listeners - Defers all processing of incoming messages to coroutines via channels, freeing OkHttp's thread as soon as possible. - Simplifies the main relay class by using attached listener modules for each function of the relay client. - Migrate defaultOnConnect calls to become listener based and moved to NostrClients - Coordinates REQs so that if an update is required to be sent but the server has not finished processing events, waits for it to finish and sends it later as soon as EOSE or Close arrives - Correctly maintain the local and server state of each Req. - Avoid subsequent REQ updates before EOSE or CLOSE calls. - Refactors NostrClient authenticators to do complete operation as an optional module - Breaks down Relay Client modules (Auth, Reqs, Counts, Event submissions) in the Relay Pool class. - Creates listeners just for REQ subscriptions - Move statistics to outside the base relay class as a listener - Move logs to outside the base relay class as a listener - Better structures a Standalone Relay client - More appropriately communicate errors to the listeners - Remove relay states on listeners, move each to its own method - Removes the hardcoded Dispatchers on Quartz - Adds streaming hash utility function, follow the existing pool/worker design - Adds fast search for events and addresses in the Deletion Event - Adds an update method for to create a new event template from an event. Fixes and UI Improvements: - Changes the DVM feed to sort by follows that liked or zapped the DVM - Changes the icon of account preferences to translation for now - Improves click and long press interactions with the relay list item and status bar items - Fixes the visual references to communities and hashtags in the top right of the post - Removes disappearing top and bottom bars from settings screens - Fixes tall top bars on Ephemeral and Public Chat rooms - Fixes lack of live stream name on the top bar - Fixes animations to navigate from and to list screens - Fixes cursor behind the keyboard when typing long texts. - Fixes line wrap in the relay info top nav bar title - Moves message button to Profile Actions - Fixes User profile banner being off place in short images - Also fixes spacing of the Follow button - Adds an option to render a user gallery from hex keys instead of full User objects - Adds context to the highlights - Increases the contrast of placeholder text - Refines performance of the QuickAction menu bar - Fixes hidden words not being applied to NIP-04 DMs on notifications - Fixes not loading some event kinds in notifications - Fixes crash when updating a metadata with null name - Fixes crash when attempting to share an image that is still loading by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes disappearing stats on relay screen by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes proper switch between single and two-pane layouts on rotation by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes sendAndWaitForResponse never receiving a response by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk - Fixes NWC URI parsing bug by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes bookmark removal from Private/Public removing from both by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes OutOfMemoryError for large file uploads by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes DecryptZapRequest CommandType by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk - Fixes location being added to note even after deselecting it by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk - Fixes crash when trying to parse unparseable NIP-11s - Prevents resource leaks with file streams by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Removes any relay url that has a percent-encoded null byte, regardless of size - Forces streaming url online check when the stream is offline but the user enters the chat - Fixes duplicated loading of NIP-11 relay info by different parts of the screen - Fixes the new Video events as non replaceable, while keeping the old ones in the replaceable - Fixes crash on starting when the contentResolver is not ready yet. - Fixes addressable deletions deleting not only the past when updating feeds - Fixes long form previews when missing the author's picture - Fixes feed filter update when changing the top nav filter - Fixes crash when sorting with the same createdAt in the discovery feeds - Fixes reply routes when clicking in the Conversations tab when the event is a PublicChat, LiveStream or Ephemeral Chat - Fixes livestream chats appearing on home bubbles after the live stream is finished - Fixes not sending the live stream events anywhere when the stream doesn't have a relay set declared - Fixes animations when selecting Tor options in the privacy screen - Fixes animations jumping when loading privacy screen - Fixes the use of index relays and search relays to load users and events as well as become the default for global feeds. - Fixes mark as read when drafts are the latest message in the chat - Fixes showing blog posts in the future in the Discovery reads - Fixes crashing when comparing int and long in Live Events comparator - Fixes recompositions of subject add-on to text on rendering - Fixes crash on trying to change dont translate from options - Fixes NPE on the ln invoice callback with errors parser - Fixes parsing encrypted NIP-28 chats - Fixes disappearing relay stats (larger LRU cache) - Fixes sendAndWait nostr client coroutine that was waiting forever - Fixes lack of req by forcing an updateFilter at the start of new subs with the client. - Fixes bug that skipped loading follow's metadata on startup - Fixes issues when unfollowing a hashtag from old contact lists - Fixes relay list flickering bug - Fixes crash when checking and creating new users from `p` tags. - Fixes the author of the highlight - Fixes scope lifecycle of media uploads to avoid cancellation while uploading - Fixes parser for null and default values from NIP-55 using Jackson - Fixes relay icons not showing up when sending DMs - Fixes imeta parsing with multiple urls - Fixes relay-specific global feed matching incoming note checks - Fixes video progressive download by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fixes several usages of Reflection when serializing classes - Fixes a bug on loading event test database for the HintBloom filter test - Forces relay status updates when connecting and disconnecting - Only shows live stream bubbles that are not playing 24/7 with active follows in the past 15 minutes. - Opens Follow Packs on following.space Performance: - Restructures the parser and serialization of the relay messages and commands for performance - Speeds up the generation of Bech32 addresses - Migrates memory counters from Long to Int - Avoids using JSON parsers with DataStore to speed up loading time (loading the parser itself takes ~300ms) - Adds new benchmarks for NIP-44 operations - Reduces memory consumption for NIP-44 operations, avoiding GC - Faster Hkdf functions with less array copying and allocations (which can be impactful if the ciphertext is large) - Faster Mac calculations by avoiding array assemblies before calling the function - Faster Hash check calculations avoiding the creation of a separate bytearray to compare ids - About 30-40% event hashing performance boost by building the json by hand and skipping string encoders when not needed. - 30% Faster isHex for strings with precisely 32 bytes. - Loads the main account in parallel faster before the screen needs it - Merge expanding and checking HMac functions to avoid re-creating the Mac instance. - Separates EOSE cache for drafts alone. - Speeds up the loading of users in follow lists on start up - Speeds up OkHttp startup - Adds submap index queries to the addressable large cache - Performance improvement for the address serializer. - Adds a default cut off for notifications from random relays to 1 week ago. - Increases local video disk cache to 1GB - Defers the initialization of disk caches for videos and images to a few seconds after loading - Only listens to notification feed changes when the UI is visible - Separates a relay failure tracker to a module - Caches the User object for each Account to avoid being deleted by the soft reference on Local Cache - Moves all Dispatchers.Default to the IO threadpool because of the amount of Synchronized code in dependencies blocking heavy threads - Only download reports from the author's outbox relay if we have it (don't use our default bootstrapping relays for reports) - Keep a local cache of following geoshahes and hashtags in lowercase. - Don't intern signatures, content and stringified tags since they are not usually duplicated - Unifies the parser for the tag array across the app - Adds simplified extensions to create Requests from NostrClient - Adds a Start request callback to the request listener - Adds a req that returns the list of events in order of arrival - Adds a flatten straight into a set utility - Adds a decrypted people and follow list cache on the account class and updates TopNav to use the new caching - Creates slim ListItem composables - Marks address, user states, edits and channel metadata view models as Compose Stable - Removes unnecessary list of icons drawer rows, which affected Compose stability - Improves the composition of NIP-05 lines - Adds a pre-parser to find image galleries and video links before rendering. - Adds the user outbox relays when loading addressables by that user. - Avoids sending CLOSE to subs that are already closed. - Rejects additional urls with %20 and fixes "Wss" ones. Code Quality - Reduce http max requests when in emulator to avoid crashing by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Resolve intermittent CI build failures by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Fix benchmark apk location by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Change from runBlocking to runTest where appropriate by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Reduce errors in log: concurrent modification exception by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Moves the precision of mills to seconds on the isOnline Check - Migrates to use suspending routines for OTS, statuses and edit flows - Unify outbox calculation in the RelayOutbox loader - Refactors zap the devs card view - Creates an interface for NostrClient strategies - Adds an isMobileOrFalse flow in connectivity to speed UI updates - Removes one of the Application dependencies in viewmodel - Changes the Theme class to only take the preferred theme directly. - Adds dependency on NWC to Account to avoid linking directly with the Application class - Migrates Account management to an Application lifecycle to prepare for multi-account screens - Establishes a scope for each account loaded so that flows can be killed on sign off - Moves the event processor to the Account class - Creates an interface for the DualHttpClientManager to allow IDE previews - Removing the dependency on an application class from AccountViewModel - Removes dependency on the viewModel on AccountFeedStates - Moves account saving from StateViewModel to Account - Removes dependency on the application class from DecryptAndIndexProcessor - Changes the name and singleton of the nav to avoid confusing the auto import - Switches account cache to a flow to allow observers - Removes dependency in the Amethyst class from Playback calculator - Removes the dependency on windowSizeClass and displayFeatures to be passed in the global preferences of the app (which is activity independent) - Moves the OTS processor from Account's decrypt process to Application since it doesn't need the account information. - Separates Application dependencies into an AppModules class to create only after the OnCreate event. - Switches TorSettings to be per Application and not per Account anymore - Since TorSettings is now global, moves the okHttpClient determinations out of the Account-based classes into the Application. - Since TorSettings is now global, set's up Coil's image loader only once when creating the Application - Moves UISettings state to App Modules instead of viewmodel - Migrates TorSettings and UISettings to DataStore - New tor evaluator service for relay connections now uses all account's trusted relays and dm relays at the same time. - Migrates composable-state-based UISettings to Flow-based UI settings, while observing connectivity status - Removes the displayFeatures and windowSizeClass from the shared model - Fixes not requesting Notification Permissions for APIs older than Tiramisu in the FDroid flavor - Moves the NIP-11 document cache from singleton to the App Modules - Avoids using AccountViewModel to check NIP-11 Relay documents - Moves the UI Settings usage in composables to functions that do not observe the state since they don't need to refresh the screen when changed. - Refactors UI Settings screen to separate components and remove the sharedViewModel - Only starts Internal Tor if that option is selected in the TorSettings. - Turn TorSettings into a data class to observe changes to it - Drops the SharedPreferences ViewModel to use UISettingsFlow directly from App Modules - Reorganizes OTS Events after simplification of the OkHttp based on TorSettings. - Applies memory trimming service to all logged-in accounts at the same time - Adds a test for native vs libsodium chacha20 - Added test for emulator to set maxRequests to 128 to prevent crashing emulator by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Dumps the number of relay hints urls in the DB - Creates our own Coil Logger to minimize trash stacks in the logs - Adds a declared outbox lists for follows state - Removes the deprecated hacks to store communities, hashtags and geohashes on Contact Lists - Updates deprecated Clipboard manager - Updates emoji and user autocomplete state to use Account and avoid linking AccountViewModel - Refactors many viewModels to avoid using callback lambdas - Correctly marks EOSE for filters that are aligned with the Req State from NostrClient - Changes User loading features in a tentative to make them faster since they are used by all functions in the app. - Creates an Account follow list per Relay state that only includes shared relays as a better source of functioning relays Deprecations: - Removes fmt.wiz.biz from bootstrap relays - Removes void.cat from default servers by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Removes filestr share links - removes zapstr.live share links Updated translations: - Czech, German, Swedish and Portuguese by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx - Hindi by nostr:nprofile1qqs88dt78wgnzvaph6fcstfvsd98xc2qs8eg8tllwv2zlutu8ehec2cpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshszrnhwden5te0dehhxtnvdakz7ngjkr6 - Slovenian by nostr:nprofile1qqsqqqqqqp0fmkspg7w8d305ln96a0jw0ptwqtuwskkm5pddv2kkjfcppemhxue69uhkummn9ekx7mp0qywhwumn8ghj7mn0wd68ytnzd96xxmmfdejhytnnda3kjctv9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59ukk67fz - Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywgppamhxue69uhkx7npwvh8gmms9uq3vamnwvaz7tmwdaehgu3wvdaxzuewwpk82ue0qyghwumn8ghj7mn0wd68ytnzdahxgtch7lh5p - Hungarian by nostr:nprofile1qqs88rmfrp9wmfn4qq4kslly0j8futmmrgn86mu3gkc3jvcjl97p3mcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhkummnw3ezummcw3ezuer9wchsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0m7mtdy nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acspzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7c0ns2l - Spanish by nostr:nprofile1qqs07tjpyvvlq9ugdpax8h3jfrpwn7kr72k3tc7ky83tggn4et9eangpg3mhxw309ajxyartwdukjery09cxwctsd3ek6cnjdfnxs6t00pnhq7ttdvmkw7nsd3shxdrr0gery6nyva3h2ct0096kyerjw9jzummwd9hkutcprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0qyghwumn8ghj7mn0wd68ytnhd9hx2tcxdyhdq - Latvian by nostr:nprofile1qqs0a8c9nt88dm9c0dtx84xxeqsmwj7zdzgs739ut0q7770yd2larlgpzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcmf88sy - Dutch by nostr:nprofile1qqs82l74z7g3x8j3avpn2wrjrwn855nyvmpxa4v5pftfvtv5lrvrc5cpz9mhxue69uhkummnw3ezuamfdejj7tk0drp - French by nostr:nprofile1qqs8av5uzf4nv2q80chrmp3mj9a9dd6zjw4fmz56hsn2gzar72rxhtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcuvd26f - Chinese by nostr:nprofile1qqsyxnuhnymz0u0xru2watmqe25vlh8vzzje9jhlsfgvsff9942gc9gpr9mhxue69uhhyetvv9ujumt0d4hhxarj9ecxjmnt9uq3wamnwvaz7tmjv4kxz7fwvdu8qmrp0yhx7un89uq3gamnwvaz7tm4wvhxummnw3ezuamfdejj726jp9r - Thai by nostr:nprofile1qqsxdhmq2cke8xk6scfyxeyfj3dyancavg6xk0v50r023gec7vsrceqppemhxue69uhkummn9ekx7mp0qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhskamkgc - Persian by nostr:nprofile1qqsvq73w5j9kw573rtff6c3fyh953w45328n3625apdwc3548gr49gspzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qg3waehxw309ahx7um5wgh8w6twv5hsw0e34v Download: http://amethyst.social
  • Sep 2, 2025 1.03.0 Release page →
    #Amethyst v1.03.0: Built-in video recording New Features: - Adds "record and post video" button to new Post Screens by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef - Updates the User Profile's Relay List to an outbox version - Activates live streams to the top feed bubble - Enables the use of custom TextToSpeech Engines Improvements: - Improves the list of visible authors on live stream bubbles
    More…
    - Adds the error status to the URL normalizer to avoid checking it again - Adds a follow list state from kind 3 to keep following users in memory. - Moves from RelationshipStatus to ContactCard as per NIP update Fixes: - Removes crashing relay URIs with null-encoded bytes (%00) - Reverts to using androidLibrary plugin for Quartz until KMP publishing guidance is updated. by @npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k - Fixes product title when in a quoted post - Fixes live flag for streaming when the URL is not available anymore. - Fixes bug on opening the Relay Settings page with duplicated Trusted and Blocked relays. - Avoids NPEs in the maxOfOrNull iterator with concurrent lists - Assemble NIP-17 Crash Report properties as a table and crash as a code block - Improves the design of the Crash Report permission screen with a cancel button. - Adds basic support for expirations in DMs Updated Translations - Polish by @npub16gjyljum0ksrrm28zzvejydgxwfm7xse98zwc4hlgq8epxeuggushqwyrm - Hungarian by @npub1dnvslq0vvrs8d603suykc4harv94yglcxwna9sl2xu8grt2afm3qgfh0tp Download: http://amethyst.social