nospeak

com.nospeak.app
by psic4t psic4t@data.haus

A decentralized Nostr chat client for secure, private messaging

First release: Dec 26, 2025, 26 total releases.

Most recent release: Jun 4, 2026.

Website Repo

Appears in 7 app stacks.

1,300 sats / 2 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

  • Jun 4, 2026 v1.1.3
    Changes since v1.1.2: Features -------- - feat(voice-calling): add ICE restart on FAILED (1-on-1) (518b771) - feat(chat): inline relay status and read markers left of message time (26fb364) Bug Fixes --------- - fix(android): keep screen on during video calls (e2fafbb)
  • May 14, 2026 v1.1.2
    Changes since v1.1.1: Features -------- - feat(android): restyle video-call controls as bottom sheet with drag handle (45e5083) - feat(voice-call): add plain TURN over UDP+TCP to default iceServers (af8c7f0) - feat(android): add View Transition CSS customization for chat navigation (af00c2f) - feat(android): integrate View Transitions in ChatView header (72b8a4f) - feat(android): integrate View Transitions in ChatList (866f478) - feat(android): add navigateWithTransition() utility for View Transitions API (b6a759a)
    More…
    - feat(android): add supportsViewTransitions() platform detection (a640202) Bug Fixes --------- - fix(web): prevent video flicker by guarding srcObject reassignment (d92f7fc) - fix(android): invert camera-flip button colors when on back camera (1cf243a) - fix(android): round corners on video-call self-view PiP (13290de) - fix(voice-call): wire Android iceServers through runtime config + ICE-failed diagnostics (6c1d570) - fix(android): disable H264 high profile to improve decoder interop (8bc612d)
  • May 6, 2026 v1.1.1
    Changes since v1.1.0: Features -------- - feat(voice-call): show callee name and profile pic on calling screen (b62a8c8) - feat(voice-call): proximity wake lock on Android, defensive sdpSemantics on web (09e2a9b) - feat(voice-call): add group voice calling (web/PWA + Android wire-format compliance) (1f585a5) - feat(android): use CallStyle.forOngoingCall for active-call notification (149d7ae) - feat(voice-call): show relative timestamps on call pills (dc0493f)
    More…
    Bug Fixes --------- - fix(android): reposition video-call self-view PiP to bottom-right with chrome-aware slide (c826e77) - fix(android): keep outgoing ringback audible for full ringing duration (b601bd6) - fix(android): drop receiver ACTION_STOP race so notification hangup reaches peer (8fa6bec) - fix(android): drop setContentText to stop doubling caller name in call notification (cbf4bc5) - fix(android): thread peerHex into ongoing-call notification so avatar resolves (88506bf) - fix(android): stop FGS in finishCall so ongoing-call notification dismisses (5fe882c) - fix(chat): align chat header 3-dot menu under the button on desktop (82767a6) - fix(android): bring active-call activity to front from ongoing notification (41535fc) - fix(android): close NIP-AC compliance gaps in native voice-call path (abc959a)
  • May 2, 2026 v1.1.0
    Changes since v1.0.2: Features -------- Add voice and video calls (NIP-AC) Bug Fixes --------- - fix(chat): close search overlay when tapping outside in chat view (c8b5450) - fix(profile): stop using NIP-65 as fallback for NIP-17 messaging relays (420aad1)
  • Apr 24, 2026 v1.0.2
    Changes since v1.0.1: Features -------- - feat: make read receipts ephemeral via NIP-40 (7-day expiration) (8a7123a) Bug Fixes --------- - Merge pull request #10 from AleeRezaa/master (51148d8) - fix(ci): add arm64 platform (8e6d51f)
  • Apr 2, 2026 v1.0.1
    Changes since v1.0.0: Features -------- - feat: add opt-in read receipts (a430e83) - feat: Enter sends message on desktop, Ctrl+Enter for newline (6f9a891) Bug Fixes --------- - fix(android): prevent background service from reconnecting removed relays (239d8a2)
  • Mar 27, 2026 v1.0.0
    The first stable release of nospeak - a private messenger built on Nostr. No sign-ups. No phone numbers. No central servers. Just encrypted conversations between you and the people you choose to talk to. --- ## Private Messaging - **1-on-1 and group conversations**, fully end-to-end encrypted using the NIP-17 gift-wrap protocol. Every message is triple-layer encrypted with randomized timestamps to prevent metadata analysis. - **Emoji reactions** on any message, with 276 emoji to choose from -- and yes, even reactions are encrypted. - **Reply threading** to keep conversations organized. - **Full-text search** across your local message history. - **Markdown formatting** -- bold, italic, lists, and code blocks.
    More…
    - **Chat export** to styled HTML files for archival. ## Encrypted Media - **Photos, videos, and files** are encrypted client-side with AES-256-GCM before leaving your device. Only recipients can decrypt them. - **Voice messages** up to 3 minutes with real-time waveform visualization. - **Location sharing** with interactive OpenStreetMap maps embedded in chat. - **Blurhash previews** for progressive image loading. - **Link previews** with Open Graph metadata and inline YouTube embeds. - **Blossom media servers** with multi-server upload and automatic mirroring. - Media decryption runs in a dedicated Web Worker so the UI stays smooth. ## Notifications That Work - **Android background service** maintains relay connections even when the app is closed. Survives device reboots. - **Web push notifications** for PWA users. - Smart suppression -- no duplicate buzzing when you're already in the conversation. ## Privacy by Design - **NIP-17 gift wraps** with triple-layer encryption and randomized timestamps. - **NIP-44 versioned encryption** for all message payloads. - **Encrypted contact lists, favorites, and archives** -- relay operators see nothing. - **Android Keystore** integration for hardware-backed key storage. - **App lock** with PIN protection. - **Seal signature verification** to prevent message forgery. - In group chats, each participant receives their own individually encrypted copy -- there is no shared ciphertext. ## Runs Everywhere - **Android app** with 14 custom native plugins for deep OS integration -- share targets, haptics, camera, filesystem, background messaging, and more. - **Progressive Web App** at [nospeak.chat](https://nospeak.chat) with offline support and installability. - **Self-hostable** via Docker. - **Three signer options**: local key (nsec), browser extensions (NIP-07), or Android signers like Amber (NIP-55). - Available on **F-Droid**, **Obtainium**, and **Zapstore**. ## Contacts & Discovery - **Search** for users by name, npub, or NIP-05 address. - **QR code** generation and scanning for easy contact sharing. - **NIP-05 verification** with visual badges. - Auto-discovery of new contacts from incoming messages. - Encrypted contact sync across devices. ## Organization - **Favorites** -- star important messages, synced across devices. - **Archives** -- declutter your inbox without losing history. - **Unread badges** per conversation. - **Group management** -- create named groups, add members, edit group names. ## Relay Management - Choose your own messaging relays. Your infrastructure, your rules. - Real-time **relay health dashboard** with connection status and auth state. - **NIP-42 relay authentication** with automatic retry. - **Exponential backoff reconnection** and a persistent retry queue for failed deliveries. ## Personalization - **21 languages** with full RTL support for Arabic, Hebrew, Persian, and Urdu. - **4 themes**: System, Light, Dark, and Cypher (cyberpunk neon). - Profile customization with display name, avatar, banner, bio, NIP-05 ID, and Lightning address. --- **Open source under GPL-3.0.**
  • Mar 20, 2026 v0.12.5
    Changes since v0.12.4: Features -------- - feat(android): add Downloads plugin for chat HTML export (c98c4d1) - feat(android): reconnect relays on network change and handle onTaskRemoved (5115614) Bug Fixes --------- - fix(android): bump security-crypto from alpha to stable 1.1.0 (53bd733)
    More…
    - fix(i18n): backfill missing translation keys, remove test-only crypto roundtrip (1f55538) - fix: remove unused code, dead components, and orphan dependencies (2cf6c34) - fix(chat): restore search input auto-focus on Web/PWA (773a4c6) - fix(voice): match recording and playback waveform appearance (e8e344e) - fix: remove IDE files, handle null MediaStore stream, deduplicate getConversation (59c7498) - fix(ui): show export option on Android now that Downloads plugin works (ec83b68) - fix(android): convert Downloads plugin to Java, remove unused Kotlin files (6bfa733) - fix(chat): auto-focus search input on Android when opening chat search (e462781) - fix(android): switch foreground service type from dataSync to specialUse|systemExempted (da1504b)
  • Mar 13, 2026 v0.12.4
    Changes since v0.12.3: Bug Fixes --------- - fix(android): prevent waveform bars from clipping past audio player edge (3610cb3) - fix(contacts): auto-focus search input when opening add contact field (0667ff4) - fix(search): guard against non-string metadata fields crashing contact search (81d7f04) - fix(android): use OfflineAudioContext for waveform computation to prevent speaker crackling (48db695) - fix(android): resolve race conditions in share intent handling (4c2b048) - fix(blossom): use base64url encoding for auth token per BUD-11 (177cc55)
    More…
    - fix(blossom): add X-SHA-256 header to upload and mirror requests (321d133) - fix(signer): improve error diagnostics when both NIP-44 and NIP-04 decryption fail (ab36e92) - fix(core): prevent crashes from corrupted localStorage, malformed signer JSON, and invalid NIP-05 responses (1f7fc58) - fix(profile): guard tag iteration and JSON.parse in ProfileResolver and BlossomServers (7f92b03) - fix(sync): validate decrypted content is array before processing in sync services (4554222) - fix(messaging): add structural validation for seal/rumor in gift wrap processing (e845828) - fix(messaging): validate NIP-44 seal content length before decrypt to skip malformed events (a9ca1f6) - fix(signer): return correct promise from queueOperation to prevent cross-contaminated decrypt results (524ec1c)
  • Mar 9, 2026 v0.12.3
    Changes since v0.12.2: Features -------- - feat(settings): add interactive square crop for profile picture uploads (2949d01) - feat(settings): replace profile picture/banner URL inputs with visual header (46f122e) - feat(settings): show save status after profile save (6176cc9) - feat(ui): add autoGrow support to Textarea, use for profile about field (85b6709) - feat(relay): add kindpages, nostr1, and yabu discovery relays (abf8f8d) - feat(upload): show phased progress overlay during Blossom file uploads (473f540)
    More…
    - feat(profile): add QR code button to contact npub in profile modal (d736f4d) Bug Fixes --------- - fix(android): restore native env(safe-area-inset-*) in WebView inset listener (00aa4d5) - fix(android): keep keyboard open after sending a message (de4e96d) - fix(android): prevent header scroll-off when keyboard opens (731000c) - fix(video): fix intermittent black poster on Firefox (ee24776) - fix(profile): always query discovery relays and support nprofile QR codes (7fba4e6) - fix(blossom): show server hostname and hint when upload is rejected (5fc8f00) - fix(url-preview): use browser User-Agent to avoid 403 blocks from sites like focus.de (0f7cfa7) Other Changes ------------- - style(settings): show name and display name side-by-side on desktop (d23e4e5)
  • Feb 26, 2026 v0.12.2
    Changes since v0.12.1: Features -------- - feat(chat): add Export option to chat context menu (88013e8) - feat(ui): prefer display_name over username across all UI (e6ed524) - feat(contacts): add View Profile option to contact context menu (5be47f0) Bug Fixes ---------
    More…
    - fix(messaging): deduplicate participants before determining group chat (e66121a) - fix(rtl): add dir="ltr" to URL, key, and identifier inputs for RTL language usability (777b89c) - fix(android): hide Export option in chat context menu on Android (6dcb52b) - fix(web): image download saves with correct extension instead of .bin (4444c18)
  • Feb 25, 2026 v0.12.1
    Changes since v0.12.0: Features -------- - feat(android): generate video poster for Android WebView thumbnail (eee6b46) - feat: restore Blossom server resilience for Worker and Java paths (f85f2cc) - feat(theme): add Cypher theme with pure black backgrounds and cyan neon accents (591e39c) Bug Fixes ---------
    More…
    - fix(ui): shrink avatars and narrow bubble width on mobile/Android (cad61c0) - fix(pwa): set browser title for group chats (7eff6a9) - fix: improve URL preview meta tag extraction and add User-Agent header (defa0a8) - fix(android): resolve wildcard MIME types that cause MediaStore save failures (7ec9acf) - fix(ui): add 24px buffer below messages to prevent input bar overlap (432c3e1) - fix(ui): dynamically adjust message list padding when input bar grows (a577010) - fix(android): show real profile pics instead of identicons after login (2706140) - fix(android): eliminate screen flicker during login sync (509d017) Other Changes ------------- - refactor: remove unused toBase64Url and fix stale CSS classes in tests (c811b7a) - refactor: remove legacy blob-to-base64 gallery save pipeline (d2acb85) - refactor(android): remove dead writeCacheChunk/commitCacheFile Java methods (3c0dc3f) - refactor: remove dead chunked transfer code from AndroidMediaCache (e41525f) - refactor: remove chunk infrastructure from DecryptionScheduler (b6399f0) - refactor: remove chunked base64 encoding from decryption worker (f332512) - refactor(android): use Java-side fetchDecryptAndSave for gallery cache (48ebf76) - perf(sync): resolve login sync on EOSE instead of hard 5s timeout (6ab09d6)
  • Feb 21, 2026 v0.12.0 Release page →
    Changes since v0.11.1: Features -------- - feat(security): lock app on window blur for Linux virtual desktop switches (960dc40) - feat(security): add PIN app lock with 4-digit keypad (3a7a430) - feat(i18n): add Bengali, Thai, and Vietnamese translations (5027e04) - feat(i18n): add Hindi translation (df88563) - feat(i18n): add 10 new languages (ar, he, ur, tr, ja, zh, ko, nl, pl, ru) (44fddf1) - feat(i18n): add Persian/Farsi translation with RTL support (3edd9dd)
    More…
    - feat(ui): add manual relay input to sync error state (3c46d25) - feat(auth): add retrySyncWithManualRelay for offline login (82f5171) - feat(i18n): add manual relay input translations for all locales (88a7829) - feat(ui): show relay connection status in messaging relay settings (f90a42c) - feat(android): allow cleartext WebSocket traffic for local relay support (bc86910) - feat(android): add swipe-to-switch between chatList tabs (37a8078) Bug Fixes --------- - fix(profile): don't overwrite existing relays in EmptyProfileModal (7372270) - fix(relay): try connected relays before discovery when resolving contact relays (ca79095) - fix(relay): skip unreachable discovery relays in profile resolution (6e5f831) - fix(relay): downgrade individual relay publish failures to warnings (5ab5095) - fix(relay): don't auto-replace relay config when relays are connected (a00681f) - fix(android): restore underscroll transparency behind header in chatList (60e534a) - fix(a11y): add ARIA roles to elements with pointer/touch handlers (a9befa7) - fix(deps): pin jsdom to ~27.3.0 to resolve @noble/hashes peer conflict (9a0e570) - fix(ui): reserve space for URL previews to prevent scroll jank on chat entry (7eaa46d) - fix(android): prevent duplicate notification alert on screen wake-up (901c343) - fix(android): stop native recorder on cancel to prevent 'Already recording' error (6e6254e) - fix(auth): wait for NIP-07 extension before giving up on session restore (3c2f7a0) - fix(android): share decoded image instead of encrypted link from image viewer (83cd247) - fix(voice): normalize playback waveform using RMS to prevent all bars maxing out on loud recordings (81c40a0) - fix(config): use hooks.server.ts injection instead of load function for runtime config (22c4640) - fix(chatview): use $state() for bind:this element references (Svelte 5) (248a1ed) - fix(contacts): make markActivity monotonic and track received 1-on-1 messages (90db6a9) Other Changes ------------- - chore(deps): update dependencies, pin nostr-tools to ~2.19.0 (f0dbf51) - refactor(config): replace runtime-config API endpoint with SSR page data (8931563) - chore: remove performance instrumentation from ChatList and layout (e9857e6) - chore: disable verbose debug logging for giftwrap, decrypt, and signer operations (f08d558) - perf(chatlist): add concurrent refresh guard to prevent duplicate liveQuery refreshes (912d329) - perf(chatlist): batch message fetches and profile lookups for faster initial render (ad4bec2)
  • Feb 16, 2026 v0.11.1 Release page →
    Changes since v0.11.0: Features -------- - feat(android): convert ProfileModal to bottom sheet on mobile (395b587) - feat(chat): hide message input for archived chats with inline unarchive button (953274e) - feat(sync): on-demand contact refresh and full-replace sync specs (d6a73c0) - feat(server): add /api/metrics endpoint with bearer token auth (33b0b79) - feat(docker): add /api/health endpoint for container health checks (ded7c19)
    More…
    Bug Fixes --------- - fix(voice): match recording waveform bar count and height to playback (9b60095) - fix(android): skip PWA service worker registration in Capacitor shell (3cb6465) - fix(android): remove stale cached shortcuts from share sheet (8a5c0b0) - fix(android): launcher shortcut taps now navigate to correct chat (727d7cd) - fix(sync): replace union merge with full replace for contacts (b64d736) - fix(sync): replace union merge with full replace for favorites and archives (6c42ac5) - fix(android): prevent archived chats from always showing unread indicator (59c1535) - fix(desktop): center images smaller than viewport in full-size mode (811d2d1) - fix(android): guard getClientAddress() during adapter-static prerendering (adfa764) - fix(audio): apply playback speed change immediately during active playback (7e6dc88) - fix(server): read X-Forwarded-For for unique visitors and remove daily reset (10a0ec6) - fix(ui): strip markdown formatting from chat list message preview (5d814e9) - fix(android): increase bottom sheet drag area height for easier dismissal (5c33f6a) - fix(android): inject safe area CSS variables on pre-Android 15 devices (4fb06c1) Other Changes ------------- - refactor(android): extract shared bottom sheet action with physics-based gestures (3336c05) - style(ui): widen chat list from 20rem to 23rem on desktop/tablet (40a2f45)
  • Feb 9, 2026 v0.11.0 Release page →
    Changes since v0.10.4: Features -------- - feat(ui): add filter tabs to chat list for All, Unread, and Groups (93ac3a1) - feat(archive): add chat archiving with NIP-51 relay sync (51bd29f) - feat(contacts): auto-archive 1-on-1 chat when deleting a contact (84ee3db) - feat(messaging): add @mention autocomplete for contacts in chat composer (dd8dba3) - feat(messaging): detect nostr npub mentions in messages and render as clickable profiles (456c0c6) - feat(desktop): show last message preview in chat list (9c87303)
    More…
    Bug Fixes --------- - fix(android): handle URI permissions for inbound image sharing (90b51f9) - fix(android): transcode HEIC/HEIF images to JPEG when receiving shares (9447172) - fix(desktop): fix image viewer scrolling in full-size mode (db8b84b) - fix(android): add haptic feedback to settings menu items and back button (cc54468) - fix(ui): update context menu reactions to 👍 ❤️ 😂 🙏 (366798f) - fix(pwa): don't mark reactions as unread during history fetch (ca5f298) - fix(pwa): extend notification badge support to group chats (5dababa) - fix(pwa): clear notification badge when window regains focus (df0190a) - fix(pwa): clear notification badge when window becomes visible (94128b1) Other Changes ------------- - refactor(messaging): use alt tag for file message captions (0c1d6a8) - perf(pwa): add runtime caching and preconnect hints (e0764d8)
  • Feb 3, 2026 v0.10.4 Release page →
    Changes since v0.10.3: Features -------- - feat(chat): add generic file upload support (28ec0b8) - feat(android): use gallery as cache for encrypted media (2a71b52) - feat(chat): add markdown lists and improve citation styling (f860e36) - feat(messaging): auto-set default relays for existing users without relays (69eb33d) Bug Fixes
    More…
    --------- - fix(android): proactively prefetch avatars when profiles are cached (525d8c7) - fix(nip17): include rumor id field for 0xchat compatibility (5f1f9de) - fix(nip17): add relay hints to p-tags in DM rumor (426e830) - fix(nip17): add seal signature and pubkey verification (8185e35) - fix(location): require Ctrl+scroll to zoom map in chat bubbles (91b4079) - fix(groups): prevent unread notifications on initial sync and creation (3c6b141) - fix(sync): remove 30-day cutoff and fix progress reset during login sync (32b5e06) - fix(contacts): resolve profiles for contacts synced from Kind 30000 (e743899) - fix(ui): hide Chats title in mobile view (1931f22)
  • Jan 29, 2026 v0.10.3 Release page →
    Changes since v0.10.2: Features -------- - feat(android): add Direct Share support for contacts and groups (d36c2d5) - feat(android): add media cache to save viewed media to gallery (c69f04a) - feat(auth): detect NIP-07 signer account mismatch on login (f8fa915) Bug Fixes ---------
    More…
    - fix(media): use explicit canvas dimensions for stable blurhash layout (63cfd46) - fix(chat): reliable scroll-to-bottom for async media components (5936c2a) - fix(chat): skip URL previews for encrypted file messages (6dc827f)
  • Jan 25, 2026 v0.10.2 Release page →
    Changes since v0.10.1: Features -------- - feat(messaging): add dim and blurhash tags to Kind 15 file messages (a69cb19) - feat(avatar): replace Robohash with local identicon generation (c77aca6) - feat(messaging): show localized location label in notifications and chat list previews (0c33104) Bug Fixes ---------
    More…
    - fix(android): prevent map panning from intercepting message list scroll (00365e7) - fix(android): alert on every new message notification (9ea80b8) - fix(search): switch default NIP-50 relay to nostr.wine (4ac3a5f) Other Changes ------------- - refactor(location): replace OSM iframe with Leaflet map component (55b9b59) - refactor(messaging): unify send pipeline into single sendEnvelope() method (8c22605) - chore: remove dead contacts store, nativeBottomSheet utils, and backup file (9f4aa99) - refactor(ui): extract shared controllers for group creation and contacts management (9e39fe3) - chore: remove orphaned and dead code (05f16bb)
  • Jan 22, 2026 v0.10.1 Release page →
    Changes since v0.10.0: Features -------- - feat(groups): add relay send status for group messages (ae122ed) - feat(contacts): add find-as-you-type search field to filter contacts list (2f064f4) - feat(audio): add playback speed control and fix seek-before-play bug (71fb5ef) Bug Fixes ---------
    More…
    - fix(android): improve create-group scroll performance (358cc9c) - fix(contacts): sort contact lists alphabetically by name (6b86f4a) - fix(groups): enable reactions in group chats (1720485) - fix(android): avoid back-gesture navigation loops (93a5c97) - fix(ui): prevent reaction bubble from being clipped by message overflow (cca9189)
  • Jan 16, 2026 v0.9.22 Release page →
    Changes since v0.9.21: Features -------- - feat(android): add NIP-42 authentication to native background messaging service (341b42b) - feat(android): upgrade to Capacitor 8 (89b4e51) - feat(sync): add 5-minute timeout and error recovery for initial sync (734741c) Bug Fixes ---------
    More…
    - fix(android): dismiss notification when opening corresponding chat (678796a) - fix(android): prevent long strings from overflowing message bubbles (02053b6) Other Changes ------------- - style(android): re-enable backdrop-blur on fixed header and input elements (bb3046e) - ci(android): update GitHub Actions for Capacitor 8 (bcde0d8)
  • Jan 11, 2026 v0.9.21 Release page →
    Changes since v0.9.20: Features -------- - feat(settings): add primary Blossom server selection (e1d3e18) - feat(android): add rubber-band overscroll animation for scroll containers (d683738) - feat(notifications): show friendly media labels instead of URLs (87742f2) - feat(settings): add GPL-3.0-or-later license header in About section (a877ffa) - feat(contacts): parse markdown in last message preview (277d66f)
    More…
    Bug Fixes --------- - fix(android): show notifications for other chats while viewing a conversation (aa30092) - fix(chat): guard effect to prevent spurious message reloads (f7f00c1) - fix(contacts): only show unread indicator for received messages (224ea75) - fix(chat): prevent message list reload during background history fetch (83035d1) - fix(auth): prevent login screen flash for authenticated users (0321559) - fix(chat): force eager load on recent media to fix scroll positioning (1ed5968) Other Changes ------------- - perf(android): disable backdrop-blur and fly animations for scroll performance (264902c)
  • Jan 8, 2026 v0.9.20 Release page →
    Changes since v0.9.19: Features -------- - feat(messaging): add voice messages (385416a) - feat(android): add native voice recording with M4A/AAC output (4295672) - feat(ui): show friendly media labels in contact list preview (3876304) - feat(i18n): add es/pt/fr/it translations (e485891) - feat(android): transparent status bar with edge-to-edge scrolling (f2ae965) - feat(android): add native scroll optimizations for improved performance (998dfe4)
    More…
    Bug Fixes --------- - fix(android): enforce fullscreen layout on all Android devices (c724479) - fix(ui): restrict chat search input height to avoid status bar overlap on Android (dae9005) - fix(android): respect safe-area-inset-bottom for navigation bar (9c8fb50) - fix: suppress notifications for messages sent before app session started (8d5a001)
  • Jan 4, 2026 v0.9.19 Release page →
    Changes since v0.9.18: Bug Fixes --------- - fix: translate chat search field placeholders and messages (1356167) - fix: F-Droid metadata (ec7c11b) - fix: Android status bar overlap (ed0ccaf)
  • Jan 3, 2026 v0.9.18 Release page →
    Changes since v0.9.17: Features -------- - feat: improve load-older-messages with honest stats and faster fetch (dd805f5) - feat: add PWA connection keep-alive and visibility recovery (b8a48e8) - feat: add Android app download link to login screen (9bee7c6) - feat: prevent right-click and long-press menu on desktop (4662046) - feat: add three-dot menu button to message bubbles on desktop (b453bd4)
    More…
    Bug Fixes --------- - fix: NIP-17 Kind 15 file encryption interoperability with Amethyst (031a6ea) - fix: flush chat message refresh (65dfa0d)
  • Dec 30, 2025 v0.9.17 Release page →
    Changes since v0.9.16.1: Features -------- - feat: disable UnifiedPush functionality (cdafdea) Bug Fixes --------- - fix(fdroid): Remove reproducible builds for now (6cd27c5) - fix: prevent context menu from rendering off-screen on mobile (e1bf93c)
    More…
    - fix: prevent duplicate message display by synchronizing optimistic and persisted timestamps (c6b47af) Other Changes ------------- - README (a24de58) - add zapstore (62e478e)
  • Dec 26, 2025 v0.9.16 Release page →
    Changes since v0.9.15: Features -------- - feat(chat): add encrypted location sharing (434c670) - feat(contacts): add NIP-05 search to Manage Contacts modal (167b883) - feat(unifiedpush): add distributor plugin and settings UI (feb63f8) Bug Fixes ---------
    More…
    - fix(relay): avoid CLOSE sends during shutdown (64d2934) - fix(relay): ignore errors when closing already-closed WebSockets (fe38e20) - fix(pwa): inject precache manifest in production (68c0d8f) - fix(pwa): set root scope for Service Worker to fix registration error on /chat routes (688e068)