Commit Graph

9492 Commits

Author SHA1 Message Date
Vitor Pamplona 6739e66bd3 Merge pull request #1828 from vitorpamplona/claude/implement-nip47-wallet-Fjcds
Implement NIP-47 Wallet Connect protocol with full method support
2026-03-14 11:32:51 -04:00
Claude 78c66b00eb fix: align arrow icons to 40dp to match user picture size
https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 15:29:28 +00:00
Vitor Pamplona 03e1c32757 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-14 11:20:33 -04:00
Claude 84035f887a feat: parse NIP-47 transaction metadata for sender/recipient display
Add NwcTransactionMetadata parser that extracts comment, payer_data,
recipient_data, and nostr zap data from the untyped metadata field.
The transaction list UI now shows the Nostr user profile picture and
name for zap senders/recipients, falls back to payer name/email or
lightning address, and displays comment when it differs from description.

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 15:18:53 +00:00
Claude 2fd623a97d fix: wallet screen showing "No wallet connected" on first open
The WalletViewModel.init() was called inside LaunchedEffect (async),
but hasWalletSetup() was checked synchronously during the first
composition frame—before init had run. Moved init to run synchronously
during composition and made hasWalletSetup a reactive StateFlow so the
UI updates when wallet state changes.

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 14:30:54 +00:00
Vitor Pamplona 120981f8c4 spotless apply 2026-03-14 10:18:16 -04:00
Vitor Pamplona 493fe05ac4 Fixes missing parameter 2026-03-14 10:18:08 -04:00
Claude 1841e47c5c feat: add high-level Nip47Client and Nip47Server APIs for NIP-47
Simplifies the NWC developer experience by providing Nip47Client (for
wallet client apps) and Nip47Server (for wallet service backends) that
handle URI parsing, signer creation, event building, filter construction,
and response decryption. Updates README with quick-start examples.

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 11:39:17 +00:00
David Kaspar 43914c0f09 Merge pull request #1841 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-14 11:19:39 +00:00
Crowdin Bot 4fc97f21c5 New Crowdin translations by GitHub Action 2026-03-14 11:10:01 +00:00
David Kaspar dcf1e4e39b Add Claude Code local settings to .gitignore 2026-03-14 11:08:34 +00:00
David Kaspar a6d5944bf3 Fix JSON formatting in settings.json 2026-03-14 09:01:55 +00:00
David Kaspar f2391e698a Merge pull request #1839 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-14 05:06:48 +00:00
Crowdin Bot f9f4e7716d New Crowdin translations by GitHub Action 2026-03-14 05:06:26 +00:00
David Kaspar ce3f9bec5c Merge pull request #1838 from davotoula/update-translations
update cz, pt, de, sv
2026-03-14 05:04:49 +00:00
davotoula 3f1e826a10 update cz, pt, de, sv 2026-03-14 06:00:21 +01:00
Claude 580678eed8 feat: add server-side event builders and NIP-47 README for quartz
Adds missing server-side capabilities to the NIP-47 quartz module:

- LnZapPaymentResponseEvent.createResponse(): builds encrypted response
  events (kind 23195) for wallet services to reply to client requests
- NwcNotificationEvent.createNotification(): builds encrypted notification
  events (kind 23197) for wallet services to push payment notifications

Creates comprehensive README.md documenting the full NIP-47 API with
code examples for both wallet client and wallet service implementations,
covering URI parsing, request/response building, encryption, notifications,
error handling, transaction states, and caching.

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 04:25:27 +00:00
Claude 4b76c70c29 feat: add NIP-47 wallet interface with balance, send, receive, and transactions
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
2026-03-14 03:52:41 +00:00
Claude 83a6feeca4 feat: add Alby JS SDK client interop improvements
- Add NwcBudgetRenewal constants (daily/weekly/monthly/yearly/never)
- Add case-insensitive NwcTransactionState helpers (isSettled, isPending,
  isFailed, isAccepted) for JS SDK lowercase state interop
- Add URI test using Alby JS SDK test vector (69effe7b... pubkey)
- Add JS SDK interop tests: lowercase transaction states in responses,
  notifications, and list_transactions; empty get_budget response;
  all budget renewal periods; structured transaction metadata;
  full 13-method get_info response

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 03:28:17 +00:00
Claude 4ee937ff0c test: add Alby Hub real test vectors to interop tests
Add tests using exact JSON payloads from Alby Hub's test suite:
- Real bolt11 invoice strings from Alby's mock data
- pay_keysend with TLV records and preimage
- make_invoice with nested metadata objects
- make_hold_invoice with 64-char payment hash
- settle_hold_invoice with preimage
- list_transactions with unpaid_outgoing filter
- create_connection with isolated=true

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 03:00:56 +00:00
Claude 9e4cb446ef feat: add NIP-47 get_budget, sign_message, create_connection methods and Alby Hub interop
- Add get_budget, sign_message, create_connection request/response types
- Add NwcTransactionType (incoming/outgoing) and NwcTransactionState
  (PENDING/SETTLED/FAILED/ACCEPTED) constants
- Add missing error codes: BAD_REQUEST, NOT_FOUND, EXPIRED
- Add settle_deadline field to NwcTransaction
- Add total_count to ListTransactionsResult
- Add metadata and lud16 to GetInfoResult
- Add unpaid_outgoing and unpaid_incoming to ListTransactionsParams
- Update Jackson deserializers for new method types
- Add AlbyInteropTest with 25+ tests verifying compatibility with
  Alby Hub's JSON formats for all request/response types
