Amethyst

Zero-JS Hypermedia Browser

avatar
Amethyst
amethyst@vitorpamplona.com
npub142gy...xrj0
Nostr Client for Android

Notes (20)

#Amethyst v1.04.1: Bug fixes - Fixes crashing when starting - Fixes hashtag unfollowing for mixed case tags - Fixes release Id for the zap the devs button - Fixes quartz version for a release to Maven - Fixes disappearing of the Zap the Devs Manual Payment screen - Fixes back button of the Zap the Devs Manual Payment screen staying behind the status bar Translations: - Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywgppamhxue69uhkx7npwvh8gmms9uq3vamnwvaz7tmwdaehgu3wvdaxzuewwpk82ue0qyghwumn8ghj7mn0wd68ytnzdahxgtch7lh5p - Hungarian by nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acspzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7c0ns2l Download: http://amethyst.social
2025-11-15 22:16:49 from 1 relay(s) View Thread →
#Amethyst v1.04.0: Lists for all 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 - 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
2025-11-15 16:58:37 from 1 relay(s) View Thread →
#Amethyst v1.04.0: Lists for all 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 - 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
2025-11-15 16:40:57 from 1 relay(s) View Thread →
#Amethyst v1.03.0: Built-in video recording New Features: - Adds "record and post video" button to new Post Screens by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpzpmhxue69uhkummnw3ezumt0d5hscc6wyt - 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 - 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 nostr:nprofile1qqswc4nrhvp4lrjct0ayy0ps8f2hvj8e2guucp63dwcx6m6e8pka9fqppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcjuq3jp - 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 nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywgpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcppemhxue69uhkummn9ekx7mp0qyt8wumn8ghj7mn0wd68ytnr0fshxtnsd36hxtcgcpyfj - Hungarian by nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acsk5trt8 Download: http://amethyst.social
2025-09-02 19:06:58 from 1 relay(s) View Thread →
#Amethyst v1.02.1: Bugfixes - Upgrade AGP to 8.12.2 - Sets Quartz to Java 1_8 - Creates a bootstrap relay list specifically for inbox relays - Register lists as Account fields to avoid GC of user settings. - Fixes inability to delete relays from certain relay lists. Download: http://amethyst.social
2025-08-29 11:57:41 from 1 relay(s) View Thread →
#Amethyst v1.02.0: NIP-17 Crash report DMs - Adds a crash interceptor and offers to send crash reports via NIP-17 - Fixes startup crash on Android 12 or earlier - Removes old DB migration - Fixes crash when pasting an invalid NIP-47 URI into the zap settings - Fixes crash when NWC doesn't return an invoice preimage - Fixes crash when loading a user with a null name - Fixes readonly crash on DVM requests - Speeds up first-time logins by not waiting for Tor - Fixes a parser benchmark - Moves test assets to resources to make it work with kmp - Migrates Quartz to a KMP project - Converts OpenTimestamps code from Java to Kotlin - Moves OTS OkHttp setup to Quartz - Migrates NIP-49 from Java to Kotlin - Removes nostr.bg from bootstrap relays - Updates translations Download: http://amethyst.social
2025-08-28 21:25:59 from 1 relay(s) View Thread →
#Amethyst v1.01: New Community Moderation support Features: - Upgrades NIP-72 communities to use NIP-22 comments as root posts - Adds moderation queue feed - Adds in-app approval procedures - Adds drafts for community posts - Redesigns the "about us" section of communities. Fixes: - Fixes accessibility TalkBack issues - Fixes the edit draft button in the long-press menu - Fixes the inability to delete relays from some lists. - Fixes unwanted NOTIFY requests from other people's relay lists - Fixes some DM push notification issues - Fixes notification registration for first-time logins - Avoids sending expired events to the relays - Fixes draft deletes staying in some feeds - Intercepts backhandler to save drafts - Moves draft deletion calculations out of the UI thread Download: http://amethyst.social
2025-08-27 13:43:08 from 1 relay(s) View Thread →
#Amethyst v1.00.5: Bugfix - Fixes a crash when a follow has multiple relays in the same tag in their relay list. - Updates translations Download: http://amethyst.social
2025-08-23 15:31:10 from 1 relay(s) View Thread →
#Amethyst v1.00.4: Draft bug fixes and Performance Improvements - Fixes the new post screen not closing after posting and rejecting drafts. - Fixes the disappearance of drafts. - Improving loading speeds by using a separate OkHttp threadpool for DM relays and another for media. - In case a user does not have an outbox list, it defaults to all hints seen for that user. Download: http://amethyst.social
2025-08-22 20:54:14 from 1 relay(s) View Thread →
#Amethyst v1.00.3: Feed update fix - Fixes the lack of feed update for those that didn't follow any community - Avoids parsing AI-bad NIP-28 objects - Don't try to decrypt appData unless it is a writeable account - streamlines function calls on AccountViewModel - Removes the HEAD from the release build name Download: http://amethyst.social
2025-08-22 00:17:36 from 1 relay(s) View Thread →
#Amethyst v1.00.2: Bug fixes - Fixes follow/unfollow from hashtags and geohashes - Migrates top nav list to hashtag, geohash and community lists - Fixes community join/leave crash Fixes branch name - Avoids crash when lacking google services in the play version. - Fixes crash when typing a new post without permissions to do a draft post. Download: http://amethyst.social
2025-08-21 18:38:14 from 1 relay(s) View Thread →
#Amethyst v1.00.0: Full Outbox This version completes our migration to the outbox model, where the app dynamically manages the relay list used to pull posts from your follows' own relay lists. By default, the app will connect to relays that aren't in your lists through our embedded Tor. Normal usage will connect to hundreds of relays. Many of them will fail, and that's ok. Nostr has baked-in redundancy; these failures won't affect your experience. New relay lists were added to the UI to help you manage how the app works. Specifically, you can now block relays and add trusted relays. Trusted relays will connect outside of Tor, which is faster, but allows those relays to see your IP. You should only add relays there if you trust the relay operator. Proxy relays (like filter.nostr.wine) can be added to the proxy list. After that, the app will only use those relays to download the content for your feeds, disabling the outbox model. DMs and other non-outbox functionality will still use their own relays. Broadcasting relays can be added to push your events out there. Every new event from the app will be sent to all broadcasting relays. Finally, the new Indexer list allows you to choose which relays to use to find users, like purplepages.es. For users of our Quartz library, we have finished all of the work to change the library's mindset from a fixed list to a dynamic pool of relays. Now, each NIP has its own dedicated folder and defines its own tags and caching structures. This expansion allows us to add diverse functionalities such as relay clients, relay servers, event builders, Nostr filter builders, caching systems, deletion and event hint indexers, helper functions, and more—all specifically tailored to each individual NIP. This modular approach creates the space to develop each NIP independently and integrate them into Amethyst as distinct modules, while still sharing Amethyst's main relay and cache engine when necessary. We expect fewer breaking changes as we move forward with it. At some point, Quartz will move to its own repository and be converted to a Kotlin Multiplatform project for each NIP/module. This will allow us to build demo/testing applications for each NIP in the same repo. This version adds support for: - YakBak Voice Messages - Picture-in-Picture pop-ups - Public Messages - Coolr.chat's Ephemeral Chats - Follow packs - Reads feed in the discovery tab - Hidden cashu tokens in emojis Features: - Reengineered relay, relay pool, and nostr client to manage dynamic pools - Reengineered note cache for a garbage collector-friendly version - Reengineered media pre-loading and caching to minimize layout changes - Reengineered decryption cache, now per account - Reengineered chat channels cache - Reengineered the indexing of Addresses to data classes - Reengineered EOSE cache and managers - Migrates to a Flow-based design for all account information and services - Migrates to a Compose subscription model for relay filters - Adds 90-day expiration to all drafts - Deprecate stringified JSON in favor of tags on user metadata kind 0 events - Adds support for live events at the top of the feed. - Migrates Video events to non-replaceable kinds - Migrates NIP-51 to use NIP-44 encryptions - Migrates Chat, Community, Location, and Hashtag follows to their own lists - Migrates to reply with NIP-22 for everything but kind 1s. - Massively improves relay hint selections - Removes relay picker when sending new posts - Removes general relay list (kind3) - Adds new relay lists: Trusted, Blocked, Proxy, and Broadcasting - Moves most of the Dialogs to full-screen routes - Breaks NewPostScreen and ViewModels into Screens and ViewModels for each supporting NIP - Adds support for creating and replying to NIP-22 geo scope posts - Performance Improvements by not re-verifying duplicated events - Adds Content Sensitivity setting to the Security filter screen - Adds Translation setting to a new screen. - Extends AsyncImage to correctly use pre-loaded aspect ratio and avoid jitter - Adds imeta tags for images and urls inside the content of the Classifieds - Adds new default banner for empty profiles - Finishes the migration from LiveData to Flow - Restructures the old static datasource model into dynamic filter assemblers. - Moves filter assemblers, viewModels and DAL classes to their own packages. - Creates Composable observers for Users and Notes - Unifies all Filter Assembler lifecycle watchers to a few classes - Moves relay authentication to a coordinator class for all accounts in all relays. - Moves the relay NOTIFY parser to its own coordinator class for all accounts - Moves the connection between filters and event cache to its own coordinator class - Adds support for Tor in push notifications - Isolated Connectivity services, from Compose to Flow - Isolated Tor services, from Compose to TorService - Isolated Memory trimming services, from Compose to Flow - Isolated Image Caching services, from Compose to Flow - Isolated Video Caching services - Isolated Logging services - Isolated NIP-95 Caching services - Isolated Pokey receiver services - Isolated OkHttpClient-building services as flows - Hold off on all DM attachments until the message is sent. - Adds previews for any number of urls, events, and media uploads on new post screens. - Adds zap split, zap raiser, and geolocation symbols for DMs and channel messages - Adds picture upload for NIP-28 metadata - Adds support for community relays on NIP-28 - Adds a pool of ExoPlayers when multiple videos are playing - Moves DVM's last announcement restriction from 90 days to 365 days Quartz: - Adds a NostrClient with filter and event outbox cache - Adds a Basic RelayClient and parsers for all relay commands - Migrates signers from callback to suspending functions - Migrates event create functions to builders with templates - Migrates the filter design to a filter per relay - Migrates hardcoded tag filters in events to the Tag's parser and assembly functions. - Normalizes all relay URLs - Formalizes relay hint providers per kind - Event store support with SQLite - Reengineered NIP-55 Android signer and its cache - Reengineered exception handling for signer errors - Adds support for the Request to Vanish NIP - 62 - Migrates all NIP-51 lists to the new event-tag structure. - Migrates Drafts and NIP-04 and NIP-17 DMs to the new structure - Migrates Bookmarks to the new structure - Migrates NIP-56 to the newest tag structure - Adds support for nip70 Protected Tags - Adds full support for nip73 External Content IDs - Adds support for NIP-48 proxy tags - Removes the old "datasource" model - Adds a Bloom-based hint indexer with MurMur hash - Adds a PoW miner - Restructures thread helpers for NIP-10 - Migrates Zap splits, zapraisers, subject, alts, and content warning to their own packages. Dev Team: - nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqpz9mhxue69uhkummnw3ezuamfdejj7qgswaehxw309ahx7um5wghx6mmd9uq3wamnwvaz7tmkd96x7u3wdehhxarjxyhxxmmd9ukfdvuv - nostr:nprofile1qqsfnw64j8y3zesqlpz3qlf3lx6eutmu0cy6rluq96z0r4pa54tu5eqpz9mhxue69uhkummnw3ezuamfdejj7qg0waehxw309ajxzmt4wvhxjme0hynkd5 - nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgpz9mhxue69uhkummnw3ezumrpdejz772u5wm - nostr:nprofile1qqswc4nrhvp4lrjct0ayy0ps8f2hvj8e2guucp63dwcx6m6e8pka9fqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qg7waehxw309ahx7um5wgkhqatz9emk2mrvdaexgetj9ehx2ap00me8jy - nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpzpmhxue69uhkummnw3ezumt0d5hscc6wyt Translations: - Czech, German, Swedish, and Portuguese by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpzpmhxue69uhkummnw3ezumt0d5hscc6wyt - Dutch by nostr:nprofile1qqs82l74z7g3x8j3avpn2wrjrwn855nyvmpxa4v5pftfvtv5lrvrc5cpz9mhxue69uhkummnw3ezuamfdejj7tk0drp - French by nostr:nprofile1qqs8av5uzf4nv2q80chrmp3mj9a9dd6zjw4fmz56hsn2gzar72rxhtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcuvd26f - Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywgpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz9mhxue69uhkwmn0wd68ytnrdakj7qgkwaehxw309ahx7um5wghxx7npwvh8qmr4wvhsrpff27 - Chinese by nostr:nprofile1qqsyxnuhnymz0u0xru2watmqe25vlh8vzzje9jhlsfgvsff9942gc9gpr9mhxue69uhhyetvv9ujumt0d4hhxarj9ecxjmnt9uq3vamnwvaz7tmjv4kxz7fwd4hhxarj9ec82c30qy28wumn8ghj7atn9ehx7um5wgh8w6twv5hsung0qr - Slovenian by nostr:nprofile1qqsqqqqqqp0fmkspg7w8d305ln96a0jw0ptwqtuwskkm5pddv2kkjfcpyfmhxue69uhk6atvw35hqmr90pjhytngw4eh5mmwv4nhjtnhdaexcep0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj72epxz8 - Thai by nostr:nprofile1qqsxdhmq2cke8xk6scfyxeyfj3dyancavg6xk0v50r023gec7vsrceqppemhxue69uhkummn9ekx7mp0qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhskamkgc - Bengali by nostr:nprofile1qqsgs9hgjw87vz36jf2r83m5zree2q87zvs8s7kty9jljdz7wprytyspremhxue69uhkummnw3ezu6m0de5kueedv3jkwunpv9nzumnv9uq3kamnwvaz7tm5d4cz6un9d3shjtnrv4ekxtn5wfskgef0qy28wumn8ghj7mn0wd68yt3k8quzummjvuhsg63aw2 - Hindi by nostr:nprofile1qqs88dt78wgnzvaph6fcstfvsd98xc2qs8eg8tllwv2zlutu8ehec2cpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcy8dumx - Spanish by nostr:nprofile1qqs07tjpyvvlq9ugdpax8h3jfrpwn7kr72k3tc7ky83tggn4et9eangprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzemhxue69uhkumm5d9n8jtnyv9kh2uewd9hj7cn2zey - Hungarian by nostr:nprofile1qqs88rmfrp9wmfn4qq4kslly0j8futmmrgn86mu3gkc3jvcjl97p3mcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhkummnw3ezummcw3ezuer9wchsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0m7mtdy and nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acsk5trt8 - Persian by nostr:nprofile1qqsvq73w5j9kw573rtff6c3fyh953w45328n3625apdwc3548gr49gsppemhxue69uhkummn9ekx7mp0q6fpv8 Download: http://amethyst.social
2025-08-21 15:07:33 from 1 relay(s) View Thread →
#Amethyst v0.94.3: Adds iMeta tags to GIF urls - Adds iMeta tags to GIF urls to optimize GIF previews - Fixes the extra empty kind 20 post when uploading videos on the media tab - Fix: Only close the upload screen if the video upload is a success on the Media tab - Maintains note reaction visibility when scrolling by nostr:nprofile1qqsrv06lgp4ht6m0sxnj4gdy389k5a6j8chpfyllrcvdaanyrhpgy6sppemhxue69uhkummn9ekx7mp0qywhwumn8ghj7mn0wd68ytnzd96xxmmfdejhytnnda3kjctv9uq3qamnwvaz7tmwdaehgu3wd4hk6tcn9dn9s Download: http://amethyst.social
2025-01-05 17:32:07 from 1 relay(s) View Thread →
#Amethyst v0.94.2: Fixes Tor leaks This release fixes two Tor leaks introduced during the migration of two APIs in v0.94.0. The new relay API contained a bug that bypassed the user's Tor preference for relays and the migration to Coil3 implemented a one-time cache for the Tor preference, preventing it from reflecting subsequent changes for image loading. Thanks to nostr:nprofile1qqs00asdsdrh66agvx5xx2rcf503cm4qmuhh4msyuh4hwclns2d3d7gpz9mhxue69uhkummnw3ezuamfdejj7qgswaehxw309ahx7um5wghx6mmd9uksw6hs for the Tor audit Download: http://amethyst.social
2025-01-04 23:02:14 from 1 relay(s) View Thread →
#Amethyst v0.94.1: GIFs and Custom Emoji inputs This version adds a : command to link custom emojis on new posts and chats. Similar to the @ for user search, just start typing to find your custom emojis. When you see the list of emojis, click on the emoji to add it as an inline emoji OR click on the right button to add as a regular URL in the post. Create your GIF and rection libraries on emojito.meme . Make sure to bookmark your and/or other people's emoji packs to add them to Amethyst's `:` list. Happy shitposting. Download: http://amethyst.social
2025-01-04 01:45:12 from 1 relay(s) View Thread →
#Amethyst v0.94.0: Encrypted Media on DMs Now every upload on DM chats will be encrypted to the destination's pubkey following the same spec 0xChat uses. This offers a massive update in privacy from the common "hidden link" design. The encrypted blobs are sent to NIP-96 and Blossom servers. Make sure your server accepts encrypted blobs. Sattelite and void.cat do accept. We redesigned our upload screens to allow multiple images/videos on new posts, stories, and chat encryption. Error handling was also improved with the screens now allowing you to try again on a different server. Features: - Adds support for encrypted media uploads on NIP-17 DMs by nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqpzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezuamfdejj7qgwwaehxw309ahx7uewd3hkctcscpyug - Integrates with Pokey's Broadcast receiver. - Expands the Around Me filter to 50km - Shows NIP-22 replies in the replies tab of the user profile - New upload screen for chats - When uploads fail, the screen stays live to allow changing the server and trying again. - Improves the padding in the layout of the gallery - Allows multi-image posts to be displayed in the Profile Gallery - Refactors zap the error message screen to allow sending messages directly to each split receiver with their error - Adds support for multiple media uploads at the same time. - Adds support to display PictureEvents with multiple images at the same time - Adds QR code private key export dialog by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00whu7w - Added Gamestr custom hashtag icon by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00whu7w - Switches to the right account from push notification click - Adds new picture and video events to the user profile gallery - Adds basic support for RelationshipStatus to Quartz Fixes: - Fixes bug that resets localhost relay settings. - Moves to using cancellable coroutines to avoid canceling the parent thread altogether. - Fixes the navigation padding on Samsung devices for the Shorts tab. - Fixes the chat's input field behind Samsung's app bar on tablets - Fixes notes appearing of replies for some recipes - Removes the swipe to delete draft from right to left. Only left to right remains available. - Solves crashing when a p-tag contains only "ffff" - Fixes edge-to-edge issues when the keyboard is shown on the Media Server settings. - Fixes keyboard overriding the relay settings screen - Fixes double quotes on NIP-28 Channel messages - Fixes cosine caching on Blurhash - Fixes download and loading image icon not showing on posts when text overflow by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7auvdel - Fixes lack of notification when a new account is logged into the app and before the app restarts. - Fixes displaying an old result when coming back to a DVM screen - Fixes the bugs from migrating video events to imeta tags - Removes pull to refresh from the gallery Performance: - Increases the number of possible active video playbacks on the screen to 20 - 10x better performance on Blurhash generation - Improves search by npubs to use all relays. UI Improvements: - Avoids cutting off some of the users in the Pay intent screen - Adds toast message when the video/image starts downloading by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00whu7w - Remove crossfades and double composition on image loading/success - Improves Uploading feedback for the NewPost screen - Optimizes user search to account for names that start with the typed prefix - Several accessibility improvements by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00whu7w - Simple refactoring to newer versions of the clickable text - Migrates Video events to imeta tags - Removes youtu.be links from the video feed. - Checks for video file types in uppercase as well as lowercase Code quality: - Move relay dialog to a route by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7auvdel - Refactors user tagging lists to generalize them - Updates zoomable, vico, mockk, kotlin, compose Bom, firebase, navigation compose, android camera libs and adaptive acompanist - Refactors Ammolite to remove the dependency on OkHttp to prepare for KTor and multiplatform settings. - Reduces the singleton coupling between Client and RelayPool. - Removes troublesome dependency on blurhash encoder library - Restructures contentScale for Images and Video dialogs - Refactors Media Uploaders to improve code reuse - Refactors iMeta usage on Quartz to move away from NIP-94 - Removes the use of nostr: uri for notifications - Enables a new screen to be routed when new logins happen - Removes the contract of the old image picker - Simplifies the Gallery stack - Separates event class that manages general lists and abstracts another intermediary class that manages private tag arrays in its content. Updated translations: - Czech, German, Swedish, and Portuguese by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00whu7w - Dutch by nostr:nprofile1qqs82l74z7g3x8j3avpn2wrjrwn855nyvmpxa4v5pftfvtv5lrvrc5cpzemhxue69uhkummnw3ex2mrfw3jhxtn0wfnj7wuya2h - French by nostr:nprofile1qqs8av5uzf4nv2q80chrmp3mj9a9dd6zjw4fmz56hsn2gzar72rxhtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcuvd26f - Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywg25ynng - Chinese by nostr:nprofile1qqsyxnuhnymz0u0xru2watmqe25vlh8vzzje9jhlsfgvsff9942gc9gpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpr9mhxue69uhhyetvv9ujumt0d4hhxarj9ecxjmnt9uq3kamnwvaz7tmjv4kxz7fwwajhxar9wfhxyarr9e3k7mf0ey7g93 - Slovenian by nostr:nprofile1qqsqqqqqqp0fmkspg7w8d305ln96a0jw0ptwqtuwskkm5pddv2kkjfcpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3vamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmnyqyw8wumn8ghj7mn0wd68ytfsxyh8jcttd95x7mnwv5hxxmmdt6c3x3 - Thai by nostr:nprofile1qqsxdhmq2cke8xk6scfyxeyfj3dyancavg6xk0v50r023gec7vsrceqpp4mhxue69uhkummn9ekx7mqpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmc25yu8l - Bengali by nostr:nprofile1qqsgs9hgjw87vz36jf2r83m5zree2q87zvs8s7kty9jljdz7wprytyspremhxue69uhkummnw3ezu6m0de5kueedv3jkwunpv9nzumnv9uq3kamnwvaz7tm5d4cz6un9d3shjtnrv4ekxtn5wfskgef0qy28wumn8ghj7mn0wd68yt3k8quzummjvuhsg63aw2 - Hindi by nostr:nprofile1qqs88dt78wgnzvaph6fcstfvsd98xc2qs8eg8tllwv2zlutu8ehec2cppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgswaehxw309ahx7um5wghx6mmd9uuk7l82 - Spanish by nostr:nprofile1qqs07tjpyvvlq9ugdpax8h3jfrpwn7kr72k3tc7ky83tggn4et9eangprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzamhxue69uhhyetvv9ujuen0w4h8gctfdchxvmgacqrg2 - Hungarian by nostr:nprofile1qqs88rmfrp9wmfn4qq4kslly0j8futmmrgn86mu3gkc3jvcjl97p3mcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhkummnw3ezummcw3ezuer9wchsz8nhwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgtcqngjsj and nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acspzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7cvmj2d - Persian by nostr:nprofile1qqsvq73w5j9kw573rtff6c3fyh953w45328n3625apdwc3548gr49gspzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qg3waehxw309ahx7um5wgh8w6twv5hsw0e34v Download: http://amethyst.social
2025-01-03 16:01:32 from 1 relay(s) View Thread →
#Amethyst v0.93.1: Fixes and adjustments - Moves to NIP-22 to reply to Interactive Stories. - Adds amount and personalizations labels to the DVM feed - Fixes Satellite's blossom upload - Fixes incorrect reply order when the direct reply is also included as a quote. - Fixes image upload tests - Fixes the bug on not having the video feed at the top when loading the app from scratch. - Fixes screen mispositioning when rotating the phone on full screen video/image dialogs. - Fixes images on DVM profiles - Fixes badge crash - Fixes missing reactions on video feeds - Improves performance of the Hex encoder. - Improves the layout of the discovery feed items - Updates jackson, secp256k1 and AGP Download: http://amethyst.social
2024-12-05 17:01:32 from 1 relay(s) View Thread →
#Amethyst v0.93.0: Blossom, Olas, Around Me feeds and Interactive Stories. Adds support for displaying NIP-63 Interactive Stories Adds support for Blossom media servers Adds support for Olas' Image feeds Adds support for Around Me feed with posts that only show up in that location New Features: - New Android Image/Video Picker - Adds support for pronouns on profile - Migrates Video uploads from NIP-94 to NIP-71 Video events - Migrates Picture uploads from NIP-94 to NIP-68 Picture events - Adds support for BUD-01, BUD-02, and BUD-03 - Adds support for NIP-22 Comments - Adds nip05 field to the hidden words filtering by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Adds support for q tags with addresses - Adds search.nos.today to bootstrapping relays for search - Adds DM and Search default buttons to the relay screens - Adds hidden words filter to search, hashtag and geotag feeds - Applies hidden words even to hashtags that were not included in the content of the event. - Adds support for saving reactions, zaps, translations user preferences on private outbox relays UI Improvements: - Adds animations to the zap, reaction and boost popups by nostr:nprofile1qqsrv06lgp4ht6m0sxnj4gdy389k5a6j8chpfyllrcvdaanyrhpgy6sppemhxue69uhkummn9ekx7mp0qywhwumn8ghj7mn0wd68ytnzd96xxmmfdejhytnnda3kjctv9uq3qamnwvaz7tmwdaehgu3wd4hk6tcn9dn9s - Lighter chat bubbles - Date separators on chats - Adds unfollow to note dropdown by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Improves (Show More) presence to only when it actually makes a difference. - Adds UI for when the location permission is rejected. - Improves error message for the signup page when the display name is blank - Adds extra padding for the zap setup screen - Pre-process search to avoid showing and hiding posts after hidden words where processed by the UI. - Rotate on full screen video if the device orientation is not locked by nostr:nprofile1qqswc4nrhvp4lrjct0ayy0ps8f2hvj8e2guucp63dwcx6m6e8pka9fqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshsz8thwden5te0dehhxarj9e3xjarrda5kuetj9eek7cmfv9kz7m6x5fq BugFixes: - Fixes account creation that follows itself - Fixes translations of http urls - Fixes search bug that mixed geohashes and hashtags - Fixes issue with the order of multiple same-author events in a thread - Fixes drafts appearing for other logged in accounts by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Fixes jumping of scroll when the thread updates - Fixes app hanging when switching to accounts due to waiting to decrypt the blocked user list that might not exist - Fixes initial decryption of mutelists when using amber by nostr:nprofile1qqs827g8dkd07zjvlhh60csytujgd3l9mz7x807xk3fewge7rwlukxgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qgswaehxw309ahx7um5wghx6mmd9usjfpck - Fixes crash on empty p-tags on new replies nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Fixes translations preferences changes running on the main thread by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Fixes some images being saved as videos nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Fixes missing notifications when multiple accounts tried to decrypt it - Fixes lack of zap progress updates when there is a private zap the user cannot decrypt or when a nwc payment fails. - Fixes saving the scrolling position when navigating between multiple threads. - Fixes rendering cache of notes in thread view which kept replies in the wrong thread level - Fixes reply level calculation caching - Fixes poll's background rendering with the right percentages - Fixes "null" strings on profile fields. Code Quality Improvements: - Refactors FeedStructures to prepare for custom feeds - Updates Account architecture to operate feeds with location - Custom Empty Feed Screen for Notifications - Fully Deprecates note1, removing the last usages of the standard - Removes unused encryption fields from NIP-94 - Moves the parallel processing amber calls to a utils class - Refactors location to operate as a flow - Unifies location Flows and geoHash Flows into one - Make location flows react to changing location permissions on the fly - Moves NIP-44 test model classes to a new file - Improves GitHub actions to prepare debug apks in every commit - Upgrades to Coil 3 - Updates AGP, kotlin, runtime, compose, camera, corektx, media3, firebase, fragment, navigation, jna, jackson, accompanist, kotlin serialization, mockk, coroutines-test and kotlin collections Performance: - Improves thread preloading - Adds a cache for reply levels when viewing threads. Updated translations: - Czech, German, Swedish and Portuguese by nostr:nprofile1qqsv4zwtz8cuwh2mvc3zdrl5853g365t9j6mn25edlul7uz0eyzt0zcpz4mhxue69uhkummnw3ezummcw3ezuer9wchs8lukyd - Dutch by nostr:nprofile1qqs82l74z7g3x8j3avpn2wrjrwn855nyvmpxa4v5pftfvtv5lrvrc5cpz9mhxue69uhkummnw3ezuamfdejj7tk0drp - French by nostr:nprofile1qqs8av5uzf4nv2q80chrmp3mj9a9dd6zjw4fmz56hsn2gzar72rxhtcppemhxue69uhkummn9ekx7mp0qyg8wumn8ghj7mn0wd68ytnddakj7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcuvd26f - Polish by nostr:nprofile1qqsdyfz0ewdhmgp3a4r3pxvezx5r8yalrgvjn38v2ml5qrusnv7yywg25ynng - Chinese by nostr:nprofile1qqsyxnuhnymz0u0xru2watmqe25vlh8vzzje9jhlsfgvsff9942gc9gpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpr9mhxue69uhhyetvv9ujumt0d4hhxarj9ecxjmnt9uq3kamnwvaz7tmjv4kxz7fwwajhxar9wfhxyarr9e3k7mf0ey7g93 - Slovenian by nostr:nprofile1qqsqqqqqqp0fmkspg7w8d305ln96a0jw0ptwqtuwskkm5pddv2kkjfcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qg3waehxw309ahx7um5wgh8w6twv5hsv9puet - Thai by nostr:nprofile1qqsxdhmq2cke8xk6scfyxeyfj3dyancavg6xk0v50r023gec7vsrceqpp4mhxue69uhkummn9ekx7mqpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmc25yu8l - Bengali by nostr:nprofile1qqsgs9hgjw87vz36jf2r83m5zree2q87zvs8s7kty9jljdz7wprytyspremhxue69uhkummnw3ezu6m0de5kueedv3jkwunpv9nzumnv9uq3kamnwvaz7tm5d4cz6un9d3shjtnrv4ekxtn5wfskgef0qy28wumn8ghj7mn0wd68yt3k8quzummjvuhsg63aw2 - Hindi by nostr:nprofile1qqs88dt78wgnzvaph6fcstfvsd98xc2qs8eg8tllwv2zlutu8ehec2cpzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09u24r32h - Spanish by nostr:nprofile1qqs07tjpyvvlq9ugdpax8h3jfrpwn7kr72k3tc7ky83tggn4et9eangprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzamhxue69uhhyetvv9ujuen0w4h8gctfdchxvmgacqrg2 - Hungarian by nostr:nprofile1qqs88rmfrp9wmfn4qq4kslly0j8futmmrgn86mu3gkc3jvcjl97p3mcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhkummnw3ezummcw3ezuer9wchsz8nhwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgtcqngjsj and nostr:nprofile1qqsxekg0s8kxpcrka8ccwztv2m73kz6jy0ur8f7jc04rwr5p44w5acspzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcxc5pc7 - Persian by nostr:nprofile1qqsvq73w5j9kw573rtff6c3fyh953w45328n3625apdwc3548gr49gspzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz7qg3waehxw309ahx7um5wgh8w6twv5hsw0e34v
2024-11-27 15:32:52 from 1 relay(s) View Thread →
#Amethyst v0.92.7: Empty mute list fix - Fixes empty mute lists and mute words when Amethyst was unable to decrypt the list. Download at http://amethyst.social
2024-10-19 22:54:15 from 1 relay(s) View Thread →
#Amethyst v0.92.6: UI updates for Android 15 - Fixes the Share target for GIF keyboards - Fixes the update the of the share target when it's already open - Fixes zapraiser progress bar - Fixes poll rendering - Reduces the font size for the translation label - Fixes margin of poll options with translation - Fixes array too big because strfry blocks more than 20 filters Download at http://amethyst.social
2024-10-17 22:27:11 from 1 relay(s) View Thread →