Commit Graph

9501 Commits

Author SHA1 Message Date
Vitor Pamplona ee449f78f4 Merge pull request #1843 from davotoula/bugfix-multiple-spinners-on-upload
Bugfix: multiple spinners on upload
2026-03-14 14:10:22 -04:00
David Kaspar 9d14a2d840 Merge pull request #1842 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-14 17:30:32 +00:00
davotoula 795da8cf1b Block Add to message button while uploading 2026-03-14 18:00:36 +01:00
davotoula 1fc0ba8628 refactor:
extract MediaUploadTracker with common methods

bugfixes:
 ChatFileUploadState.canPost() was missing isUploadingFile check
 ChatNewMessageViewModel.cancel() was never resetting upload flags
 Double-reset in ChatFileUploader and ChannelNewMessageViewModel
2026-03-14 18:00:36 +01:00
davotoula 42542159d4 bugfix: remove dead code
bugfix: ChannelNewMessageViewModel canPost checks wrong state
2026-03-14 18:00:36 +01:00
davotoula c290a1c779 - SelectFromGallery and SelectFromFiles now accept an enabled param separate from isUploading
- All ViewModels track isUploadingFile alongside isUploadingImage, set via hasNonMedia()
  - All screen call sites pass source-specific flags so only the initiating button spins
  - canPost() methods block posting during file uploads too
  - ChatNewMessageViewModel delegates to ChatFileUploadState (fixes pre-existing dead state)
  - cancel() methods reset both flags in all ViewModels
2026-03-14 17:59:35 +01:00
Crowdin Bot 0dce9542fb New Crowdin translations by GitHub Action 2026-03-14 15:41:38 +00:00
Vitor Pamplona 42574f302c updates change log 2026-03-14 11:39:02 -04:00
Vitor Pamplona d4ae3411c7 spotless 2026-03-14 11:36:58 -04:00
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