Commit Graph

9806 Commits

Author SHA1 Message Date
Vitor Pamplona cfead47d71 Improves design of the policy 2026-03-21 13:21:21 -04:00
Claude b0a8cae194 refactor: extract AuthPolicy interface from requireAuth boolean
Replace the requireAuth: Boolean parameter in NostrServer with a
pluggable AuthPolicy interface. Each policy has trigger points for
EVENT (acceptEvent), REQ (acceptReq with filter rewriting), COUNT
(acceptCount), and live event delivery (canSendToSession).

Built-in policies: OpenPolicy (allow all) and RequireAuthPolicy
(require auth for all commands, matching the previous behavior).

https://claude.ai/code/session_017vdjbdxdYK1oJMH66koVZE
2026-03-20 22:40:18 +00:00
Claude 8fd08aa56d feat: implement NIP-42 server-side relay authentication
Add server-side AUTH challenge/response handling per NIP-42 spec:
- RelaySession generates a unique challenge per connection and tracks
  authenticated pubkeys (multiple users can auth on one session)
- NostrServer gains relayUrl and requireAuth parameters; when requireAuth
  is true, EVENT/REQ/COUNT are rejected with auth-required: prefix
- AUTH handler validates kind 22242, created_at within 10 min, challenge
  and relay tag matching
- AuthCmd now accepts Event (not just RelayAuthEvent) so the server can
  gracefully reject wrong-kind auth attempts
- 11 new tests covering auth success, wrong challenge/relay/kind/timestamp,
  multi-user auth, and requireAuth gating

https://claude.ai/code/session_017vdjbdxdYK1oJMH66koVZE
2026-03-20 22:05:53 +00:00
David Kaspar ccffeb1e49 Merge pull request #1890 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-20 22:14:17 +01:00
Crowdin Bot 752f460bc0 New Crowdin translations by GitHub Action 2026-03-20 21:08:30 +00:00
Vitor Pamplona b247310ba7 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  code review fixes:   1. options.isNotEmpty().also → if guard   2. Hardcoded English strings in FeedGroup enum   3. Hardcoded accessibility label   4. Raw 14.sp literals (×6) → replaced with Font14SP theme constant   5. Raw 12.sp literal → replaced with Font12SP theme constant   6. Modifier.size(20.dp) → replaced with existing Size20Modifier theme constant
  update gitignore
  add grouped feed filter dialog with Material 3 styling add icons, reduce text size, center group headers in filter dialog
  modernize SpinnerSelectionDialog with Material 3 styling
  feature switch chess icon on android: visible in debug/benchmark client only
  New Crowdin translations by GitHub Action
  Intentionality: check the return value and log a warning via Log.w() when deletion fails
  Update CS, DE, SV, PT
2026-03-20 17:05:29 -04:00
Vitor Pamplona fc1e3e6b83 Adds a simple relay to quartz 2026-03-20 16:54:04 -04:00
Vitor Pamplona d431b12f94 Migrates EventStore from Android's SQLLite to KMP
Fixes testing of libsodium between java and android
2026-03-20 16:00:17 -04:00
Vitor Pamplona c5066d89c3 Fixes serialization issues when the code falls back to Kotlin Serialization 2026-03-20 15:58:17 -04:00
Vitor Pamplona 864581ecaa Merge pull request #1887 from davotoula/ui-polish-feed-filter
UI polish: feed filter
2026-03-20 10:00:38 -04:00
davotoula 620f8dbf10 code review fixes:
1. options.isNotEmpty().also → if guard
  2. Hardcoded English strings in FeedGroup enum
  3. Hardcoded accessibility label
  4. Raw 14.sp literals (×6) → replaced with Font14SP theme constant
  5. Raw 12.sp literal → replaced with Font12SP theme constant
  6. Modifier.size(20.dp) → replaced with existing Size20Modifier theme constant
2026-03-20 14:30:07 +01:00
davotoula f15b7620df update gitignore 2026-03-20 14:01:45 +01:00
davotoula 3a195c4648 add grouped feed filter dialog with Material 3 styling
add icons, reduce text size, center group headers in filter dialog
2026-03-20 14:01:45 +01:00
davotoula 460ccc2d02 modernize SpinnerSelectionDialog with Material 3 styling 2026-03-20 14:00:19 +01:00
Vitor Pamplona 4f80fbfae4 Merge pull request #1886 from davotoula/feature-switch-for-chess
feature switch out chess icon on android
2026-03-20 07:41:38 -04:00
davotoula 05eb94915b feature switch chess icon on android: visible in debug/benchmark client only 2026-03-20 10:14:59 +01:00
David Kaspar 1159edad15 Merge pull request #1885 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-20 10:06:54 +01:00
Crowdin Bot 450a352c98 New Crowdin translations by GitHub Action 2026-03-20 08:36:42 +00:00
davotoula 94cf31eb29 Intentionality: check the return value and log a warning via Log.w() when deletion fails 2026-03-20 09:32:11 +01:00
davotoula 123d9eea0c Update CS, DE, SV, PT 2026-03-20 09:23:01 +01:00
Vitor Pamplona c976f24a50 Fixes the list of users in the connected relays UI 2026-03-19 17:41:25 -04:00
Vitor Pamplona 583b9e56ba Merge pull request #1883 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-19 17:13:00 -04:00
Crowdin Bot e183d5efd2 New Crowdin translations by GitHub Action 2026-03-19 21:10:44 +00:00
Vitor Pamplona f9369b0cf1 Merge pull request #1884 from vitorpamplona/claude/improve-android-push-notifications-9DzMr
Add direct reply and mark read actions to DM notifications
2026-03-19 17:08:50 -04:00
Vitor Pamplona 11b5ebe108 Final touches. 2026-03-19 17:07:03 -04:00
Vitor Pamplona 379cbc7e69 Merge pull request #1882 from vitorpamplona/claude/add-attestations-package-ZnoES
Add attestation event types and tag support for NIP-31871
2026-03-19 16:42:44 -04:00
Vitor Pamplona a3941e3b01 Merge pull request #1837 from vitorpamplona/claude/strip-file-metadata-sVIEd
Add metadata stripping for images, videos, and audio files
2026-03-19 16:41:10 -04:00
Claude afb3221446 feat: add attestations package to quartz experimental
Implement the Attestations NIP with four event types:
- AttestationEvent (31871, addressable) - validity claims about other events
- AttestationRequestEvent (31872, addressable) - request attestation from attestors
- AttestorRecommendationEvent (31873, addressable) - recommend attestors for kinds
- AttestorProficiencyEvent (11871, replaceable) - declare verification proficiency

