Commit Graph

3018 Commits

Author SHA1 Message Date
Vitor Pamplona af4404c86e Improves display of the drop down when adding relays. 2026-03-08 13:47:11 -04:00
Vitor Pamplona 7fa9fdff9e When adding new relays, show full information dialog 2026-03-08 13:07:29 -04:00
Vitor Pamplona 693931ed15 Removes the need to start user searches with @ in the user fields across the app. 2026-03-08 12:43:59 -04:00
Vitor Pamplona 785ef8f2f3 Final touches 2026-03-08 12:31:10 -04:00
Vitor Pamplona 92da66059b Opens the amount dialog when pressing the zap button without any zap setup 2026-03-08 12:31:03 -04:00
Vitor Pamplona db27b876ff Refines new Zap dialog screen 2026-03-08 12:17:41 -04:00
Vitor Pamplona 8912e55269 text improvements 2026-03-08 12:12:08 -04:00
Vitor Pamplona c1e8231ed9 Merge pull request #1784 from vitorpamplona/claude/improve-zap-settings-ui-D36RD
feat: improve Zap Settings UI with sections, chips, and animations
2026-03-08 11:59:13 -04:00
Crowdin Bot 0b59a6233e New Crowdin translations by GitHub Action 2026-03-08 14:00:37 +00:00
Crowdin Bot 5cf661dd8b New Crowdin translations by GitHub Action 2026-03-08 13:59:11 +00:00
M 55c45480b4 feat: add custom ElectrumX server settings for Namecoin resolution
Add a 'Namecoin Resolution' section that lets users configure custom
ElectrumX servers for .bit / d/ / id/ name resolution. When custom
servers are configured, they are used EXCLUSIVELY — the hardcoded
public defaults are completely ignored. This gives privacy-conscious
users full control over which servers observe their name lookups.

Server format: host:port (TLS default) or host:port:tcp (plaintext).
Supports .onion addresses for Tor-routed lookups.

New files:
  NamecoinSettings.kt
    Immutable settings data class with server string parsing/formatting.

  NamecoinSharedPreferences.kt
    DataStore-backed persistence following the TorSharedPreferences
    pattern. Provides a synchronous snapshot for the serverListProvider
    lambda and observable StateFlow for the UI.

  NamecoinSettingsSection.kt
    Compose UI: enable/disable toggle, active server display with
    DEFAULT/CUSTOM badge, add/remove servers with validation, reset.

  NamecoinSettingsTest.kt
    Unit tests for parsing, formatting, round-trips, and edge cases.

Integration:
  AppModules.kt — added namecoinPrefs (NamecoinSharedPreferences) and
  wired customServersOrNull into the existing serverListProvider so
  user-configured servers take priority over the Tor/default logic.

Refactored from an earlier patch to avoid duplicating code already in
main. The quartz-layer ElectrumXClient, NamecoinNameResolver, and
supporting types are reused unchanged.
2026-03-08 16:16:22 +11:00
M 8456b38dea feat: import follow list with Namecoin resolution during signup
Add a new signup step that lets users bootstrap their feed by importing
another profile's follow list. Supports all identifier types:

  - npub1... (NIP-19 bech32)
  - 64-char hex pubkey
  - alice@example.com (NIP-05 HTTP)
  - alice@example.bit / d/name / id/name (Namecoin blockchain)

Flow: Enter identifier → Resolve → Fetch kind 3 → Preview with
select/deselect → Apply follows → Done. Users can search multiple
profiles before continuing.

Changes to existing files:
  - NamecoinNameResolver: add resolveDetailed() + NamecoinResolveOutcome
  - NamecoinNameService: add resolveDetailed(), resolvePubkey()
  - AccountSessionManager: add isNewAccount flag, finishNewAccountSetup()
  - AccountScreen: route new accounts to ImportFollowListSection

New files:
  - FollowListImporter: identifier resolution + kind 3 fetch + parsing
  - ImportFollowListViewModel: state machine for the import flow
  - ImportFollowListScreen: UI with preview, select/deselect, search again
  - FollowListImporterTest: 14 unit tests
2026-03-08 15:38:54 +11:00
Claude 233d0bf089 feat: improve Zap Settings UI with sections, chips, and animations
- 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
2026-03-08 02:09:28 +00:00
Crowdin Bot e94985c614 New Crowdin translations by GitHub Action 2026-03-07 22:03:53 +00:00
Vitor Pamplona 0e3ca7ac35 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst: (35 commits)
  New Crowdin translations by GitHub Action
  fix chess tests
  Replace subsequent checks with '!isNullOrEmpty()' call
  use forEach: no intermediate list created.
  Use filterIsInstance to avoid dual iteration
  Lambda argument should be moved out of parentheses
  replace null checks with Elvis
  merge call chain with flatMap (slight performance improvement)
  New Crowdin translations by GitHub Action
  New Crowdin translations by GitHub Action
  update cz, pt, de, sv
  was this meant to be withContext?
  add names to boolean params
  remove unused imports
  Explicit type arguments can be inferred
  remove redundant modifiers
  correct package name
  If-Null return/break/... foldable to '?:'
  Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable.
  Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable.
  ...

