I don't even know how Amethyst works anymore they added so much stuff 😭🀣 Can it replace my Linux DE yet? Amy/Linux πŸ€”
Amethyst's avatar Amethyst
#Amethyst v1.12.0: Cashu, CLINK, Private Posts, Music, Podcasts, Apps & Workouts Highlights: - Adds Cashu wallet: in-app NIP-60 wallet. - Adds CLINK payments: a new Lightning rail - Adds App Store Feed form ZapStore - Adds Private posts: post, reply, react, and zap privately via NIP-59. - Adds Workout Feed: record and browse NIP-101e workouts in a dedicated feed. - Adds Reaction cards: likes, zaps, and nutzaps render as rich gradient cards. - Adds Music Feed: publish and browse music tracks and playlists. - Adds Podcasts Feed: a new NIP-F4 podcast feed with favorites and an inline player. - Adds support for hashtag labels to posts after they're published. - Adds AppFunctions to allow Gemini to call Amethyst locally. ## New Features ### Payments - Adds unified zap popup for lightning, CLINK, on-chain, and Cashu in one place - Quick 3-state toggle to quickly pick the source of your zap - Defaults to options that both receiver and sender can use - The payment rails now appear live as they resolve. - Adds full Cashu support (NIP-60/61) - A full in-app ecash wallet, beyond the previous redeem-only support. - Create and add a Cashu wallet, with its own screen and settings. - Browse and pick mints from a mint directory. - Mint ecash from Lightning and melt it back to Lightning. - Send and receive ecash tokens. - Top up a mint from a standalone screen. - See per-mint balances on the wallet. - Send NIP-61 nutzaps from the wallet, with a Lightning-style send progress bar. - Cashu top-up is crash-safe on retry. - Funds are checkpointed the instant they leave the wallet. - Adds full CLINK support - Pay and get paid through CLINK Offers and Debits. - Render all schemas inside of Notes - Profiles can show a tappable CLINK Offer chip. - Set one-time or recurring limits. - Resolve a person's payment offer by NIP-05. - A debit connection pulls funds only up to the cap you set. - Adds Unified Send Payment screen. - Long-press any chip in the Profile or this screen to copy that destination. - Use Lightning, CLINK, on-chain Bitcoin, and Cashu/nutzaps from one place. - A "Pay from" selector chooses which wallet the money leaves. - Pay Bitcoin payment targets from the in-app on-chain wallet. ### Posting & Privacy - Adds private posts and private replies - Create and view private posts, replies, and reactions. - Customize who the receivers are for posts and replies. - Adds support for Private reactions to all feeds - React and un-react privately automatically. - Safeguards prevent private content from leaking publicly. - Enhances support for Private zaps - Zaps on private notes are forced private. - Replies to a private zap route into the sender's DM room. - Adds support for NIP-32 hashtag labels. - Add first-class hashtag labels to posts. - Follow-hashtag labels publish through your outbox relays. - They surface in the hashtag feed. - Enhances post's compose screen - Richer notify chips in the new-post screen. - Modernized inline payment cards that show their descriptions. - Enhances hidden words screen - A per-row unblock button on the Hidden Words screen. - Remove a single muted word without clearing the whole list. ### Chat & DMs - Re-engineers DM bootstrapping with dynamic loading - Only loads the last 7 days worth of DMs. - Per-relay download windows realign when DMs are pruned. - A slow Tor connect is no longer mislabeled as "stalled". - The paused-history card shows parked relays. - The sync marker is now tappable. - Adds support for pinning DM conversations - Pins sync across devices via a NIP-78 app-data event. - Adds support for @-mention search in Marmot (MLS) group chats - Search and tag users in the group composer. - Conversation participants rank first. - They are marked with an "In this chat" chip. - Fixes quoted chat messages being rendered as posts - Quotes render inside chat bubbles with the proper chat-reply design. - The redundant reply row is skipped when the quote is already inline. - Fixes MLS reliability - Unread state now persists across app restarts. - The kind:445 backlog is no longer refetched on every launch. - Adds Share to DM ("Send as DM") flow - A new Android share-sheet target, alongside "New Post". - Share text, an image, or a video from another app into a DM. - Pick a recent conversation; the chat composer opens pre-filled and editable. ### Reading & Feeds - Enhances Tor reliability and connection speed - Connects faster by reusing the network directory between launches (about 3Γ— quicker on warm starts). - Watchtower rebuilds Tor automatically when it looks connected but no relay traffic is flowing. - Recovers from stuck entry guards that could leave Tor unable to connect across app restarts. - No longer hangs on a hostile network β€” bootstrap gives up after 60s and retries instead of wedging. - Holds Tor-routed relays until the proxy is ready, cutting wasted battery and network on launch and Wi-Fi/cellular switches. - Stays stable through self-heal resets and network changes. - Adds new Notifications top nav filter - The old "Global" tab is split into "Curated" and a raw "Global". - Curated is the current system that requires your involvement on a thread to notify you. - Global shows everything, including all hell threads. - Replies to likes/zaps now reach the notifications feed. - Adds Reply to zaps and reactions from the notification screen - Pre-loads reply threads from the feed so opening a thread is faster. - Adds support for LaTeX math in notes. - Use `$...$` for inline equations. - Use `$$...$$` for block equations. - Adds support for first-class reaction rendering - Reactions and zaps anchor their own thread view. - Reactions, zaps, likes, and nutzaps render as gradient cards. - Each card embeds the post it's about. - A single tap on a like/zap chip opens that event's thread. - Adds support for Workouts (new, NIP-101e) - Create and publish workout records (kind 1301), interoperable with the RUNSTR dialect. - Browse a dedicated Workouts feed. - Filter by exercise type, author, community, or hashtag. - Richer workout cards: a hero metric, a fixed stats grid, splits-style breakdowns, and the source app. - Adds support for Music (new) - First-class support for tracks (kind 36787) and playlists. - Browse Music Tracks and Music Playlists feeds. - Publish a new track and create playlists. - Add a track to a playlist from a bottom sheet. - Adds support for Software Apps directory (new, NIP-82). - Browse software applications (kind 32267). - Filter by follows, author, hashtag, or global. - An app detail screen shows screenshots and the author. - Tap a screenshot to open it fullscreen. - Enhances support for App recommendations (NIP-89). - Editable recommendations on your profile. - Tiered ordering in the recommendations editor. - Richer app cards with author attribution. - Adds support for Birdex species collections (kind 12473). - Adds support for Agora fundraiser campaigns (kind 33863). - Adds Audio visualizer picker - A live visualizer for audio-only notes. - Real-time FFT spectrum from the track's decoded audio (no mic, no new permission). - Styles: Classic (default), Spectrum Bars, Color Waves, Radial Ring, Aurora Glow, Static, and Off. - Each style has a live preview in the settings picker. - Your choice syncs across devices via NIP-78. - Fills the art area in fullscreen and shows a fixed strip in the feed. - Adds support for Podcasts (new, NIP-F4) - Dedicated podcast and episode feeds, filterable by follows, authors, communities, or hashtags. - Mark podcasts as favorites. - Tap a podcast to open a show screen with all its episodes and an inline player. - Translatable show and episode descriptions on the feed cards. - The episode audio player is squared so the controls get room. ## Improvements and Bug fixes - Adds Searchable settings. - A search box filters rows by title and curated keywords. - Supports prefix matching and an empty-state. - Adds Swipe for brightness and volume in fullscreen video. - Fixes Quote-reposts (NIP-18) not counting in the repost counter. - Hides reposts of unsupported kinds instead of showing blank cards. - Fixes URLs glued to other words: the "fix missing spaces" pass now indexes URLs by their first character. - Search no longer matches text in `p`, `e`, `a`, `alt`, or `client` tags. - Media uploads in anonymous posts use the ephemeral signer. - Fixes anonymous profile zaps being encrypted as private zaps. - The Cashu wallet row shows the Cashu logo instead of a generic icon. - On-chain zaps highlight the bolt and show as pending in the counter. - Removed the wallet options reordering drag-and-drop UI. - De-duplicates preset amounts in Zap Settings - Fixes the chip-drag interaction in Zap Settings. - Fixes the live-stream chat relay fallback - Zap and non-zap polls now share the same option text when composing a post - Fixes Legacy NIP-71 videos to resolve their address from the real `d` tag. - Fixes the default media server resetting on every launch. - Fixes account cache: Deleting an account now clears its cached entry. - Adds support for birthdays on profile - Fixes cache child back-references when deleting notes - Detaches on-chain-zap, nutzap, and channel sources on cache deletion - Honors relay connection backoff during Tor bootstrap. - Heals sockets opened on the wrong transport by rebuilding them. - Recovers relay connections after the device wakes from sleep. - Keeps a relay's reconnect backoff from resetting on a momentary connection. - Honors the "Money operations via Tor" setting for payments and wallet relay connections - Reduces runtime log noise. - Fixes several edge-case crashes. - Fixes IPv6-literal URLs in posts - Reorganizes changelog into versioned files - Audit fixes across the private-posts, CLINK, and MLS paths. - Adds off-main-thread crypto and leak prevention. - Hides share/bookmark on private notes. ## Desktop - Adds image compression on upload: - An Image Compression settings panel. - Per-post quality presets. - Batch progress in the composer. - A preview-then-publish gate. - A fail-loud dialog if compression fails. - Adds new media player. - Replaced vlcj with kdroidFilter's ComposeMediaPlayer. - Uses a JCodec/FFmpeg backend. - Adds Group DM parity with Android. - Set and update a group name (subject) on encrypted group chats. - Create a group by selecting multiple recipients in the New DM dialog. - Rooms are marked read when opened. - Messages from muted authors no longer mark a room unread. - Desktop now handles group direct messages the same way. - Adds Replies tab on the user profile. - Feeds also show reply context (parent embed plus label) inline. - Adds Feed refresh. - Inline card expansion. - A "New posts" chip that slides in from the top. - Stick-to-top on prepend. - Wired-up like/zap/comment actions. - Smaller fixes. - Copy a Blossom image URL on click, with a hover tooltip and snackbar. - Collapsed-sidebar polish: tighter ripple and hover tooltips. - Amethyst logo on the Tor and account-loading splashes. - Restored inter-word spacing in rich text with mentions/hashtags. - Fixed parent-author metadata loading. - Adds Unhealthy-relay review. - A banner and popup that flag relays behaving poorly. - Adds Namecoin diagnostics. - The diagnostics card was ported from the Android settings. ## Cli - Adds `amy offer` β€” CLINK offer info and request, including `--payer-data`. - Adds `amy debit` β€” CLINK debit info, pay, and budget. - Adds `amy zap --with <ndebit>` β€” settle a zap invoice via a CLINK debit. - Adds `amy offer discover <nip05>` β€” resolve a profile's offer through NIP-05. - Closed CLINK parity gaps (profile offer, follow, offer pay, GFY detail). - Adds a clink-headless interop harness. ## Quartz - Adds Relay-server toolkit. - Added a `Flow<Event>` REQ-responder SPI with a storage-free dispatch engine. - Added NIP-50 search parsing. - Added suspendable auth hooks. - Split engine/backend/policy packages. - Adds NIP-45 approximate COUNT - Added HyperLogLog with wire support. - Enhances NIP-11 documents. - Added the missing `banner` field. - Relay limits are now a single source of truth served over NIP-11. - Adds Relay Connection observability. - Stable per-connection ids. - A per-connection `RequestContext` threaded into the event source. - Auth identity moved from policy into connection scope. - Fixes NIP-46 double-resume and retry id-reuse race - Fixes NIP-46 error serialization issues - Fixes `q` (quote) tags being dropped by an inverted guard. - Fixes `CommunityRulesEvent` and CLINK DTO serializers - Improves Relay failure logs - Fixes disk cache to recreate cache dir if cleared at runtime ## Build & Documentation - **Dependency updates.** - Bumped Kotlin, Compose Multiplatform 1.11.1, Coil 5, OkHttp 5, Jackson, AndroidX, Firebase, and more. - Adapted the Blossom interceptor test to OkHttp 5's `Interceptor.Chain`. - **iOS CI.** - `commons` `commonTest` now compiles and runs on iOS targets. - CI runs the shared `commonTest` on iOS for `:commons`. - **Amethyst β†’ commons migration (KMP/iOS).** - Moves shared, CLI-safe code out of the Android app into `commons`. - Decryption caches (Mute/People/Community, Hashtag, Favorite-algo, Trust-provider). - Models: InterestSet, LabeledBookmarkList, NwcWalletEntry, CashuToken, OwnedEmojiPack. - The link-preview fetcher, relay broadcast tracker, and CLI-safe util extensions. - `HtmlParser` made KMP (dropped its Java `Charset` dependency). - A consolidated package taxonomy with a new architecture doc. - **Licensing.** - Replaced the GPLv3 `TarsosDSP` dependency with an in-house pitch shifter for the voice anonymizer. - Keeps the project MIT-clean. - **Misc.** - Added a monochrome outline Cashu icon to the Material Symbols set. - Renamed `ReplaceableVideoEvent` to `AddressableVideoEvent` for spec accuracy. - Split the monolithic CHANGELOG into per-version files under `docs/changelog/`. - `versionName` branch detection sets the git cwd, so it works inside git worktrees. - **SonarQube cleanup (S1871).** - Merged duplicate `when`/`if` arms across the codebase. - Migrated `Log` calls to the lambda overload. - **Documentation.** - Updated Privacy Policy to the new requirements from the PlayStore - Documented an Amethystβ†’commons migration plan and target package hierarchy. - Refreshed several Claude skills, documentation and the Namecoin design doc. - Added a rule requiring a license check when adding any new dependency. ## Contributors - @npub1gcxz...nj5z - @⚑ Dee Kay ⚑ - @npub12cfj...y76c - @npub1w4us...0jr5 - @npub1a3tx...kq4k - @npub1dn0t...8tfp ## Translations - Czech, German, Swedish, and Portuguese by @⚑ Dee Kay ⚑ - Hungarian by @npub1dnvs...h0tp - Dutch by @npub1w4la...txcd - Polish by @npub16gjy...wyrm - Hindi by @npub1ww6h...w5e6 - Slovenian by @npub1qqqq...eecw - Spanish by @npub1luhy...q903 - Chinese by hypnotichemionus4 and @npub1gd8e...h58h
View quoted note →

Replies (5)

↑