Each event follows Quartz's tag-per-file pattern with TagArrayExt and
TagArrayBuilderExt for reading/building tags.

https://claude.ai/code/session_01UswHRVTNqn1ToU4P4XDh2V
2026-03-19 20:40:19 +00:00
David Kaspar 32fdb63a89 Merge pull request #1881 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-19 21:32:11 +01:00
Crowdin Bot a1694bd84d New Crowdin translations by GitHub Action 2026-03-19 20:16:12 +00:00
David Kaspar 892d6f2b7c Merge pull request #1880 from davotoula/update-translations
Update CS, DE, SV, PT
2026-03-19 21:14:26 +01:00
davotoula d1e70879ee Update CS, DE, SV, PT 2026-03-19 21:09:36 +01:00
davotoula adc2e15078 Merge branch 'main-upstream' into claude/strip-file-metadata-sVIEd 2026-03-19 20:49:15 +01:00
Vitor Pamplona 4df78340b6 Merge pull request #1879 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-19 15:41:16 -04:00
davotoula ae5f76e018 Merge branch 'main-upstream' into claude/strip-file-metadata-sVIEd 2026-03-19 20:38:57 +01:00
Crowdin Bot f8d6ac7900 New Crowdin translations by GitHub Action 2026-03-19 19:38:07 +00:00
Vitor Pamplona cee4291ba9 Merge pull request #1878 from vitorpamplona/claude/event-sync-screen-sYGtN
Claude/event sync screen
2026-03-19 15:36:38 -04:00
Vitor Pamplona fd5e8dcca0 Merge pull request #1877 from vitorpamplona/claude/nip17-dm-migration-qxDbT
Deprecate NIP-04 and always use NIP-17 for DM sending
2026-03-19 15:25:38 -04:00
Vitor Pamplona ad53bff8e3 Final touches to remove nip04 dms 2026-03-19 15:23:48 -04:00
Vitor Pamplona f75971fc6a Merge pull request #1876 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-19 13:31:51 -04:00
Crowdin Bot 2f60697b28 New Crowdin translations by GitHub Action 2026-03-19 16:43:50 +00:00
Vitor Pamplona 3f4e265dc0 Brings the creation of Zap Polls back. 2026-03-19 12:40:14 -04:00
Claude 695d3c7a23 feat: deprecate NIP-04 DM sending, always use NIP-17
NIP-04 encryption for sending DMs is now deprecated. All new messages
are sent using NIP-17 (gift-wrapped sealed messages). Reading NIP-04
messages remains supported for backward compatibility.

When a recipient lacks both a DM relay list (kind 10050) and NIP-65
inbox relays, the send button is disabled and a warning is shown
explaining that messages cannot be delivered.

Changes:
- ChatNewMessageState: Remove nip17/requiresNip17 toggles, add
  recipientsMissingDmRelays state, always send via NIP-17
- ChatNewMessageViewModel: Always use NIP-17, remove NIP-04 send
  paths, add recipient relay status checking
- ToggleNip17Button -> Nip17Indicator: Replace toggle with static
  NIP-17 indicator (always on)
- PrivateMessageEditFieldRow: Show warning when recipients lack
  DM relay lists, hide message input
- ChatFileSender: sendAll() always uses NIP-17
- Desktop ChatPane: Remove NIP-17 toggle, show relay warning
- ChatroomView: Reactively check recipient DM relay availability

https://claude.ai/code/session_01T7QhUW9cZogk4DxDXbbbJJ
2026-03-19 15:22:13 +00:00
Vitor Pamplona 185fd96802 Merge branch 'main' into claude/strip-file-metadata-sVIEd 2026-03-19 10:06:20 -04:00
Vitor Pamplona 0f4555cfaa Merge pull request #1875 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-19 09:58:46 -04:00
Crowdin Bot 5903af2229 New Crowdin translations by GitHub Action 2026-03-19 13:56:12 +00:00
Vitor Pamplona 29db4ca0e3 Merge pull request #1825 from vitorpamplona/claude/event-sync-screen-sYGtN
Add Event Sync feature to redistribute events across relays
2026-03-19 09:54:26 -04:00
Vitor Pamplona 78ffb9fce4 Merge branch 'main' into claude/event-sync-screen-sYGtN 2026-03-19 09:54:20 -04:00
Vitor Pamplona 30f862cf26 Increase max parallel to 50 2026-03-19 09:50:50 -04:00
Vitor Pamplona ab81b2a71d Improving calendar debug 2026-03-19 09:50:31 -04:00