<oembed><type>rich</type><version>1.0</version><author_name>amethyst (npub142…3xrj0)</author_name><author_url>https://nostr.ae/npub142gywvjkq0dv6nupggyn2euhx4nduwc7yz5f24ah9rpmunr2s39se3xrj0</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>#Amethyst v1.09.0: We are going crazy&#xA;&#xA;- Go live on audio spaces (Nests)&#xA;- Marmot Group chats (WhiteNoise)&#xA;- Voice and Video calls (Noscall)&#xA;- PDF reader&#xA;- Favorite algo feeds&#xA;- HLS Video Uploads&#xA;- Schedule posts for later&#xA;- Cast videos to your TV (Chromecast)&#xA;- Mute a whole conversation thread&#xA;- Pull Notification (internal Pokey)&#xA;- Local LLMs (Pixel 9+, Samsung 25+, Xiaomi 15+)&#xA;- `amy`, a command-line Nostr client&#xA;&#xA;## Features&#xA;&#xA;- Voice and Video Calls (NIP-AC) — one-on-one and group WebRTC calls.&#xA;  - Full-screen incoming-call UI over the lock screen.&#xA;  - PiP, ringtone and vibration.&#xA;  - Proximity sensor support.&#xA;  - Bluetooth headset routing.&#xA;  - Camera switch.&#xA;  - Network resilience and default TURN servers.&#xA;  - Mid-call peer invites with a 30s timeout and per-peer status.&#xA;  - Settings toggle to disable calls.&#xA;- Audio Rooms / Nests (NIP-53) — a full revamp.&#xA;  - Live chat panel.&#xA;  - Reactions overlay and picker.&#xA;  - Listener counter.&#xA;  - Presence with publishing/onstage tags.&#xA;  - Hand-raise queue.&#xA;  - Host actions: kick, promote, demote, edit, close room.&#xA;  - Per-participant context sheet.&#xA;  - Scheduled rooms with a TimePicker and SCHEDULED badge.&#xA;  - &#34;Listen to recording&#34; CTA for closed rooms.&#xA;  - Share a room as `naddr1`.&#xA;  - Custom room themes and fonts (kind 30312).&#xA;  - Home live-bubble row showing follows broadcasting.&#xA;  - Host-leave confirmation and default-server prompt.&#xA;  - In-app lobby with a chat composer, gating room re-entry.&#xA;  - PiP that focuses active speakers.&#xA;  - Feed bucketed into Live / Scheduled / Recently ended, with live status verified by current presence.&#xA;  - Live audio-level speaker ring.&#xA;  - Keeps the screen on while connected.&#xA;  - Audio plays through the media volume stream.&#xA;- Marmot Encrypted Group Chats (MLS over Nostr / NIP-EE)&#xA;  - Create, join and leave groups.&#xA;  - Inline group rendering in Messages.&#xA;  - Member management with user search.&#xA;  - Admin grant/revoke.&#xA;  - Group info screen with picture, member list and per-relay freshness.&#xA;  - Auto-publish KeyPackage.&#xA;  - Reset Marmot State safety valve in Settings.&#xA;  - Full RFC 9420 compliance pass (P0/P1/P2).&#xA;  - External Commit flow.&#xA;  - Retained-epoch decryption for offline catch-up.&#xA;  - Required-capabilities advertised on groups; interop fixes for other Marmot clients.&#xA;  - Popup notifications for group messages (kind:445).&#xA;- Multi-account on Desktop&#xA;  - Account switcher dropdown in the sidebar and single-pane layout.&#xA;  - Add Account dialog and per-account logout.&#xA;  - View-only (npub-only) accounts.&#xA;  - Account removal switches to another account or logs out cleanly.&#xA;  - Encrypted local account storage (AES-256-GCM).&#xA;  - Display names and middle-truncated npubs.&#xA;- Schedule posts for later&#xA;  - Date/time picker and toolbar toggle in the post composer.&#xA;  - Dedicated screen and drawer entry to view, push or delete scheduled posts.&#xA;  - Background worker that publishes at the scheduled time.&#xA;  - Warning when scheduling without always-on notifications.&#xA;- Cast videos to your TV&#xA;  - Chromecast casting (Google Play build only).&#xA;  - Stop-from-phone button; the local player pauses while casting.&#xA;  - Cast button backfilled for accounts that already had video settings.&#xA;- Mute a whole thread&#xA;  - Mute thread entry in the long-press dropdown and quick-action sheet.&#xA;  - Muted threads listed in Security Filters with an unmute action.&#xA;  - Muted threads dropped from feeds, notifications and push delivery.&#xA;- Configurable home tabs&#xA;  - Choose between New Threads, Conversations and Everything.&#xA;  - Visibility toggles persist across restarts.&#xA;- Configurable bottom navigation bar&#xA;  - Pick which screens appear in the bottom bar.&#xA;  - Restore-default button in settings.&#xA;- Reply and Mention notifications (NIP-10 / NIP-22)&#xA;  - Dedicated Mentions channel.&#xA;  - Per-thread grouping.&#xA;  - Inline reply.&#xA;  - All content-event citations routed to Mentions.&#xA;  - Opt-in Following / Everyone tab split.&#xA;- Filter the home feed in place by hashtag, community, geohash and relay (no navigation away)&#xA;- Hashtag and geohash top-nav filters on Pictures, Shorts, Articles, Polls and Products&#xA;- NIP-22 comments on external content (hashtags, geohashes, URLs) render a typed reply-context chip and land in the conversations feed&#xA;- Interest Sets (NIP-51, kind 30015)&#xA;  - List, create, rename, delete and clone interest sets.&#xA;  - Public/private hashtag toggle.&#xA;  - TopNav filter chips.&#xA;- NIP-9A Community Rules&#xA;  - Structured rules editor in the new-community flow.&#xA;  - Post validation against community rules in the composer.&#xA;  - Opt-in moderation feed filter.&#xA;- PDF reader&#xA;  - Inline PDF previews in feeds.&#xA;  - Double-tap to toggle zoom.&#xA;  - Zoom-aware hi-res re-render for crisp pinch-zoom.&#xA;  - Download and save PDFs to Downloads/Amethyst.&#xA;- Multi-wallet NWC&#xA;  - Multiple wallets with a balance view.&#xA;  - Default picker, rename and reorder.&#xA;  - Dedicated Add Wallet screen with Connect Wallet / paste / QR scan.&#xA;- Favorite Algo Feeds filter in the Top Nav Bar&#xA;- Custom Post creation on Polls / Pictures / Shorts / Longs&#xA;- Custom Emoji Packs (NIP-30)&#xA;  - Browse Emoji Sets screen for discovering kind 30030 packs.&#xA;  - My Emoji List screen for managing your kind 10030 selection.&#xA;  - Modernized pack metadata screen with hero image and inline emoji/cover upload.&#xA;  - Public/private toggle when adding emoji.&#xA;  - Decrypted private emojis surfaced end-to-end.&#xA;- Dedicated drawer screens for more content types.&#xA;  - Standalone Articles, Products, Public Chats, Communities (NIP-72), Live Streams and Follow Packs screens.&#xA;  - Products screen defaults to &#34;Around Me&#34;.&#xA;- Richer live stream chat.&#xA;  - Inline clips (kind 1313) and raids (kind 1312).&#xA;  - Inline zap receipts.&#xA;  - NIP-75 zap goal pinned at the top.&#xA;  - Top zappers leaderboard.&#xA;  - Stream clips surfaced in the profile gallery tab.&#xA;- Content warnings on media.&#xA;  - Grid-level content warnings with distinct reasons.&#xA;  - Warning overlaid on the blurhash at media size.&#xA;- YouTube-style video quality picker.&#xA;  - Feed and PiP default to the lowest HLS resolution.&#xA;  - Fullscreen defaults to auto.&#xA;- HLS Video uploads (NIP-71)&#xA;  - Pick which renditions to upload.&#xA;  - See which file is currently uploading.&#xA;  - Optional cross-post as a kind-1 note.&#xA;  - Generated poster JPEG.&#xA;  - Blurhash and thumbhash on every video imeta.&#xA;- ThumbHash support alongside BlurHash&#xA;  - Used across events, uploads and the UI.&#xA;  - Forwarded when adding media to the gallery.&#xA;  - Upload failures to generate a blurhash/thumbhash are now surfaced.&#xA;- NIP-A3 Payment Targets (kind 10133)&#xA;  - Pay action on the note reactions row.&#xA;  - Payment-targets button on the profile.&#xA;  - Lightning address moved to the wallet setup screen.&#xA;  - Alt-text on payment-target events.&#xA;- Search power tools&#xA;  - Scope, source, follows and sort toggles.&#xA;  - Paste an `npub1…`, `nprofile1…`, `nevent1…`, `naddr1…` or `note1…` to jump straight to it.&#xA;- Markdown renderer — improved typography, blockquote gutter, table styling&#xA;- Polls&#xA;  - Single-screen creation with a poll-type selector.&#xA;  - Open/Closed tabs.&#xA;  - &#34;View results&#34; option (prevents voting after viewing).&#xA;  - Dismiss button on active-poll cards.&#xA;- Badge support Redesigned — You can now create, grant, manage and add/remove badges from your profile.&#xA;- Settings revamp&#xA;  - Modernized Settings screen.&#xA;  - Dedicated Profile UI settings page.&#xA;  - Compose Settings screen (auto-draft toggle).&#xA;  - Security Filters split into a hub with per-category screens.&#xA;- Tap a timestamp to toggle between relative (&#34;2h ago&#34;) and absolute date/time, driven by a single shared ticker&#xA;- Copy raw JSON of a note from the dropdown menu&#xA;- Stale-relay hint on replaceable events, using the NIP-66 relay cache&#xA;- Two-stage zap progress on the zap action&#xA;- Bulk-remove for blocked users and hidden words&#xA;- Jump-to-parent icon on replies in Full UI mode&#xA;- Configurable report-warning threshold&#xA;- `.f4a` audio playback&#xA;&#xA;## In AI-Ready phones (Pixel 9+, Samsung 25+, Xiaomi 15+):&#xA;- AI Writing Help — assistant in the new-post screen.&#xA;  - Tone suggestions, precomputed in parallel.&#xA;  - Auto language detection.&#xA;  - On-device option in Application Preferences.&#xA;- AI Alt-Text for images — on-device image description / labeling.&#xA;  - Suggestions appear in the upload sheet (Google Play build).&#xA;&#xA;## Desktop&#xA;&#xA;- Tor Support — full Tor support on the desktop app.&#xA;  - kmp-tor daemon and settings UI.&#xA;  - Per-relay routing.&#xA;  - `.onion` badge.&#xA;  - Restart-on-toggle.&#xA;  - Image loading via Tor.&#xA;- Multi-account&#xA;  - Sidebar account switcher.&#xA;  - Add Account dialog and per-account logout.&#xA;  - Encrypted account storage.&#xA;- Embedded local relay — an in-process relay with SQLite event persistence&#xA;- Custom feeds system&#xA;  - Create, pin and inline-switch between custom feeds.&#xA;  - Author search in the feed builder (relay NIP-50 + avatars).&#xA;- App Drawer with a categorized screen launcher&#xA;- Workspace management&#xA;  - Save, switch and restore workspaces.&#xA;  - Tabs, an editor and unified search.&#xA;  - Pin/unpin syncs to the active workspace.&#xA;- Namecoin name resolution&#xA;  - Namecoin lookups now resolve and surface in search.&#xA;  - Follows the `import` field of name objects (ifa-0001).&#xA;  - Added `relay.testls.bit` ElectrumX endpoints (clearnet TLS, Tor, bare IP).&#xA;- Native theming for macOS, GNOME, KDE and Windows (matches platform look and accent colors)&#xA;- Relay power tools&#xA;  - Dashboard and config editors.&#xA;  - Per-screen relay picker.&#xA;  - Persistent configuration.&#xA;  - Correct counts.&#xA;- Messages&#xA;  - Draggable divider.&#xA;  - Alignment polish and centered empty states.&#xA;  - Typography hierarchy and refined dividers.&#xA;- macOS polish&#xA;  - Dock / Cmd+Tab icon via the Taskbar API.&#xA;  - Apple-HIG squircle margins.&#xA;  - Transparent window icon.&#xA;  - Light-mode primary contrast.&#xA;  - Content extends correctly under the title bar.&#xA;- Reading layout — width-capped reading column with comfortable side margins for wide windows&#xA;- Compact UI&#xA;  - Search/Chat/Profile inputs.&#xA;  - Settings hierarchy normalized.&#xA;  - Tabs-first headers across Home / Reads / Notifications.&#xA;  - Whole-card hover on notes.&#xA;- Per-OS theming preview flag for testing macOS/GNOME/KDE/Windows looks locally&#xA;- Selectable error messages.&#xA;- Scrollable single-pane navigation rail.&#xA;- Fixes feed loading, repost rendering and Profile back-navigation visibility.&#xA;&#xA;## Amy (CLI)&#xA;&#xA;- New `amy`, a non-interactive CLI Nostr client.&#xA;  - Drives the same Quartz + Commons engine as the apps.&#xA;  - Available on macOS and Linux from the GitHub Release.&#xA;- Subcommands:&#xA;  - `account` / `use`, `profile`, `post`, `feed`, `notes`.&#xA;  - `dm send | list | await | send-file` (NIP-17, kind:14 + kind:15).&#xA;  - `marmot …`.&#xA;  - `store stat | sweep-expired | scrub | compact`.&#xA;- Cache-first reads from a local file-backed event store.&#xA;  - `relays.json` is gone — `kind:10002 / 10050 / 10051` events in the store *are* the config.&#xA;- Secure key storage.&#xA;  - Private keys move out of `identity.json` into the OS keychain or a NIP-49 encrypted file.&#xA;  - On-disk data restricted to owner-only.&#xA;- Color, human-readable output by default; `--json` opts in.&#xA;&#xA;## Quartz&#xA;&#xA;- Adds NIP-AC — WebRTC call signaling events (offer / answer / ICE / hangup / reject / renegotiate) over EphemeralGiftWrap, multi-device, group calls&#xA;- Adds EphemeralGiftWrapEvent (kind 21059) — replaces 20s expiration GiftWraps for call signaling&#xA;- Adds NIP-A3 Payment Targets (kind 10133)&#xA;- Adds NIP-82 Software Applications (experimental)&#xA;- Adds the AdminCommandEvent for audio-room kick (kind 4312)&#xA;- Adds the NIP-9A community rules parser + validator (kind:34551)&#xA;- Expands NIP-34 git collaboration coverage.&#xA;  - Repository State (kind 30618).&#xA;  - Pull Requests and PR updates (kinds 1618 / 1619).&#xA;  - Git Status events (open / closed / draft / applied).&#xA;- Adds the rest of NIP-51 list event kinds and full NIP-53 live-activity rendering&#xA;- Adds MLS / Marmot event types and a pure-Kotlin MLS engine with IETF RFC 9420 interop test vectors (no native deps)&#xA;- Adds an async SQLite event persistence layer.&#xA;  - NIP-09 / NIP-50 / NIP-62 compliance.&#xA;  - Room-style connection pool.&#xA;- Adds a file-backed event store.&#xA;  - flock + transactions.&#xA;  - scrub/compact.&#xA;  - NIP-50 full-text search.&#xA;  - NIP-62 Right-to-Vanish.&#xA;  - NIP-01 tiebreaker.&#xA;  - NIP-09 created_at window.&#xA;  - Deletion-author check.&#xA;- Adds a reactive `ObservableEventStore` layer.&#xA;  - A façade that wraps any event store — SQLite-backed, file-backed, or in-memory.&#xA;  - Publishes a `StoreChange` on every accepted insert, delete and expiration sweep.&#xA;  - Projections stay in sync without re-querying the store.&#xA;  - Ephemeral events (kinds 20000-29999) emit without being persisted.&#xA;  - `EventStoreProjection` turns the change stream into a cold `Flow` of sealed `ProjectionState`.&#xA;  - Per-filter limits and per-projection NIP-62 vanish scoping.&#xA;- Promotes the relay toolkit into the new `geode` module — a real Nostr relay.&#xA;  - Implements NIP-01 and NIP-45.&#xA;  - NIP-77 negentropy reconciliation (strfry parity).&#xA;  - NIP-86 management API.&#xA;  - TOML config and graceful drain.&#xA;  - Adaptive connection pooling for 10k+ connections.&#xA;- Adds an EventInterner so deserialized events share canonical instances, with an interning event store that interns on insert&#xA;- Adds Ktor KMP HTTP implementations alongside OkHttp&#xA;- Adds macOS (Apple Silicon), iOS and Linux native targets.&#xA;  - Pure-Kotlin Ed25519 and X25519 for the MLS crypto on those platforms.&#xA;  - `commonMain` now compiles for Kotlin/Native.&#xA;&#xA;## Crypto and Performance&#xA;&#xA;- Custom secp256k1 implementation, starting to replace `fr.acinq.secp256k1`&#xA;  - Pure-Kotlin core for KMP native targets (macOS / iOS / Linux).&#xA;  - C + inline-ASM accelerated path on Android via a JNI bridge.&#xA;  - Hardware SHA-256 (SHA-NI on x86_64, ARMv8 CE on ARM64).&#xA;  - Comb method for G multiplication → 3× faster sign/keygen.&#xA;  - Same-pubkey batch Schnorr verify (5–6× throughput).&#xA;  - `verifySchnorrFast` for Nostr (skips y-parity inversion).&#xA;  - 4×64-bit limb representation with lazy field ops and ARM64 assembly.&#xA;  - Standalone `libsecp256k1-nostr` / `libschnorr256k1` C project, with Android benchmarks.&#xA;- Concurrent caching DNS resolver (SurgeDns)&#xA;  - Lock-free DNS cache.&#xA;  - 24h positive TTL.&#xA;  - Stale-while-revalidate.&#xA;  - Persisted across process restarts.&#xA;- Smoother video playback&#xA;  - Warm ExoPlayer pool and retained warm players.&#xA;  - Tuned LoadControl.&#xA;  - VideoCache warmup 10s → 1.5s.&#xA;  - Stable controller-overlay tree.&#xA;- Faster icons — shared FontFamily and TextMeasurer across all Material Symbols&#xA;- Faster chat lists — stable list keys and reduced recomposition&#xA;- Faster note rendering — cached event-derived values, fewer per-item allocations during feed scroll&#xA;- Faster Quartz queries&#xA;  - Direct-slot driver for replaceable + addressable lookups.&#xA;  - Streaming k-way merge.&#xA;  - Smallest-first FTS intersect.&#xA;  - Parallel Schnorr verify in the ingest queue.&#xA;  - Index-driven fan-out for cache observers.&#xA;- Faster rich-text translation&#xA;- Thumbnail disk cache for profile pictures; Coil disk-cache eviction moved off the write path to prevent scroll stalls&#xA;- Paginated GiftWrap loading for the DM chat list&#xA;- Bookmark events preloaded for faster access&#xA;- Lifecycle-aware screen subscriptions&#xA;  - Feed/screen relay subscriptions pause on background and resume on foreground.&#xA;  - 30s grace delay so brief app switches don&#39;t churn subscriptions.&#xA;- Adaptive video disk cache — sized to 20% of free disk (256 MB–4 GB) instead of a fixed 1 GB, with on-demand HLS videos cached in SimpleCache&#xA;- Tuned image/video OkHttp dispatcher and connection pool (16 in-flight per host) to de-serialize feed loading&#xA;- Streaming image hashing — computes image hashes without loading the whole file into memory; SHA-256 hasher moved off the thread pool&#xA;- GeoHash library rewritten from scratch for performance, dropping an external dependency&#xA;&#xA;## QUIC + nestsClient (foundation)&#xA;&#xA;- New pure-Kotlin QUIC v1 + HTTP/3 + WebTransport client (no JNI, no native deps).&#xA;  - Powers the NIP-53 audio-rooms over MoQ-transport path.&#xA;- Full RFC coverage and stabilization:&#xA;  - RFC 9002 loss recovery and retransmission.&#xA;  - 0-RTT early data.&#xA;  - 1-RTT key update.&#xA;  - TLS 1.3 session resumption (PSK).&#xA;  - ECN.&#xA;  - Connection migration with path validation.&#xA;  - Retry and Version Negotiation packet handling.&#xA;  - Stateless-reset detection.&#xA;  - Broad DoS-hardening / RFC-compliance stabilization sweep.&#xA;- Passes the quic-interop-runner test matrix against picoquic and quic-go.&#xA;  - Covers handshake, transfer, multiplexing, retry, 0-RTT, key-update, ECN, http3.&#xA;  - Includes qlog diagnostics.&#xA;- Multiple security and correctness audits.&#xA;  - RFC 9001 test vectors.&#xA;  - Live interop against aioquic and picoquic.&#xA;- `nestsClient` module&#xA;  - MoQ-transport (IETF) reference implementation.&#xA;  - Production moq-lite Lite-03/04 codec with version-aware ALPN negotiation.&#xA;  - `catalog.json` publishing aligned with kixelated/hang.&#xA;  - Opus + AudioRecord/AudioTrack.&#xA;  - Reconnection policy with proactive JWT refresh.&#xA;  - Cross-stack (Amethyst ↔ Rust ↔ browser) interop harness in CI.&#xA;&#xA;## Improvements and Fixes&#xA;- WakeUp Push Notification events — Starting to migrate to a better Push/Loading system&#xA;- Pinned notes moved to their own screen&#xA;- Left drawer reorganized into collapsible You / Feeds / Create / System sections, with clearer names&#xA;- Article writing redesign — banner, tags, slug&#xA;- Redesigned long-form article cards&#xA;- GIF support&#xA;  - Playback controls and autoplay.&#xA;  - GIF→MP4 upload conversion option in the upload screen.&#xA;  - GIF / image keyboard support in the short post screen and in Marmot, DM and public-channel chat fields.&#xA;- Configurable video player buttons in Account Settings&#xA;- Autoplay Videos setting (Always / Never), separate from the video-loading toggle&#xA;- Drag-and-drop reordering for some relay list settings&#xA;- 3-dot options menu on video / picture / file feed cards&#xA;- Zoomable media grows from its source bounds, and loads the full-resolution source in the image dialog&#xA;- Favorite relays can now be added to the Global Feed&#xA;- Configurable max-hashtag spam filter&#xA;- Account setting to forward kind 0 events to a local relay&#xA;- Relay Sync UI replaced with visual indicators&#xA;- Account Settings&#xA;  - Split broadcast tracker visibility from Complete UI mode.&#xA;  - Hide payment-targets icon by default and place it after Zap.&#xA;  - Float the broadcast banner as a rounded card.&#xA;- Danger Zone section in settings&#xA;- NIP-89 client tag&#xA;  - Per-account toggle to disable it, synced via NIP-78 security settings.&#xA;  - On by default and moved into Compose settings.&#xA;- Local Blossom cache — image and profile-picture fetches route through a local Blossom cache&#xA;- Mention preservation in compose:&#xA;  - Survives keyboard auto-correction.&#xA;  - Partial-overlap edits delete the whole mention.&#xA;  - Cursor snaps to mention boundaries.&#xA;- Chat cursor jumping fixed&#xA;- Avatar zoom-in keeps aspect ratio during the animation&#xA;- Profile pictures center-cropped to prevent squashing&#xA;- HLS video fixes:&#xA;  - Playback routed to the right MediaSource.&#xA;  - Multi-rendition videos collapse to a single gallery tile.&#xA;  - Render with artwork and a graceful fallback.&#xA;- Broken &#34;Pause&#34; action removed from the always-on background notification&#xA;- Hand-raise button in audio rooms now has a visible toggled state&#xA;- GiftWrap unwrapping for all writable accounts when always-on is enabled&#xA;- Search bar bech32 paste navigates instead of running a search&#xA;- Top and bottom bars stay visible on non-scrollable lists&#xA;- Rich-text translation:&#xA;  - Bug, performance and jitter overhaul.&#xA;  - `{N}` placeholders so URLs survive CJK translation.&#xA;- Swipe-to-dismiss containers fixed on newer Compose&#xA;- Right-to-Vanish settings observe toggles reactively, preserve prior behavior on upgrade&#xA;- Relay reconnection:&#xA;  - Auto-reconnect after a server-initiated disconnect.&#xA;  - Periodic keep-alive to revive relays stuck in long backoff.&#xA;- Account settings (profile, follow list, mutes, relay lists, KeyPackages) are republished to newly-selected relays so accounts aren&#39;t lost on fresh relays&#xA;- Broadcasting relays:&#xA;  - Kept out of personal &amp; channel sends.&#xA;  - Always included in non-private sends.&#xA;  - Fixed an infinite loop in the broadcast-relay computation.&#xA;- Tor now falls back to clearnet when bootstrap is stuck&#xA;- Android Arti reliability: stale Arti cache cleared on init with retry, SOCKS proxy default port moved with busy-port retry, relay-over-Tor connectivity fixes&#xA;- Chess game challenges filtered out of the home feed (ended games only); chess cards show user picture and name instead of hex pubkeys&#xA;- Expired polls re-evaluated and removed from notification cards&#xA;- NIP-39 external identity claims without a platform separator are rejected&#xA;- Dismissible cleanup banner across Pinned Notes, Bookmarks and Bookmark Sets, flagging author-deleted items with a &#34;Remove from list&#34; action&#xA;- Bogus Content-Type rejected when saving downloaded media, with URL-extension fallback validation&#xA;- NIP-46 bunker decrypt/encrypt response parsing fixed, with a longer timeout&#xA;- Hidden DMs no longer counted toward the unread message badge&#xA;- Profile header hides the `_@` prefix on NIP-05 names&#xA;- Foreground-service-not-allowed exception from the background handled gracefully&#xA;- Fixes Samsung crash on outgoing call&#xA;- Foreground service starts earlier to prevent call death on Android 14+&#xA;- Stop ringtone and call notification when rejecting consecutive calls&#xA;&#xA;## UI Refresh&#xA;&#xA;- Migrates the icon set from Material Icons to Material Symbols (thin weight) for a more consistent, modern look across the app&#xA;- Drops unused legacy drawables&#xA;- Bottom-bar icon size bumped to compensate for Material Symbols padding&#xA;&#xA;## Build &amp; Documentation&#xA;&#xA;- CI restructure:&#xA;  - Splits Android into its own CI job.&#xA;  - Adds Android Lint as the first step.&#xA;  - Merges test+build to eliminate duplicate compilation.&#xA;  - Drops `assembleDebug` APK uploads.&#xA;- Adds a `:nestsClient:test` step to the desktop CI leg&#xA;- Adds a quic-interop-runner CI workflow and a browser-side cross-stack interop workflow&#xA;- Broadens `libicu` Depends so the `.deb` installs across Debian and Ubuntu&#xA;- Adds `SECURITY.md` with private vulnerability reporting policy&#xA;- Moves desktop packaging / AppImage tooling into the `desktopApp` module&#xA;- AGP and dependencies bumped&#xA;&#xA;## Contributors&#xA;&#xA;- nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqpzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcpzpmhxue69uhkummnw3ezumt0d5hszythwden5te0dehhxarj9emkjmn99uwfvhl6&#xA;- nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx&#xA;- nostr:nprofile1qqs9vyevafl4f7rqluqykt500e9nj5ase8eh5k423rgwtfw6qdjhd4spz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ehx7um5wghxyctwvshszrnhwden5te0dehhxtnvdakz7axwpzp&#xA;- nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezumrpdejz7d9xcpk&#xA;- nostr:nprofile1qqswc4nrhvp4lrjct0ayy0ps8f2hvj8e2guucp63dwcx6m6e8pka9fqpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qy08wumn8ghj7un9d3shjtnwdaehgu3wwa5hyetydejhgtn2wqhsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9ue5n65v&#xA;- nostr:nprofile1qqsxeh4ue276rhaqtz4c2df209gfkkft9006qdcryh3gaswtfuvxvlgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9en82mnywd68ytndv5hsc2mjk6&#xA;&#xA;## Translations&#xA;&#xA;- Czech, German, Swedish, and Portuguese by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzpmhxue69uhkummnw3ezumt0d5hszxnhwden5te0wf5kymewv46jumn0wd68y6tp9eshqup0qyd8wumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdakj7nrm3sx&#xA;- Hungarian by nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acspzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7c0ns2l&#xA;- French by nostr:nprofile1qqs8av5uzf4nv2q80chrmp3mj9a9dd6zjw4fmz56hsn2gzar72rxhtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcuvd26f&#xA;- Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywgpzemhxue69uhkummnw3ezucm6v9ejuurvw4ej7qg0waehxw309a3h5ctn9e6x7up0kvajyt&#xA;- Hindi by nostr:nprofile1qqs88dt78wgnzvaph6fcstfvsd98xc2qs8eg8tllwv2zlutu8ehec2cpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7x03hlx&#xA;- Slovenian by nostr:nprofile1qqsqqqqqqp0fmkspg7w8d305ln96a0jw0ptwqtuwskkm5pddv2kkjfcppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgkwaehxw309aex2mrp0yhxg6t5w3hjuur4vghsdu406e&#xA;- Bengali by nostr:nprofile1qqsgs9hgjw87vz36jf2r83m5zree2q87zvs8s7kty9jljdz7wprytyspremhxue69uhkummnw3ezu6m0de5kueedv3jkwunpv9nzumnv9uq3kamnwvaz7tm5d4cz6un9d3shjtnrv4ekxtn5wfskgef0qy28wumn8ghj7mn0wd68yt3k8quzummjvuhsg63aw2&#xA;- Spanish by nostr:nprofile1qqs07tjpyvvlq9ugdpax8h3jfrpwn7kr72k3tc7ky83tggn4et9eangpg3mhxw309ajxyartwdukjery09cxwctsd3ek6cnjdfnxs6t00pnhq7ttdvmkw7nsd3shxdrr0gery6nyva3h2ct0096kyerjw9jzummwd9hkutcprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0qyghwumn8ghj7mn0wd68ytnhd9hx2tcxdyhdq&#xA;- Chinese by hypnotichemionus4 and nostr:nprofile1qqsyxnuhnymz0u0xru2watmqe25vlh8vzzje9jhlsfgvsff9942gc9gprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz9mhwden5te0wfjkccte9e3hsurvv9ujummjvuhsz9nhwden5te0wfjkccte9ehx7um5wghx6mm99urkr68m&#xA;- Russian by Anton Zhao</html></oembed>