github vitorpamplona/amethyst v1.06.0
Release v1.06.0: Polls, Wallets, New Media Player, etc

6 hours ago

Polls:

  • Adds support for creating and rendering NIP-85
  • Redesign of the poll and zap poll cards
  • Adds special notification card while the poll is running

Relay Feeds

  • Adds support for rendering relay feeds
  • Adds support for NIP-51 favorite relay feeds
  • Shows favorite relays in the top navigation filter
  • Clicking wss:// links shows the global feed for that relay.
  • New user account adds nostr.wine to favorite relay feeds

Media Player

  • Redesigned player controls for videos, audios, and picture-in-picture.
  • Adds our own buttons and indicators for the video playback
  • Adds Music support with waveform animations
  • Migrates to new Media3 content view frames
  • Improved Picture in Picture actions
  • Turn video controller creation into a flow to fix playback lifecycle issues
  • Adds support for uploading audio

NWC Wallets:

  • Adds support for NIP-47 Wallets and compete NWC spec
  • Adds views for Balance and Transactions
  • Add transaction filtering and pagination to wallet screen
  • Added several test cases from other repos to guarantee interoperability

Calendar:

  • Adds support for NIP-52 Calendar appointments
  • Adds proper display of calendar time slot and date slot events in the note feed
  • Refactored the early implementation on Quartz for easier use

Code Snippets:

  • Adds support for NIP-C0 Code Snippets
  • Replies using NIP-22

NIPs on Nostr

  • Adds support for event kind 30817
  • Replies using NIP-22

PayTo:

  • Adds support for NIP-A3 Payment targets by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5

Blossom BUD-10:

  • Adds support for "Blossom:" URIs on the post
  • Supports automatic discovery of blossom servers
  • Renders/Previews images, audios, videos, and documents
  • Includes support for encryption when using it in NIP-17 DMs.

Expirations

  • Adds enhanced support for custom expirations in any new post.
  • Displays expirations on posts and DMs

Relay Monitors:

  • Adds support for NIP-66 Relay monitor and discovery support to Quartz

