Amethyst's avatar
Amethyst
amethyst@vitorpamplona.com
npub142gy...xrj0
Nostr Client for Android
Amethyst's avatar
Amethyst 7 months ago
#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: - @Vitor Pamplona - @Don't Believe The Vibe 🌱🍋🍊 - @greenart7c3 - @KotlinGeek - @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 Translations: - Czech, German, Swedish, and Portuguese by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Dutch by @Bartus - French by @Anthony 🇫🇷 - Polish by @Polak - Chinese by @CXPLAY - Slovenian by @StellarStoic - Thai by @123🦈ปลาฉลามขึ้นบก - Bengali by @Cats😺 - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Hungarian by @npub1ww8k...nvtp and @summoner - Persian by @L Download:
Amethyst's avatar
Amethyst 1 year ago
#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 @Chris for the Tor audit Download:
Amethyst's avatar
Amethyst 1 year ago
#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:
Amethyst's avatar
Amethyst 1 year ago
#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 @Vitor Pamplona - 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Added Gamestr custom hashtag icon by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @greenart7c3 - 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @greenart7c3 - 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Dutch by @Bartus - French by @Anthony 🇫🇷 - Polish by @Polak - Chinese by @CXPLAY - Slovenian by @StellarStoic - Thai by @123🦈ปลาฉลามขึ้นบก - Bengali by @Cats😺 - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Hungarian by @npub1ww8k...nvtp and @summoner - Persian by @L Download:
Amethyst's avatar
Amethyst 1 year ago
#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:
Amethyst's avatar
Amethyst 1 year ago
#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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @Giovanni - Lighter chat bubbles - Date separators on chats - Adds unfollow to note dropdown by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @KotlinGeek 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @greenart7c3 - Fixes crash on empty p-tags on new replies @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Fixes translations preferences changes running on the main thread by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Fixes some images being saved as videos @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - 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 @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Dutch by @Bartus - French by @Anthony 🇫🇷 - Polish by @Polak - Chinese by @CXPLAY - Slovenian by @StellarStoic - Thai by @123🦈ปลาฉลามขึ้นบก - Bengali by @Cats😺 - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Hungarian by @npub1ww8k...nvtp and @summoner - Persian by @L
Amethyst's avatar
Amethyst 1 year ago
#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
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.92.4: Share to.. Amethyst - Makes Amethyst a share target for texts, images and videos - Fixes new media post dialog for the edge to edge borders - Fixes padding of the new new post screen - Changes the new post screen to use the non-disappearing version of the scaffold by @Giovanni - Fixes the write status of outbox/inbox relays on new posts Download at
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.92.3: Shorts fling behavior bugfix. - Uses the same Reaction animation to also do Boosts and speeds up animation - Reverts hack for fling behavior with misaligned end goals on the Vertical Pager - Updates to AGP 8.7.1 and SDK 35 - Do not bring the keyboard when the search field reappears. - Fixes Thread view when loading a reply of a thread that is not cached yet. Download at
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.92.2: More animations This is the first release of our new contributor @Giovanni Features: - Adds animation to notification chart by @Giovanni - Adds animation to FABs by @Giovanni - Adds animation to zap and reaction popups by @Giovanni - Adds new fields on vision prescriptions - Prioritize search results that start with the search term by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 Bug Fixes: - Fixes the ability to see muted lists in Shorts - Use "use" blocks to close resources automatically by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Fixes the shorts feed not aligning with the padding of the screen - Fixes the Zap Setup re-openning when going back after the setup was completed from Alby - Prevent clicks outside reaction and zap popups by @Giovanni - Video Rotation: actually rotate if the device orientation is not locked by @KotlinGeek Performance - Faster logout processing without closing the account switcher dialog. Code Quality Improvements: - Support for login with hex key when using amber - Updates the API with amber from signature to result - Adds some test cases for video compressions - Adds Unknown media type test - Updates AGP and compose, fragment, navigation, benchmarking and firebase libraries. Updated translations: - Czech, German, Swedish and Portuguese by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Dutch by @Bartus - French by @Anthony 🇫🇷 - Polish by @Polak - Chinese by @CXPLAY - Slovenian by @StellarStoic - Thai by @123🦈ปลาฉลามขึ้นบก - Bengali by @Cats😺 - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Hungarian by @npub1ww8k...nvtp Download at
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.92.0: Tor and NFC-hosted transient accounts This version ships with a Tor service enabled by default to access .onion urls and untrusted relays from the Outbox model. It also offers NFC-hosted transient accounts: accounts that log off as soon as the app goes to the background, deleting all traces of the account from the phone. Write your ncryptsec to an NFC tag and hide it in your clothing. When you need to use Amethyst, tap the tag, insert your password and login. Lock the screen to delete everything. If you are an activist and if your phone is confiscated, they will never find anything on the phone. Not even your public key. Ncryptsec is a NIP-49-based password-encrypted nsec. If you need, you can destroy and dispose the NFC tag. Features: - Adds tor node - Adds multiple settings for the use of Tor - Adds privacy presets to simplify Tor choices - Adds support for NFC-hosted transient accounts - Adds button to take and add pictures from camera by @greenart7c3 - Adds Uncompressed option when uploading media by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Adds support for Bloom filters - Adds zapstore yaml setup - Adds mempool api to verify OTS via Tor Bug Fixes - Fixes the zap options available for the Zap the Devs button - Fixes edit draft not working when using the quick action menu by @greenart7c3 - Fixes opengraph url preview tags from substack by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Fixes the parsing of d-tags with colons in them - Fixes back button not working after opening a nostr link from the web - Fixes push notifications when using amber by @greenart7c3 - Fixes NIP-47 implementation to force relay for the NWC connection. - Fixes OTS web calls via Tor using mempool's api - Fixes the loading of localhost urls using Tor - Fixes .onion urls not using tor even if available - Fixes show buffering animation when loading videos - Fixes folowing icon position on chat user pictures Performance - Starts to build all OkHttp clients from a main root client to keep the same thread pool - Caches OTS web calls to avoid pinging the server repeatedly for the same event. Code Quality Improvements: - Updates navigation compose, lifecycle, fragment, activity, composeBoms and AGP to 8.6.1 - Improves OTS Verification error messages Updated translations: - Czech, German, Swedish and Portuguese by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Dutch by @Bartus - French by @Anthony 🇫🇷 - Polish by @Polak - Chinese by @CXPLAY - Slovenian by @StellarStoic - Thai by @123🦈ปลาฉลามขึ้นบก - Bengali by @Cats😺 - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Hungarian by @npub1ww8k...nvtp Download via
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.91.0: Edge to edge feeds Hidden words now filter by the user's fields as well. You can hide by name, profile picture, banner, lightning and nip-05 addresses and about me fields. Features: - Finishes Edge to Edge transition for Android 15 - Adds compression settings to the media uploading screen by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Adds sliding animations in all inner screens - Adds copy stack to clipboard for error messages that have an exception - Enables the use of hidden words for all visible properties of the user Bug Fixes - Fixes blank alt field when no alt text is provided on NIP-96 - Fixes missing Private Home/Outbox relay list after loading from backup - Fixes keyboard padding issues when using physical keyboards on the message screens. - Fixes token sanitization when using gcompatup with unified push by @greenart7c3 - Fixes moving top buttons on the full screen dialog for images and videos. - Fixes weird padding of the key backup screen - Fixes using npub instead of pubkey in hex when communicating with Amber - Fixes blinking on crossfades when the system's light/dark theme is different than the app's theme - Fixes a mix of languages after changing language in Settings - Fixes disables saving m3u8 files locally (streaming can't be saved) - Fixes Community tab not loading up with Global filter - Fixes size of default banner when the profile is not loaded yet. Code Quality Improvements: - Inverts Layouts to place Navigation on top of Scaffold and allow custom scaffolds per route - Refactors navigation to improve clarity - Restructures screens into their own packages - Restructures navigation functions as a single object - Refactors all TopBars to use default material 3 ones - Simplifies the "and 2 more" translations for the relay recommendation user lists - Removes unnecessary observers from the transition in the bottom nav layouts. - Normalizes cache directories in the Application class - Fixes text field recompositions because of new keyboard actions - Moves the profile zap to threads - Updates to AGP 8.6.0 - Updates zoomable and kotlin serialization Updated translations: - Czech, German, Swedish and Portuguese by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Thai by @123🦈ปลาฉลามขึ้นบก - Dutch by @Bartus - Hungarian by @npub1ww8k...nvtp - Bengali by @Cats😺 - Polish by @Polak - Hungarian by @npub1ww8k...nvtp - Chinese by @CXPLAY Download via [Obtainium](http://amethyst.social) or [Zap.Store](https://zap.store/)
Amethyst's avatar
Amethyst 1 year ago
#Amethyst v0.90.0: Torrents and Outbox restructuring image This version adds support for NIP-35 Torrent files (dtan.xyz), adds significant memory pruning for encrypted payloads and large events (DMs, Notifications, Zaps, etc), and completely restructures the way most of our caching works to facilitate immediate subscription updates using the outbox model on custom feeds by NIP-51 lists. This version also offers new defaults for NIP-65 and DM relay lists for new users and fixes several bugs and inconsistencies. Features: - Adds support for NIP-35 torrents and their comments - Adds a simplified sync Signer to the Quartz library - Adds Default lists for NIP-65 inbox and outbox relays - Adds Default lists for Search relays - Adds local backup for UserMetadata objects - Adds local backup for Mute lists - Adds local backup for NIP-65 relays - Adds local backup for DM Relays - Adds local backup for private home relays - Improves caching of encrypted DMs - Updates Twitter verification to X - Improves the rendering of QR Codes - Adds support to Delete All Drafts Code Quality Improvements: - Separates Account actions from Account state in two objects - Changes Startup procedures to start with Account state and not the full account object - Moves scope for flows in Account from an Application-wide scope to ViewModel scope - Removes all LiveData objects from Account in favor of flows from the state object - Migrates settings saving logic to flows - Migrates PushNotification services to work without Account and only Account Settings. - Migrates the spam filter from LiveData to Flows - Rewrites state flows initializers to avoid inconsistent startups - Finishes the migration of the service manager to the Application class - Moves to hold the all feeds in stateflows - Updates benchmark, composeBOM and firebaseBOM to the latest versions - Moves the default zap type to a state flow and avoids passing on to the screen when using the default value - Removing unecessary livedata objects for translation services - Moves lastread routes to mutableStateFlow - Migrating livedata to flow for contact list updates of the user. - Adds a destroy method to FollowList state for consistency - Moves follow list states to the AccountViewModel - Migrates Notification Summary to the new state model - Moves the notification screen to the new state model instead of viewModels - Refactoring Moving feed status from ViewModel to State objects Interface Improvements: - Show only 3 users in the recommended relays section - Creates links to njump when events can't be found on Amethyst - Adds support for MOD reports - Displays commitment PoW if present - Changes relay set kind to be NIP-51 consistent. - Adds more information to when error messages are not available in the relay stats. - Adds context to highlight events - Adds previews to test markdown rendering - Improves the look of inlinde code in markdown - Improves badge display Performance Improvements: - Adds pruning for giftwrapped messages - Fixes clearing of flows and live data object pools before removing notes from the local cache - Improves stability of composables - Migrates caching of decrypted value outside of the Event class - Removes encrypted parts of NIP-17 from the cache - Removes old NIP-04 messages from the cache - Avoids deleting new NIP-17 plain text chats from memory - Avoids bottom nav recompositions - Simplifies nav bar selected calculations - Avoids remembering edit lists that will never exist. - Improves speed of chatlist rendering Bug Fixes: - Fixes lingering cache and threads still active after killing the app - Fixes crash when opening the Relay screen with empty urls as relays. - Fixes horizontal padding of the chat messages - Fixes the download of 1000s of NIP-65 relay lists because some relays consider empty lists as null and return everything. - Fixes fdroid push registration to re-register even if the saved distributor was already selected. - Fixes crash when the relay url of a user is duplicated. - Fixes padding of short quotes - Fixes slow down when the last message on chat is a base64 image. - Fixes the centralization of the "and more" part of relay recommendations - Fixes miscaching flows of the relay lists from follows. - Fixes miscache of hashtag following button - Fixes heading sizes on markdown - Changes Delete all events to use maximum chunks of 200 elements to avoid the 65KB stringified JSON limit of many relays. Updated translations: - Czech, German, Swedish and Portuguese by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 - Polish by @Polak - French by @Anthony 🇫🇷 - Arabic, Bengali by @Cats😺 - Thai by @123🦈ปลาฉลามขึ้นบก and @siamstr.com - Hindi by @राज - Spanish by @⚡₿it₿y₿it⚡ - Dutch by @Bartus - Chinese by @CXPLAY and @rasputin - Hungarian by @npub1ww8k...nvtp Download via [Obtainium](http://amethyst.social) or [Zap.Store](https://zap.store/)