- Update existing tests for new constants and error codes

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-14 02:58:40 +00:00
Vitor Pamplona da38555035 Merge pull request #1835 from vitorpamplona/claude/add-swipe-delete-cancel-QjI5b
Add cancel button to swipe-to-delete confirmation UI
2026-03-13 20:42:43 -04:00
Claude bcb5be76c7 feat: Add cancel button to swipe-to-delete confirmation
After swiping a draft to delete, the red confirmation background now
shows both a "Delete" button (left) and a "Cancel" button (right).
Tapping Cancel resets the swipe state, allowing users to dismiss
the delete action without deleting the draft.

https://claude.ai/code/session_01ULVR1fKwka5TgfgSucPE4r
2026-03-13 23:19:47 +00:00
Vitor Pamplona 64118058f2 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  feat: replace dialog with swipe-to-reveal delete button for drafts
  feat: add confirmation dialog when swiping to delete a draft
2026-03-13 19:11:25 -04:00
Vitor Pamplona 474a875167 Fixes padding of the expiration date on NoteCompose 2026-03-13 19:11:10 -04:00
Vitor Pamplona ae0ab0c153 Merge pull request #1826 from vitorpamplona/claude/draft-delete-confirmation-y28xT
Add confirmation dialog to draft deletion via swipe gesture
2026-03-13 18:48:05 -04:00
Vitor Pamplona 1b5d7fdc13 Merge pull request #1834 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-13 18:14:40 -04:00
Claude b3adc56adf feat: replace dialog with swipe-to-reveal delete button for drafts
Instead of showing a confirmation dialog, the swipe now stays open
revealing a red background with a clickable "Request Deletion" button.
Supports swiping from both left-to-right and right-to-left directions.
The user taps the revealed button to confirm deletion.

https://claude.ai/code/session_01JWJxejv2EKrPj2KGEfPPxU
2026-03-13 22:11:54 +00:00
Crowdin Bot bb88228019 New Crowdin translations by GitHub Action 2026-03-13 22:10:50 +00:00
Vitor Pamplona 1468a41737 Adds expirations to change log 2026-03-13 18:07:33 -04:00
Vitor Pamplona c4c73a2bb7 Adds expirations in all new post screens.
Adds expirations in the feed and chats.
2026-03-13 18:05:59 -04:00
Vitor Pamplona 42fdedf23b fixes spotless 2026-03-13 17:03:24 -04:00
Vitor Pamplona 9cd779b60c Merge pull request #1817 from vitorpamplona/claude/add-post-expiration-date-Nmedg
Add NIP-40 expiration date support to note creation
2026-03-13 17:01:27 -04:00
Vitor Pamplona d81609165e Small refactoring of the relay list screen 2026-03-13 16:28:50 -04:00
Vitor Pamplona d281c2366c Removes the need to pass context down to a composable 2026-03-13 16:04:46 -04:00
Vitor Pamplona 4a5ffb3169 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  feat: add ZIP/JSON relay export and format picker dropdown
  refactor: extract relay export logic into RelayExporter class
  feat: add export button to relay settings screen
2026-03-13 15:31:22 -04:00
Vitor Pamplona e51967923b adds today's work to change log 2026-03-13 15:20:11 -04:00
Vitor Pamplona 8339413262 Fixes copilot recommendation 2026-03-13 15:20:01 -04:00
Vitor Pamplona b3bfa8950d Merge pull request #1823 from vitorpamplona/claude/export-relay-settings-v8uQg
Add relay settings export functionality
2026-03-13 15:09:25 -04:00
Vitor Pamplona 9b58a1be11 Fixing IO Dispatchers and scopes of choice. 2026-03-13 15:06:03 -04:00
Claude 0ad63bbfc1 feat: add ZIP/JSON relay export and format picker dropdown
- 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
2026-03-13 18:24:05 +00:00
Vitor Pamplona f3eb609eee Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
2026-03-13 13:45:44 -04:00
Vitor Pamplona 00f2d46b53 Refines user status flow and isExpired running 2026-03-13 13:45:22 -04:00
David Kaspar b9f6017590 Merge pull request #1832 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-13 17:41:23 +00:00
Crowdin Bot 9ec8dc167c New Crowdin translations by GitHub Action 2026-03-13 17:36:41 +00:00
Vitor Pamplona 99eaa37d4c Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  feat: complete NIP-38 implementation with p tag, emoji, and expiration support
2026-03-13 13:33:11 -04:00
Vitor Pamplona 6f57652455 Merge pull request #1827 from vitorpamplona/claude/implement-nip-38-q8DOF
Enhance user status display with emoji support and metadata tags
2026-03-13 13:32:41 -04:00
Vitor Pamplona 1966cc2034 Bitcoin first then namecoin 2026-03-13 13:29:55 -04:00
Claude e83ec94461 refactor: extract relay export logic into RelayExporter class
Moves the text formatting and share intent logic from AllRelayListScreen
into a dedicated RelayExporter class in the common package.

https://claude.ai/code/session_013PhuahpBFh6djVHzSsmNKM
2026-03-13 17:28:39 +00:00
Vitor Pamplona 8bc14b52b2 Spotless update 2026-03-13 13:25:23 -04:00