Attestations:

  • Adds support for rendering Attestations (https://attestr.xyz/)
  • Recommendations, Requests and Attestor Declarations are also included.

Chess:

  • Adds basic support for Chess with Jester protocol
  • Full chess game implemented
  • Supports for game challenges and view external games
  • Running on debug only for now

DMs:

  • Removes NIP-04 DMs
  • Blocks DM sending if the receiver doesn't have NIP-17 relay lists.
  • Removed incognito icon from the new post field.

Push Notifications:

  • Adds support for inline reply
  • Adds support for notification grouping
  • Adds support for Async image Loading
  • Removed NIP-04 notifications

Long Form:

  • Adds support for writing Long Form/Markdown content
  • Includes support for automatic Draft saving and editing
  • Includes support for editing

Uploads:

  • Adds support to upload Documents to all new post screens.
  • Adds toggle to stip file metadata regardless of compression by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Adds encrypted file upload fallback option for NIP-17 chats
  • Removes support for NIP-96 and updates Blossom recommendations

Content Warning:

  • Adds an optional description field for sensitive content warnings in new posts.
  • Displays additional information on warning composables

Settings redesign:

  • Consolidate drawer settings into a single Settings hub screen
  • Redesigns Zap Amount and NWC setup screens
  • Redesigns Custom zap amount screens
  • Adds brand new Translation Settings screen
  • Adds blockchain explorer settings page for OTS verification
  • Adds reactions row settings (enable/disable, order, show/hide counters) by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
  • Tapping on Zap without any pre-configured amount opens the custom dialog

Content parsers:

  • URL/URI parser rewrite in Kotlin multiplatform (KMP)
  • Fixes characters attached to URLs or nostr URLs without a space
  • Massively increases parsing performance
  • Treat multibyte characters as URL terminators in RichTextParser by @npub1k0jrarx8um0lyw3nmysn50539ky4k8p7gfgzgrsvn8d7lccx3d0s38dczd
  • Adds a parser for blossom: uris

UI Improvements:

  • Minimizes parent thread rendering in quoted notes by @npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx
  • New Material 3 UI for DropDowns by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • New Material 3 UI for feed filters by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Draft Screen requests confirmation before deleting drafts on swipe
  • Swipe to switch tabs. Main screen and messages by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Adds support for rendering Zap events when quoted inside of posts.
  • Adds a Broadcasting feedback pop-up in the Complete UI mode

Relay Management:

  • Adds relay search tooltip when adding relays
  • Adds the list of keys using each relay to the relay information
  • Adds active subscriptions and outbox event in the queue to relay information
  • Adds a complete list of event kind names to the subscription card to relay information
  • Tracks and displays connection success rate on relay settings
  • Adds relay settings export functionality
  • Adds NIP-45 count queries to show how many events each relay has.
  • Adds Relay sync utility to help users move posts between relays.

Search:

  • Breaks the search filter into two subscriptions to prioritize Metadata without punishing content.
  • Fixes the need to start user searches with @ in user fields
  • Fixes the stability of the search feed when the user navigates away and back.
  • Replaces about me for NIP-05 in the user search results
  • Adds relay URL search to the search page
  • Forces returning one user when searching by nip-05
  • Removes outdated versions of addressables from the search results

Profiles:

  • Adds support for NIP-39 External Identities with kind 10011
  • Adds a profile picture upload button when the user has no picture
  • Adds last seen to the user profile
  • Adds nprofile and npub copy options to the profile
  • Groups received zap amounts by sending the user in the profile tab
  • Increases the limit of Zap downloads for profiles to 1000
  • Simplifies profile edit screen layout by @npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx
  • Migrates profile galleries to display a thumbnail for videos
  • Fixes profile galleries' aspect ratios
  • Adds support for Namecoin .bit urls to NIP-05 and choice of ElectrumX server to resolve namecoins.

Onboarding

  • Adds bulk follow screens to search for a user and to copy his/her follow list

Voice message by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef

  • Adds voice anonymization
  • Change from "hold to record" to "click to start, click to stop"
  • Display kind 1 voice replies as an audio waveform
  • Increases max voice record duration to 600 seconds
  • Switches the public message event to use quoted posts for replies

Fixes:

  • Fixes "forked from" label rendering over the name
  • Avoids crashing when the k tag cannot be parsed to a number
  • Only use Voice Reply events when replying to voice notes. Others just receive a URL.
  • Fixes the lack of update in the follow count on the UserProfile page
  • Fixes out of memory when downloading large videos
  • Fixes Jackson deserialization for empty Filters and add regression test by @npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
  • Fixes NullPointerException when the filter contains tags
  • Fixes download cancellations when screen components disappear
  • Migrates to use "title" instead of "name" tags for NIP-51 lists
  • Adds a longer crop for npubs so that we can see vanity keys better
  • Fixes the need to have tags and kinds for inbox.nostr.wine to work
  • Blocks the size of Relay Auth Status arrays from growing forever with auth messages
  • Fixes crash when getting OpenGraph tags of invalid URLs
  • Fixes NIP-44 key mutation in NIP-46 connect
  • Location permission watcher moved outside screens to avoid recreation
  • Solves the sorting contract crash on search by precaching all values before sorting users.
  • Fixes lingering relay connections from loading follows outbox's settings.
  • Enhance NIP-38 user status display with emoji support and metadata tags
  • Fixes bug on Show More calculations for very long texts without spaces
  • Fixing IO Dispatchers and coroutine scopes of choice
  • Fixes anySync parallel operation that was returning the first result, not the first positive "any".
  • Fixes Req onCannotConnect listeners to the relays that actually sent the req
  • Fixes hanging subscriptions when exceptions happen during NostrClient utility methods

Defaults:

  • Switches wss://nostr.band to wss://antiprimal.net, wss://relay.ditto.pub on app defaults
  • Adds wss://nostr.wine, wss://news.utxo.one as favorite relay feeds
  • Adds wss://directory.yabu.me and wss://profiles.nostr1.com as index relays
  • Adds electrumx.testls.space, nmc2.bitcoins.sk, 46.229.238.187 and i665jpwsq46zlsdbnj4axgzd3s56uzey5uhotsnxzsknzbn36jaddsid.onion as ElectrumX servers

Quartz:

  • Adds Relay Server implementation with NIP-45 COUNT and NIP-42 AUTH support
  • Adds support for dynamic auth policies to the relay implementation.
  • Migrates Quartz EventStore from Android-only to KMP
  • Adds a reqUntilEoseAsFlow extension to the Nostr Client
  • Adds a reqBypassingRelayLimits extension to the Nostr Client
  • Adds comprehensive NIP-46 Bunker support
  • Adds comprehensive support for NIP-47 non-payment methods.

Adds complete support for iOS to Quartz by @npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k

  • Provide implementation for Rfc3986 on iOS, using the Swift Rfc3986UriBridge.
  • Provide implementation for LargeCache, using a CacheMap
  • Provide implementation for fastFindURLs()
  • Provide implementation for makeAbsoluteIfRelativeUrl() in ServerInfoParser.ios.kt
  • Provide implementation for UrlEncoder
  • Provide implementation for UnicodeNormalizer
  • Provide implementation for GZip compression/decompression. Some small fixes in URLs.ios.kt
  • Provide implementation for AESCBC
  • Provide implementation for AESGCM
  • Provide implementation for DigestInstance
  • Provide implementation for LibSodium

Amethyst Desktop by @npub12cfje6nl2nuxplcqfvhg7ljt89fmpj0n0fd24zxsukja5qm9wmtqd7y76c

  • Adds NIP-46 Bunker Login
  • Adds Support for Chess
  • Adds Thread Screens
  • Adds advanced search with query engine and filter panel
  • Adds encrypted DMs (NIP-04/NIP-17)
  • Adds proper empty states with EOSE tracking
  • Adds multi-column deck layout
  • Adds Full media parity — images, video, audio, encrypted DMs, upload, lightbox
  • Adds advanced search with NIP-50, collapsible sections, and nav state preservation
  • Clear stored credentials on logout
  • Adds bunker heartbeat indicator
  • Adds QR-based signer pairing
  • Migrates lifecycle-viewmodel KMP dependencies to KMP/Commons
  • Migrates drawReplyLevel modifier to KMP/Commons
  • Migrates ThreadFilter to KMP/Commons
  • Migrates Card interface and CardFeedState to KMP/Commons
  • Migrates Channels (public chats, ephemeral channels, and live streams) Account modules to KMP/Commons
  • Migrates private chatroom models to KMP/Commons
  • Migrates reports states to KMP/Commons
  • Migrates Emoji State to KMP/Commons
  • Migrates lud06 to lud16 mapping to KMP/Quartz
  • Migrates the new LocalCache observables to KMP/Commons
  • Migrates rich text parser from JVM to KMP/Commons

Code Quality

  • Migrates to AGP 9.0
  • Adds Amethyst Desktop to CI/CD and Release builds
  • Removes the in-app memory counter methods
  • Refactors the old NIP-05 code on Quartz
  • Migrates contact list management to addressable notes
  • Creates new observable flows for LocalCache.
  • Moves metadata methods from User to UserCache objects
  • Separate Addressable vs Replaceable event class bases
  • Avoid dependency on AccountSettings for NwcSignerState
  • Finishes the transition to EventHint objects for building events.
  • Lots of code review fixes by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Large accessibility review by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Moves Top Nav Filter markers from Strings to full objects.
  • Removes support for feed definitions
  • AccountState refactoring

AI:

  • Add SKILL.md for AI agent customization
  • Add settings and hooks to setup Android Development for the agent

Updated translations:

  • Czech, German, Swedish, and Portuguese by @npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
  • Hungarian by @npub1dnvslq0vvrs8d603suykc4harv94yglcxwna9sl2xu8grt2afm3qgfh0tp
  • French by @npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz
  • Polish by @npub16gjyljum0ksrrm28zzvejydgxwfm7xse98zwc4hlgq8epxeuggushqwyrm
  • Hindi by @npub1ww6huwu3xye6r05n3qkjeq62wds5pq0jswhl7uc59lchc0n0ns4sdtw5e6
  • Slovenian by @npub1qqqqqqz7nhdqz3uuwmzlflxt46lyu7zkuqhcapddhgz66c4ddynswreecw
  • Bengali by @npub13qtw3yu0uc9r4yj5x0rhgy8nj5q0uyeq0pavkgt9ly69uuzxgkfqwvx23t
  • Chinese by hypnotichemionus4
  • Spanish by @npub1luhyzgce7qtcs6r6v00ryjxza8av8u4dzh3avg0zks38tjktnmxspxq903

Don't miss a new amethyst release

NewReleases is sending notifications on new releases.