Amethyst's avatar
Amethyst
amethyst@vitorpamplona.com
npub142gy...xrj0
Nostr Client for Android
Amethyst's avatar
amethyst 2 hours ago
#Amethyst v1.12.6: Napplets, Static Sites Protocol & BugFixes Highlights: - New protocol support for **Nostr Web Applets (NIP-5D)** and **static websites (NIP-5A)**, resolved straight from signed manifests over Blossom. - Cashu tokens that span **multiple mints** now redeem in full, and both Base64 alphabets are accepted. - A batch of stability fixes across notifications, playback, feeds, and the emoji pack screens. ## New Features - Add support for **Nostr Web Applets (NIP-5D)** and **static websites (NIP-5A)**. Napplet manifests (snapshot/root/named kinds) and the NIP-5A aggregate-hash layer land in Quartz, with a resolver that downloads each listed Blossom server in order and accepts only the blob whose recomputed SHA-256 matches the signed manifest — a substituted or corrupted blob fails verification and is skipped. ## Performance - Cashu token-prefix dispatch now compares against precomputed `DualCase` prefixes instead of case-folding the cashuA/cashuB markers on every call. ## Improvements and Bug fixes - Cashu: redeeming a pasted token now redeems **every mint/keyset group** in it (previously only the first), validating all mints are in the wallet up front and summing the redeemed amounts. The parser also tolerates both standard and url-safe Base64 and mixed-case `cashuA`/`cashuB` prefixes. - Stop the `DisappearingScaffold` top/bottom bars from overshooting their resting edge during the show/hide animation. - Dedupe emoji shortcodes in the Emoji Pack screen to prevent a `LazyGrid` crash, and dedupe emoji pack addresses in the My Emoji List grid. - Cap media-session artwork to the platform bitmap limit so large covers no longer crash playback. - Handle a missing camera app gracefully when taking photos or videos. - Snapshot live-stream status order before sorting, and snapshot feed filters too, to avoid `TimSort` "contract violation" crashes. - Notifications: call `startForeground` on every start command and always `stopSelf` when foreground promotion fails. - Guard the Health Connect permission check against service-bind failures. - Add a descriptive message to the media-download HTTP check. ## Cli - `amy napplet fetch` resolves and fetches a NIP-5D napplet. - `amy nsite fetch` resolves and verifies a NIP-5A static site / napplet. ## Quartz - Implement NIP-5D napplets and the NIP-5A static-site resolver (manifest model, path lookup, hash verification, Blossom candidate assembly) in `commonMain`, with HTTP injected so Quartz keeps no networking dependency. - Move the out-of-band Cashu token parser, the `cashuB` (v4) encoder, and the token container model into Quartz, so Desktop's rich-text viewer can now parse received Cashu tokens. Adds `kotlinx-serialization-cbor` (Apache-2.0). - Centralize Blossom protocol strings in Quartz. - Never let signer timeouts crash from auto-signing launches. ## Build & Documentation - Generate the changelog translator credits offline from a committed `translators.json`, track a rolling "since last tag" contributor list, and seed it from Crowdin on every sync without rewriting the timestamp each run. ## Contributors - @Vitor Pamplona ## Translations - _None this release._
Amethyst's avatar
amethyst 2 hours ago
# v1.12.3-5: Relay Latency Health & a macOS Notarization Fix Highlights: - Tracks per-relay latency on Desktop and surfaces slow relays in the dashboard, a details popup, and a banner. - Fixes macOS notarization for the desktop DMG and the `amy` CLI tarball. ## New Features ### Relay Latency Health (Desktop) - Adds a per-relay latency tracker and a slow-relay classifier. - Wires the latency tracker into `RelayHealthStore` with persistence across launches. - Surfaces relay latency in the desktop dashboard, a relay-details popup, and an unhealthy-relay banner. ## Build & Documentation - Fixes macOS notarization for the desktop DMG and the `amy` CLI tarball by signing the Mach-O native libraries bundled inside jars (secp256k1, SQLite, JNA, Skiko, jkeychain, and ComposeMediaPlayer) — Apple's notary service recurses into jars and had rejected them as unsigned. - Fixes the macOS desktop DMG release build: Compose's signer maps the signing identity to a certificate via `security find-certificate`, which did not resolve the CI-imported certificate through the keychain search list (bare `codesign` did). The release workflow now exports the throwaway keychain path and points Compose's `signing.keychain` straight at it. - Resolves the Developer ID **common name** from the signing keychain and feeds it to Compose's `signing.identity`. Compose maps its identity to a certificate via `security find-certificate -c`, which only matches the exact "Developer ID Application: …" name — a fingerprint or partial/team-ID value (which bare `codesign` accepts) was rejected with "Could not find certificate ... in keychain []". The release workflow now points Compose at the imported keychain explicitly and supplies the canonical identity name. ## Contributors - @Vitor Pamplona - @Minced Beef Energy ## Translations - _None this release._
Amethyst's avatar
amethyst 12 hours ago
#Amethyst v1.12.2: Road Events, Collapsable replies and some fixes Highlights: - Adds Roadstr road events (kind 1315/1316) with OpenStreetMap map - Expands the Cashu wallet to surface and manage balances held across every mint, with seed recovery and richer nutzap controls. - Collapses thread replies on click in thread view and shows the hidden reply count on collapsed cards. - Adds full-text search across far more event kinds, including direct messages, zap comments, polls, code snippets, and audio. ## New Features ### Road Events (Roadstr) - Adds kind 1315/1316 road event support, rendered with roadstr-accurate cards. - Renders the road event location on an OpenStreetMap map that follows the app's dark theme. - Modernizes road event cards with a map hero and a floating pill. - Includes road events in geohash feeds. ### Quartz Search - Adds a pausable, resumable full-text-search reindex to the SQLite and filesystem event stores, and clamps non-positive reindex batch sizes. - Indexes direct message content (NIP-17 ChatMessageEvent). - Indexes zap comments (LnZap request/receipt, on-chain zap, and nutzap). - Makes polls, code snippets, audio, and git/torrent replies and interest sets searchable. - Indexes parsed JSON fields of profile, channel, and app-handler events. - Indexes natural-language fields of more event kinds, and makes the remaining text-bearing events searchable. - Adds full-text-search reindexing to both the SQLite and filesystem event stores, pausable and resumable for large stores. - Runs the post-migration search reindex in the background so upgrades don't block on it. ### Cashu Wallet - Surfaces all token-holding mints and syncs them when the wallet opens. - Highlights balances held at unconfigured mints and lets users move those coins off. - Recovers from seed across every held mint, not just the configured ones. - Reframes edit-wallet as a mint editor; adds mints directly from the browser and verifies them in the list. - Moves mint recommendations to their own screen and nutzap-key rotation into the Danger Zone. - Adds stop-receiving-nutzaps and delete-wallet actions. - Keeps the Cashu receive invoice on screen during mint polling. ### Music & Playlists - Adds a full-screen music playlist composer with cover image and metadata. - Lets users reorder and remove tracks inside the playlist editor. - Adds a "Mine" option to the music and playlist feed filters. ### Reading & Sharing - Collapses thread replies on click in thread view and shows the hidden reply count on collapsed cards. - Modernizes the quote/repost choice popup and shows both fork states in the boost preview. - Reduces the scroll sensitivity for bringing back the nav and status bars. ## Share as Image - Adds Share as Image to a local file, renaming the upload flow to Share as Image Url. - Shows the image thumbnail in the share sheet for Share as Image. ## Public Chats - Requires at least one relay to create or edit a public chat - Broadcasts to observed relays when a channel declares none. # Pull Notifications - Better detects background state via a LifecycleEventObserver - Prunes the connected set when a relay leaves the pool. - Throttles notification relay-count updates to dodge Android's rate limit - Distinguishes foreground from background counts in the notification tray ## Tor Management - Warm-resets Tor on a dead-circuit self-heal instead of wiping all state. - Fixes a Tor bug by seeding `hasEverBootstrapped` from the on-disk guard sample. ## DM Loading Improvements - Tracks chatroom senders so DMs from followed contacts land in Known. ## Signer Fixes - Stops splitting emoji surrogate pairs when truncating alt/summary tags. ## Desktop - Wires macOS Developer ID signing and notarization. - Adds an in-process relay seam, a launch benchmark, and a Compose UI test pyramid. - Collapses icon decoding to a single memoized lazy for faster launch. ## Cli - Codesigns and notarizes the macOS `amy` tarball. - Publishes a no-JRE jar bundle and a Homebrew-core formula for `amy`. - Drops the Compose UI render stack from the `amy` runtime image. ## Build & Documentation - Bumps stable dependency versions. - Adds icon, supported NIPs, and publishing-relay documentation to Zapstore config - Adds a desktop release guard that fails the build if `osxkeychain.so` is stripped. ## Contributors - @Vitor Pamplona - @⚡ Dee Kay ⚡ - @Minced Beef Energy - @greenart7c3 - @KotlinGeek - @v ## Translations - Czech, German, Swedish, and Portuguese by @⚡ Dee Kay ⚡ - Hungarian by @summoner - Dutch by @Bartus - Polish by @Polak - Hindi by @राज - Slovenian by @StellarStoic - Spanish by @⚡₿it₿y₿it⚡ - Chinese by hypnotichemionus4 and @CXPLAY
Amethyst's avatar
amethyst 2 days ago
#Amethyst v1.12.1: Health Connect, Samsung/Google Watch Workouts, Share as Image Highlights: - Adds Health Connect: detect recorded workouts and suggest a NIP-101e post. - Adds Share as Image: turn any note into an uploaded image and share it. - Adds Immersive scrolling: hide the OS system bars while reading and in full-screen media. - Fixes Desktop deployment ## New Features ### Workouts - Detects workouts from Health Connect and suggests a kind 1301 post. - Re-scans Health Connect when the app resumes. - Adds a recent-workouts carousel to the New Workout composer. - Moves Health Connect entirely into the New Workout composer. - Defaults the workout distance unit to the phone's measurement system. - Renders workout notes through the kind-1 text pipeline. - Shows workout metrics in the viewer's own units. - Records the source app or device name from Health Connect. - Aligns Health Connect import with RUNSTR (active calories and title). - Adds a Compose setting to disable workout suggestions. - Limits the feed workout banner to today's workouts. ### Sharing - Shares any note as an uploaded image. - Adds a share-as-image screen with an image preview. ### Reading - Hides the OS status bar during scroll immersive mode. - Hides the OS system bars during full-screen media. ## Improvements and Bug fixes - Modernizes the New Workout composer. - Tightens the New Workout composer vertical spacing. - Centers the activity type chips in the New Workout composer. - Uses the Add icon on the New Workout FAB for consistency. - Stops the connect card from flashing on every screen open. - Keeps Health Connect prefs off the main thread (StrictMode). - Adds the Android 14+ Health Connect permission rationale activity-alias. - Polishes the share-as-image screen. - Fixes a Tor race: sets Active deterministically so the bootstrap callback can't race it. ## Desktop - Ships a consistent macOS .icns and multi-size Windows .ico. - Excludes leaked kotlinx-coroutines-test from the release dmg. ## Translations - Promotes Kenyan Swahili to the base resource qualifier. ## Contributors - @Vitor Pamplona - @⚡ Dee Kay ⚡ - @Minced Beef Energy - @greenart7c3 - @KotlinGeek - @v ## Translations - Czech, German, Swedish, and Portuguese by @⚡ Dee Kay ⚡ - Hungarian by @summoner - Dutch by @Bartus - Polish by @Polak - Hindi by @राज - Slovenian by @StellarStoic - Spanish by @⚡₿it₿y₿it⚡ - Chinese by hypnotichemionus4 and @CXPLAY
Amethyst's avatar
amethyst 3 days ago
#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 - @Vitor Pamplona - @⚡ Dee Kay ⚡ - @Minced Beef Energy - @greenart7c3 - @KotlinGeek - @v ## Translations - Czech, German, Swedish, and Portuguese by @⚡ Dee Kay ⚡ - Hungarian by @summoner - Dutch by @Bartus - Polish by @Polak - Hindi by @राज - Slovenian by @StellarStoic - Spanish by @⚡₿it₿y₿it⚡ - Chinese by hypnotichemionus4 and @CXPLAY
Amethyst's avatar
amethyst 1 month ago
#Amethyst v1.11.0: Calendars Highlights: 1. NIP-52 Calendars — feed, day/week/month views, event/collection editors, RSVP, ICS export, "starting soon" notifications, share-as-nostr-link, gallery picker. 2. On-Chain zaps — splits with dust gating, shows in the reaction gallery, display transaction history, privacy guidance 3. Payment-targets redesign (QR + copy + pay), public-address chip + confirmation 4. Inline nowhere-link cards in rich text. PRs: - Restore Lightning Address + LNURL fields in Edit Profile - Raise the default maximum hashtag limit from 5 to 8 - Include on-chain zaps in notification summary stats - Add electrum.nmc.ethicnology.com to default ElectrumX server set - Translate call-permission and git-repo strings (cs, pt-BR, sv, de) + New Crowdin translations - Subscribe and observe PaymentTargetsEvent for other users - Only bridge to local cache when URL is BUD-01 layout; dedupe public-channel rows; normalize video/x-m4v to video/mp4 - Enable Send when typed name resolves via NIP-05; on-chain Bit recipient - Inline Namecoin resolution indicator + result row on on-chain zaps - Inline Namecoin resolution indicator in global search bar - Long-press to copy Nostr Address, Website, LN Address, identities, payment targets - macOS VLC bundled discovery and video rendering - Make RelayAuthenticator authStatus thread-safe - Pad GitRepositoryOverview content to clear top/bottom bars - Use LargeCache for RelayAuthenticator authStatus - MIME-type normalization for MediaStore - Split delivery vs display, add Categories section in notifications - Accept floating-point dimensions in imeta so image space is reserved pre-load - Explain hashtag-limit hide reason in HiddenNote - Route media-upload signing through launchSigner - Render nowhere links inline as branded cards - Release MediaController after 30s in background; skip timer for PiP - Clickable on-chain card opens transaction history; tappable on-chain rows + txid index in LocalCache - Disable ProGuard optimization entirely on desktop (fixes kmp-tor crash); .deb launch CI smoke test - Show on-chain zappers in expanded reactions gallery - Convert hashtag-limit message to <plurals> and add cs/pt-BR/sv/de translations - Restore long-press on root note + anchor popup to the card - Keep filter chips visible on empty on-chain transactions list - Make playback notification tap open the note on warm-pool resume - Validate zap receipts against LNURL provider's nostrPubkey (NIP-57 Appendix F) - Stable sort in ShortsFeedFilter to avoid TimSort contract crash - Align push notifications with Notifications feed filter; resolve addressable events to their replaceable note; WakeUp bypass + lookup hoist - Update on-chain-zap + headers-explorer plans for NIP-BC inline SPV tags - Start zoomable dialog close animation from zoomed bounds - Scaffold I2P as a parallel privacy transport to Tor; route-aware HTTP stack; BlockedRouteException - Reorder feed filter popup sections (DVMs before Communities, interest sets next to hashtags) - Stop spinning Around Me when Geocoder is unavailable - NIP-52 calendars — feed, day/week/month views, RSVP, ICS export, reminders, edit, share-as-nostr-link, participant picker, multi-day bars - Audit follow-ups on MLS reply paths; route reply button on MLS messages to the encrypted group - Use LaunchedEffect instead of remember for VM reset - Switch to Dispatchers.IO around the whole executeAsync call in relay-info - Drop crossfade around the card feed in notifications - Observe locale in CalendarDateTimePickerButton - Modernize zap amount choice popup to match reactions popup style - Catch ForegroundServiceStartNotAllowedException in PlaybackService - Include crashing thread name in crash report - Convert remaining .gradle files to Kotlin DSL - Redesign payment targets modal with QR, copy and pay buttons - Add Public chip to on-chain wallet card; clarify privacy guidance on on-chain wallet popup - Require running material-symbols-subset.sh when adding new icons; add new information icon - Re-add Nostrcheck.me Blossom server to defaults - Surface on-chain zaps from the reactions zap button - On-chain zap splits — drop sender from splits, merge duplicates, gate Send on dust - On-chain option on the Zap the Devs button - On-chain handoff from the custom-zap dialog - Keep listening on default index+search relays for users with no kind 10002 - Skip offline relays when fetching user metadata - Include indexer and proxy relays in the trusted relay list to avoid Tor - Confirm on-chain copy with public-address warning - Swallow LegacyCursorAnchorInfo IllegalArgumentException - Render ContactListEvent in NoteCompose with tap-through user list; add preview for DisplayContactList ## Contributors - @Vitor Pamplona - @⚡ Dee Kay ⚡ - @Minced Beef Energy - @greenart7c3 - @KotlinGeek - @v ## Translations - Czech, German, Swedish, and Portuguese by @⚡ Dee Kay ⚡ - Hungarian by @summoner - French by @Anthony 🇫🇷 - Dutch by @Bartus - Polish by @Polak - Hindi by @राज - Slovenian by @StellarStoic - Bengali by @Cats😺 - Spanish by @⚡₿it₿y₿it⚡ - Chinese by hypnotichemionus4 and @CXPLAY - Russian by Anton Zhao
Amethyst's avatar
amethyst 1 month ago
#Amethyst 1.10.0: OnChain wallets - ci: remove macos-13 x64 build legs by @vitorpamplona in #2939 - Replace linuxdeploy with appimagetool for AppImage packaging by @vitorpamplona in #2940 - Sync inner note highlight fade with parent background color by @vitorpamplona in #2941 - Handle denied call permissions with settings dialog by @vitorpamplona in #2942 - Fix gradient rendering with transparent background colors by @vitorpamplona in #2943 - Add NIP-BC onchain Bitcoin zaps support (send, receive, display) by @vitorpamplona in #2944
Amethyst's avatar
amethyst 1 month ago
#Amethyst v1.09.2: Fixes - Fix Blossom blob detection to reject non-compliant filenames - fix(desktop): add ProGuard keep rules so desktop builds actually launch - fix(desktop): mirror Android ProGuard strategy for release builds - Fix: pause video playback when app goes to background - feat(desktop): wire NamecoinSettingsSection into Settings screen - feat(desktop): wire Import Follow List dialog into UI - Fix crash when toggling home tabs with persisted pager state - Dedupe public channels in known chat list by channel id - Route NIP-43 relay join/leave through launchSigner - Migrate DNS cache from SharedPreferences to cacheDir - Filter DNS poison (loopback / any-local) from non-loopback hosts - perf(dns-cache): hand-rolled binary persistence format for SurgeDnsStore - Ignore duplicated hashtags when processing hashtag spam - New Crowdin translations
Amethyst's avatar
amethyst 1 month ago
#Amethyst v1.09.1: Fixes - Fixes pull to refresh behavior - Fixes Desktop release CI - Adds Git Repo screens.