Commit Graph

9419 Commits

Author SHA1 Message Date
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
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
Claude 8c73dd8f14 test: add comprehensive test suite for NIP-47 Wallet Connect implementation
Covers all 10 request methods (create, serialize, deserialize), all success
and error response types, notification deserialization, EncryptionTag and
NotificationsTag parse/assemble/isTag, NwcInfoEvent build and capabilities,
NwcNotificationEvent structure, LnZapPaymentRequestEvent create/decrypt
with NIP-04 and NIP-44, and Nip47WalletConnect URI parsing and serialization.

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-13 03:45:50 +00:00
Claude da26ab14ab feat: complete NIP-47 Nostr Wallet Connect implementation in Quartz
Implements the full NIP-47 specification with all request methods,
response types, notification events, and JSON serialization.

New request methods:
- pay_invoice (updated with amount, metadata params)
- pay_keysend (amount, pubkey, preimage, TLV records)
- make_invoice, lookup_invoice, list_transactions
- get_balance, get_info
- make_hold_invoice, cancel_hold_invoice, settle_hold_invoice

New response types:
- Success responses for all methods above
- NwcErrorResponse (generic error for any method)
- NwcErrorCode enum with UNSUPPORTED_ENCRYPTION

New event kinds:
- NwcInfoEvent (kind 13194) - wallet service capabilities
- NwcNotificationEvent (kind 23197) - NIP-44 encrypted notifications
- Legacy kind 23196 support for NIP-04 notifications

New data models:
- NwcTransaction (shared invoice/payment object)
- TlvRecord (for keysend TLV records)
- Notification types: payment_received, payment_sent, hold_invoice_accepted
- HoldInvoiceAcceptedData with settle_deadline

Tags (following NIP-88 pattern):
- EncryptionTag for encryption scheme negotiation
- NotificationsTag for supported notification types

Updated:
- LnZapPaymentRequestEvent: generic createRequest() with NIP-44 support
- URI parser: lud16 parameter support
- Jackson deserializers: all methods routed correctly
- EventFactory: new kinds registered

https://claude.ai/code/session_01JFogiwyR4CPVP8cRznqahJ
2026-03-13 03:15:21 +00:00
Vitor Pamplona 198aa0971c adds ./gradlew spotlessApply request to claude
improves description of the .md file
2026-03-12 22:13:33 -04:00
Vitor Pamplona d9eb44df1f Improving the spacing in the new translation settings screen 2026-03-12 19:52:36 -04:00
Vitor Pamplona 0d9f390cd9 missing tests fix 2026-03-12 19:44:51 -04:00
Vitor Pamplona e6eb421e79 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* '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
2026-03-12 19:43:11 -04:00
Vitor Pamplona 21e29bbb3c Fixes test cases. 2026-03-12 19:42:46 -04:00
Vitor Pamplona deeac97082 Merge pull request #1814 from vitorpamplona/claude/add-translation-settings-MIoUT
feat: add missing translation settings to Translation settings menu
2026-03-12 19:41:40 -04:00
Vitor Pamplona ebbd7e1a77 adds today's work to the change log 2026-03-12 19:06:17 -04:00
Vitor Pamplona fa67030b47 Adds support for BUD-10 Blossom URIs 2026-03-12 18:57:46 -04:00
Vitor Pamplona d4dd5a65e6 anySync was returning either on true or false. it was not doing what it was supposed to do which is returning after the first true. 2026-03-12 18:56:17 -04:00
David Kaspar 4b304ce8d5 Merge pull request #1822 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-12 20:46:11 +00:00
Crowdin Bot bfd595ea00 New Crowdin translations by GitHub Action 2026-03-12 20:45:10 +00:00
David Kaspar c477745fbd Merge pull request #1820 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-12 20:43:26 +00:00
Crowdin Bot f31e73f182 New Crowdin translations by GitHub Action 2026-03-12 14:53:15 +00:00
Vitor Pamplona ad17924622 Making sure UrlDetector returns a schema even if the parser points to some user:password scheme. 2026-03-12 10:48:11 -04:00
Vitor Pamplona 3eb2fcbcb8 Solves the sorting contract crash by precaching all values before sorting. 2026-03-12 10:45:54 -04:00
Claude 117c903e7c feat: add missing translation settings to Translation settings menu
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
2026-03-12 09:46:07 +00:00
Vitor Pamplona a94d5bfd07 Fixes BUD 10 tests 2026-03-11 15:29:16 -04:00
Vitor Pamplona 548ce0a69d spotless apply 2026-03-11 15:24:02 -04:00
Vitor Pamplona 3712448c3f Merge pull request #1812 from vitorpamplona/claude/kotlin-blossom-uri-parser-lrQXn
Add BUD-10 Blossom URI parser and serializer
2026-03-11 15:19:22 -04:00
David Kaspar 853cdddc99 Merge pull request #1811 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-11 19:19:15 +00:00
Claude ac69a0fa74 feat(nipB7Blossom): add BUD-10 Blossom URI parser
Implements a pure-Kotlin (commonMain) parser for the BUD-10 blossom: URI
scheme, which allows sharing blob references with discovery hints.

