Damus
Amethyst profile picture
Amethyst
@Amethyst
#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 @nprofile1q...
- Polish by @Polak
- Chinese by @CXPLAY
- Slovenian by @StellarStoic
- Thai by @123🦈ปลาฉลามขึ้นบก
- Bengali by @Cats😺
- Hindi by @राज
- Spanish by @⚡₿it₿y₿it⚡
- Hungarian by @Zoltan ⚡️ and @summoner
- Persian by @L

Download: http://amethyst.social
451❤️70🚀13❤️11👍10🤙9💜8
Aldwin · 28w
Downloaded the 1.00.2 version from Zapstore today and it's working excellently! The client dynamically managing the relay list sounds like how I always imagined it should work. The relay block feature is very useful for blocking bridge-relays and seeing only Nostr-native content. I'm still looking f...
DarkRoastJedi⚡️ · 28w
Love to try out the updated version. Not yet updated on Play Store.
Chris · 28w
Great job! Responsiveness has noticeably improved. Definitely seeing more notes as well.
shortwavesurfer2009 · 28w
Jesus, you guys just rewrote the entire damn app, basically. Or that's at least how it seems.
Nichro · 28w
Which such a big update, is it a good idea to reset relay settings back to default? I've been due for a relay cleanup anyway
adenglobal · 28w
We are looking for an investor who can loan our holding company 237,000 US dollars. With this money, we will open a farm in Baku, Azerbaijan to produce animal-based food. We will also make our own animal feed, so our products will be healthier, better quality, and cheaper. Because we sell quality...
AceaSpades · 28w
Now THAT is a release note!
Walt Munny · 28w
I like very much how you implemented a default tor connection to untrusted relays
Global Sports Central · 28w
How to yakbak on amethyst?
the axiom · 28w
what is this green progress bar?
⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷🇦🇹 · 28w
Videos posted from #amethyst now appearing in other vlog clients (eg Vlogstr)
Jay · 28w
Testing post editor with drafts disabled
Happy₿ear🇮🇱 · 28w
How can I zap manual amount?
rejon · 28w
amazing
OK3E · 27w
After the last update to 1.00.5 Amethyst is no longer posting my notes to the #community. I'm visiting njump.me to check the tags and it's not getting subscribed. This is one of the few features that makes me choose Amethyst. I had already tried to write this message here, but I think it also got l...
OK3E · 27w
When writing a message here I am forced to select my message and relay it because it does not appear that it was sent to any relay. https://blossom.primal.net/ec10cc5467bfbaeb1686134c509779a65acfde90345ba95a7cd52a1555726567.png Please take a look at this image that describes well what I've been go...
MAgda · 27w
Ok
Naluz · 20w
O governo brasileiro pretende matar o próprio povo, eles começaram a desligar energia de cidades e ligar a vi como que o povo vai reagir. Os governantes pretendem desligar a energia do Brasil todo de todos os hospitais de toda a internet e e das telecomunicações eles querem fazer um esporgo tota...
Naluz · 20w
Não sei para quem pedi SOCORRO o governo brasileiro quer eliminar o próprio povo e controla totalmente. Não há democracia se por acaso o Senado ou os deputados federais não quiserem aprovar a lei que o presidente quer que seja aprovada ele simplesmente vira as costas a democracia e vai até o S...
Naluz · 20w
Querem aprovar uma lei no qual todos os universitários vão ter que pagar em posto o que está fazendo faculdade independente da cota racial ou não. Vai ser lei vai ter que pagar imposto pra estudar. Eles não querem que eu quero o povo tenha conhecimento, ou seja inteligente. E eles venderam uma ...
Naluz · 20w
Se você tem dólares em algum banco digital se prepara, eles vão tomar tudo até dos bancos físicos. O governo brasileiro vai tomar pra que você não possa recorre e correr daqui do Brasil.
Naluz · 20w
Todos vão pra luz querendo ou não. Isolaram um Rio Grande do Sul pra ver se o povo ia ficar com dó do povo lá do Rio Grande do Sul como o povo não reagiu não ficou com dó eles vão fazer isso em todos os estados você vai ter que ter justificativo por que que você está indo ao estado difere...
Naluz · 20w
Já tem famílias nos estados do norte morrendo de fome.. No Maranhão, estão fazendo um mercado negro de órgãos humanos, a pessoa chega no hospital com uma dor de cabeça e simplesmente morre porque eles descobriram que a pessoa tem um tipo sanguíneo e os órgãos bom pra vender no mercado negr...