Use NostrClient's NIP-45 COUNT queries to show how many events each
relay stores, with filters specific to each relay role:
- Outbox: events authored by the user
- Inbox: events where the user is p-tagged
- DM Inbox: DM events (kind 4, 1059) tagging the user
- Private Home: events authored by the user
- Proxy: total event count
- Search: total event count
- Indexer: kind 0 and kind 10002 counts separately
- Broadcast: no count (as specified)
https://claude.ai/code/session_016158D5mq5BygS1uBbLNbsA
Add an "Encrypt files" toggle (default: on) to the file upload dialog in
NIP-17 encrypted DMs. When encrypted upload fails, show an informative
dialog explaining that many servers don't accept encrypted files on free
accounts, with an option to retry without encryption. The retry dialog
warns that without encryption anyone with the link can see the content.
https://claude.ai/code/session_012xvKzHrZPq3ZTAzBN2LvrR
Adds an Alby Go-inspired wallet interface accessible from the left drawer menu.
Uses existing NWC connection from zap settings to communicate with the wallet
via NIP-47 methods (get_balance, get_info, pay_invoice, make_invoice, list_transactions).
New files:
- WalletViewModel: manages wallet state and NWC requests
- WalletScreen: balance display with send/receive action buttons
- WalletSendScreen: paste BOLT-11 invoice and pay
- WalletReceiveScreen: create invoice with QR code display
- WalletTransactionsScreen: scrollable transaction history
Also adds generic sendNwcRequest() to NwcSignerState and Account for
sending arbitrary NIP-47 requests beyond just pay_invoice.
https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
- Create RelayListCollection to bundle all relay lists with section metadata
- Create RelayZipExporter that exports each relay category as a separate
JSON file (array of relay URL strings) inside a zip archive, shared
via FileProvider
- Refactor RelayExporter to use RelayListCollection
- Replace single export button with a dropdown menu letting users pick
between text export and ZIP (JSON) export
https://claude.ai/code/session_013PhuahpBFh6djVHzSsmNKM
Adds a share icon button in the top bar of the relay settings screen
that exports all relay configurations (except Connected Relays) as
human-readable text via Android's share intent. Each section includes
a header and description, with one relay URL per line.
https://claude.ai/code/session_013PhuahpBFh6djVHzSsmNKM
- Translate To: shows all available languages with searchable list instead
of only device locales
- Don't Translate From: uses InputChip FlowRow with an Add button and
searchable language picker to add new languages
- Language Preferences: displays as OutlinedCards with radio buttons for
choosing display language, includes delete and add-new-pair functionality
with guided source/target selection
- Added new string resources for the refreshed UI
https://claude.ai/code/session_011iTJ1gg8weaxaALiUQNH4C
* 'main' of https://github.com/vitorpamplona/amethyst:
New Crowdin translations by GitHub Action
New Crowdin translations by GitHub Action
feat: add missing translation settings to Translation settings menu
Allows users to add an expiration date to posts via NIP-40. The feature
follows the same pattern as content warning (toggle button in the bottom
action bar, expandable section in the post body) and uses the same
calendar/time picker UI as poll deadlines.
- ExpirationDateButton: timer icon toggles orange when active
- ExpirationDatePicker: date+time picker with "Expires in X" display
- ViewModel: wantsExpirationDate + expirationDate state, wired into
both TextNoteEvent and PollEvent builders, loaded from drafts
- Strings: add_expiration_date, expiration_date_label, etc.
https://claude.ai/code/session_016QjmArr6zfM1Qx58iNrntA
Expose the translateTo and languagePreferences fields from
AccountLanguagePreferences in the Translation settings screen
(UserSettingsScreen), which previously only showed the
dontTranslateFrom setting.
New settings added:
- Translate To: dropdown to select the target translation language
from the device's configured locales, with a checkmark on the
currently selected language.
- Language Display Preferences: for each saved language-pair
preference (source → target), a dropdown to choose which language
to show first; only visible when at least one preference exists.
https://claude.ai/code/session_01BheCJbDDZDAAYo6GAJBtFf
Adds a new "Bitcoin Explorer (OTS)" settings page in App Settings,
modeled after the existing Namecoin settings page.
Users can configure a custom Mempool-compatible blockchain explorer
API URL for OpenTimestamps proof verification. When a custom URL is
set it takes priority over the automatic Tor-aware selection (mempool.space
when Tor is active, blockstream.info otherwise).
Changes:
- OtsSettings: immutable data class for explorer config
- OtsSharedPreferences: DataStore-backed persistence (global/app-level)
- TorAwareOkHttpOtsResolverBuilder: accepts customExplorerUrl lambda
- OtsSettingsSection: UI section with active explorer display, URL input,
known-explorers reference list, and reset button
- OtsSettingsScreen: full screen wrapping the section
- Routes.OtsSettings: new navigation route
- AllSettingsScreen: new entry under App Settings
- AppModules: wires otsPrefs and passes custom URL to resolver builder
https://claude.ai/code/session_01GX7k36uepGxU3U1fBKYFrx
- Add contentWarningReason() helper to TagArrayExt and EventExt for reading the reason from existing events
- Add contentWarningDescription state to ShortNotePostViewModel, wired into event building and draft load/save/reset
- Update ContentSensitivityExplainer to accept description state and render an OutlinedTextField for user input
- Pass description state from ShortNotePostScreen to ContentSensitivityExplainer
- Add "Reason (optional)" placeholder string resource
https://claude.ai/code/session_01P2nkYdNiWXiAcfMPTRTVEW
Extract the Namecoin settings from PrivacyOptionsScreen into a
dedicated NamecoinSettingsScreen with its own Route.NamecoinSettings
route. Add a "Namecoin Settings" entry to AllSettingsScreen so users
can navigate to it directly from the settings list.
https://claude.ai/code/session_013gEw6fJYFiFoe4zETo8dpC
* 'main' of https://github.com/vitorpamplona/amethyst:
fix: preserve search screen scroll position across navigation
feat: add audio and PDF file upload support to ShortNotePostScreen
New Crowdin translations by GitHub Action
Add a new "attach file" button that opens a document picker filtered to
audio/* and application/pdf MIME types. This uses OpenMultipleDocuments
contract since PickVisualMedia only supports images/videos.
- Add SelectFromFiles composable with AttachFile icon button
- Add isAudio() and isDocument() helpers to SelectedMedia
- Add FilePreviewPlaceholder for audio/PDF thumbnail display
- Add upload_file string resource
https://claude.ai/code/session_018naEzfHjLRQLgaWAtY4aSz
- Organize zap settings into three clear sections with primary-colored
headers: Quick Zap Amounts, Zap Privacy, and Nostr Wallet Connect
- Replace plain Buttons with InputChip for amount selection — each chip
shows a lightning bolt, the amount, and a close icon to remove it
- Add animateContentSize() to the chips FlowRow so adding/removing
amounts animates smoothly
- Add descriptive sub-text under each section header explaining what
the control does
- NWC section: show an animated "Connected / Not Connected" status badge
(green CheckCircle vs grey RadioButtonUnchecked) that cross-fades via
AnimatedContent when the connection state changes
- NWC section: add animateColorAsState for the status color transition
- Replace the bare icon-only Add button with an OutlinedButton labelled
"Connect Wallet" for better discoverability
- Move the manual pubkey/relay/secret fields into a collapsible
"Advanced" row animated with AnimatedVisibility (expandVertically +
fadeIn/fadeOut). The section auto-expands when a connection already
exists or when a QR/clipboard import populates the pubkey field
- Add 9 new string resources for the new UI copy
https://claude.ai/code/session_01QzBq319fsxhrT91bGxws6N
Replace up/down arrow buttons with a drag handle icon that supports
long-press drag gestures for reordering reaction items in settings.
Items visually lift with elevation and scale during drag, and swap
positions when dragged past neighboring item thresholds.
https://claude.ai/code/session_01RYsPFgnoeJ3BmwjFPMvTuU
Add a new Reactions Settings screen that allows users to:
- Enable or disable each reaction button (Reply, Boost, Like, Zap, Share)
- Reorder reaction buttons with up/down arrows
- Show or hide the counter for each reaction type
Changes:
- AccountSyncedSettingsInternal: Add ReactionRowAction enum, ReactionRowItem
data class, and reactionRowItems field to AccountReactionPreferencesInternal
- AccountSyncedSettings: Wrap reactionRowItems in MutableStateFlow
- AccountSettings/Account: Add changeReactionRowItems methods
- AccountViewModel: Add reactionRowItemsFlow() and changeReactionRowItems()
- ReactionsRow: Add showCounter param to BoostReaction, LikeReaction,
ZapReaction, ReplyReaction variants; refactor GenericInnerReactionRow to
render dynamically based on settings
- New ReactionsSettingsScreen with per-button enable/counter toggles and
move-up/move-down ordering
- Routes, AppNavigation, AllSettingsScreen: wire up new settings screen
https://claude.ai/code/session_01QizUFfWDeKjLK2SuhanipJ
- Add dialog title "Send Zap" with close button in header
- Add preset amount SuggestionChips from user's saved zap amounts
- Replace TextSpinner dropdown with FilterChip row for zap type selection
- Make amount field full-width with "sats" suffix
- Move ZapButton to bottom as full-width call-to-action
- Add imePadding for keyboard avoidance
- Add RoundedCornerShape(16dp) to dialog Surface
- Add HorizontalDivider separating header from content
- Change message keyboard capitalization to Sentences
- Add send_zap string resource
https://claude.ai/code/session_017gXfNSaqGshRth2x5tdTKz
Adds a new section before Errors and Notices that shows live relay state:
- REQ subscriptions: each subscription card shows its ID and a visual
breakdown of all active filters using colored chips by kind category
(notes/social/DM/economic), author counts, tag values, and time bounds
- COUNT subscriptions: same display for count queries
- Pending outbox events: chip list of event IDs awaiting delivery
Filter chips use Material3 color roles to indicate kind categories:
primaryContainer for text events (note/repost/reaction), secondaryContainer
for social/list events, tertiaryContainer for DMs/gift wraps, and
errorContainer for economic events (zap requests/receipts/NWC).
https://claude.ai/code/session_012zzv2j63ibraPNrQx8fGeu