# Conflicts:
#	amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt
2026-03-07 16:47:16 -05:00
Vitor Pamplona e3f99051db Applies new UrlDetector to the RichTextViewer 2026-03-07 16:38:25 -05:00
Vitor Pamplona 5e1a193f78 only http for the url previews 2026-03-07 11:08:38 -05:00
Crowdin Bot ec0fca24c6 New Crowdin translations by GitHub Action 2026-03-07 01:23:23 +00:00
davotoula b713b01af1 Replace subsequent checks with '!isNullOrEmpty()' call 2026-03-06 22:47:29 +01:00
davotoula f8187bad14 use forEach: no intermediate list created. 2026-03-06 22:38:05 +01:00
davotoula 03171f97a5 Use filterIsInstance to avoid dual iteration 2026-03-06 22:21:03 +01:00
davotoula 6bfb508ddc Lambda argument should be moved out of parentheses 2026-03-06 22:17:32 +01:00
davotoula d7d9352a90 replace null checks with Elvis 2026-03-06 22:09:19 +01:00
davotoula 4e614a3179 merge call chain with flatMap (slight performance improvement) 2026-03-06 21:51:26 +01:00
Crowdin Bot 3bf79355b8 New Crowdin translations by GitHub Action 2026-03-06 20:46:29 +00:00
Crowdin Bot 82fd15272d New Crowdin translations by GitHub Action 2026-03-06 20:43:36 +00:00
David Kaspar 069a19b3f5 Merge pull request #1776 from davotoula/update-translations
update cz, pt, de, sv
2026-03-06 20:42:07 +00:00
Vitor Pamplona 5d9687fb47 Merge pull request #1771 from mstrofnone/namecoin-nip05-improvements
fix: address race conditions and improve Namecoin NIP-05 resolution
2026-03-06 15:13:20 -05:00
Vitor Pamplona 976a9d5c77 Merge pull request #1774 from davotoula/lint-fixes
Lint fixes
2026-03-06 15:12:43 -05:00
davotoula 8d212b8f03 update cz, pt, de, sv 2026-03-06 21:04:26 +01:00
davotoula aec0101769 was this meant to be withContext? 2026-03-06 20:10:35 +01:00
davotoula 7f0b2c500f add names to boolean params 2026-03-06 19:59:20 +01:00
davotoula 582153b193 remove unused imports 2026-03-06 19:59:20 +01:00
davotoula 8868b1b0e6 Explicit type arguments can be inferred 2026-03-06 19:59:20 +01:00
davotoula bd71e9ae8f remove redundant modifiers 2026-03-06 19:59:20 +01:00
davotoula 8329184d99 correct package name 2026-03-06 19:46:48 +01:00
davotoula c8c42b5d70 If-Null return/break/... foldable to '?:' 2026-03-06 19:46:47 +01:00
davotoula 34e1ea92b2 Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable. 2026-03-06 19:46:47 +01:00
davotoula 99e8ffcdeb Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable. 2026-03-06 19:46:47 +01:00
davotoula 7de098063f Specifying : ExoPlayer makes the contract explicit 2026-03-06 19:46:47 +01:00
davotoula 953e8c1749 supress false positive 2026-03-06 19:46:47 +01:00
davotoula 5ac8b9ad62 Prefer mutableLongStateOf instead of mutableStateOf 2026-03-06 19:46:47 +01:00
davotoula 80fb171e0a Unnecessary; SDK_INT is always >= 26 2026-03-06 19:46:47 +01:00
davotoula 8876c3c1d7 use multi-dollar string interpolation
avoid default locale
2026-03-06 19:46:47 +01:00
davotoula ccb5738826 Replace the API-branched calls with ContextCompat.registerReceiver() which handles the flags transparently across all API levels 2026-03-06 19:46:47 +01:00
davotoula 4ee4a00b58 Add a nested comment explaining why this function is empty 2026-03-06 19:46:47 +01:00
Vitor Pamplona f4d401bc56 Switches to our own version of the Url Detector 2026-03-06 10:58:59 -05:00
mstrofnone a817a2cc79 remove dead namecoinNameService declaration from AppModules
The NamecoinNameService.init() singleton was the only consumer of
the companion object removed in the previous commit. The
namecoinNameService val itself was never referenced — namecoinResolver
is what's wired into Nip05Client.
2026-03-07 00:49:05 +11:00
mstrofnone 24a03b5d20 remove unused singleton companion object from NamecoinNameService
The companion object (instance, getInstance, init) was dead code —
nothing outside the class referenced it. Koin handles instantiation
via AppModules.
2026-03-07 00:38:58 +11:00
Vitor Pamplona ddc4daaa28 Merge pull request #1773 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-06 08:12:46 -05:00