Format: blossom:<sha256>.<ext>[?xs=<server>&as=<pubkey>&sz=<bytes>]

- BlossomUri data class holds sha256, extension, servers (xs), authors (as), size (sz)
- BlossomUri.parse() returns null for non-blossom URIs or invalid SHA-256
- Supports repeated xs/as params (multiple servers and authors)
- Percent-encodes server URLs on serialisation; decodes on parse
- BlossomUri.toUriString() round-trips back to a canonical URI
- Includes commonTest coverage for all parsing cases

https://claude.ai/code/session_01T4jyLbkNWd3f7i6MwsBcD4
2026-03-11 19:16:45 +00:00
Crowdin Bot 6aef5df6c8 New Crowdin translations by GitHub Action 2026-03-11 19:11:37 +00:00
David Kaspar 3bfd3f4314 Merge pull request #1810 from davotoula/update-translations
update cz, pt, de, sv
2026-03-11 19:09:52 +00:00
David Kaspar 61421f1393 Merge pull request #1809 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-11 19:05:03 +00:00
davotoula d7f9d584d6 update cz, pt, de, sv 2026-03-11 20:04:05 +01:00
Crowdin Bot a81b98a63a New Crowdin translations by GitHub Action 2026-03-11 19:03:42 +00:00
Vitor Pamplona 0c040d8816 addresses long domain names for blossom and nostr profiles 2026-03-11 14:59:52 -04:00
Vitor Pamplona 6a2cbb3a3a Using a real hex key in preview 2026-03-11 14:59:22 -04:00
Vitor Pamplona 1385feb066 fixes non-lowercase schemas on posts 2026-03-11 14:38:19 -04:00
Vitor Pamplona d521e29824 Shows all users cited in subscriptions for each relay. 2026-03-11 14:27:51 -04:00
Vitor Pamplona 1c044c9072 If warning is blank, revert to defaults 2026-03-11 14:12:02 -04:00
Vitor Pamplona ffe5e14b2b Display content warning reason 2026-03-11 14:10:55 -04:00
Vitor Pamplona a4010189cd Adds content warning reason to all new post screens 2026-03-11 13:52:18 -04:00
Vitor Pamplona 7ce13b5ba5 Adds content sensitivity descriptors to all screens 2026-03-11 13:47:10 -04:00
Vitor Pamplona 9bb87b38f5 Merge pull request #1808 from vitorpamplona/claude/add-content-warning-description-5BF4B
Add optional description field for sensitive content warnings
2026-03-11 13:43:47 -04:00
Vitor Pamplona eedfc61fad Fixes lingering relays on loading follows outbox relays. 2026-03-11 13:17:06 -04:00
Claude 2b0518a675 feat: allow users to add a description to the sensitive content warning
- 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
2026-03-11 16:51:37 +00:00
Vitor Pamplona 84da81b62f Adds calendar events and snippets to the search query 2026-03-11 12:44:29 -04:00
Vitor Pamplona 1bd96707e5 Improving the looks of namecoin settings 2026-03-11 12:33:52 -04:00