Skip to content

Releases: vitorpamplona/amethyst

Release v1.03.0: Built-in video recording

02 Sep 18:29
Compare
Choose a tag to compare

#Amethyst v1.03.0: Built-in video recording

New Features:

  • Adds "record and post video" button to new Post Screens by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • 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 @npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k
  • 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 @npub16gjyljum0ksrrm28zzvejydgxwfm7xse98zwc4hlgq8epxeuggushqwyrm
  • Hungarian by @npub1dnvslq0vvrs8d603suykc4harv94yglcxwna9sl2xu8grt2afm3qgfh0tp

Download: http://amethyst.social

Release v1.02.1

29 Aug 11:52
Compare
Choose a tag to compare
  • 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.

Release v1.02.0 NIP-17 Crash report DMs

28 Aug 21:20
Compare
Choose a tag to compare

#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

Release v1.01.0: New Community Implementation

27 Aug 13:27
Compare
Choose a tag to compare

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

Release v1.00.5

23 Aug 15:21
Compare
Choose a tag to compare
  • Fixes a crash from multiple relays in the same line when following two specific users
  • Updates translations

Release v1.00.4

22 Aug 20:45
Compare
Choose a tag to compare
  • 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.

Release v1.00.3: More fixes

22 Aug 00:27
Compare
Choose a tag to compare
  • Fixes the lack of feed update for those who 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

Release v1.00.2: BugFixes

21 Aug 18:47
Compare
Choose a tag to compare

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.

Release v1.00.1: Fix app name

21 Aug 16:35
Compare
Choose a tag to compare

Release v1.00.0: Full Outbox

21 Aug 15:28
Compare
Choose a tag to compare

#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:nprofile1qqsvq73w5j9kw573rtff6c3fyh953w45328n3625apdwc3548gr49gsppem...
Read more