Commit Graph

8537 Commits

Author SHA1 Message Date
nrobi144 131252f19d feat: Convert commons module to Kotlin Multiplatform
- Rewrite build.gradle.kts for KMP with Android + JVM targets
- Restructure source sets: commonMain, jvmAndroid, androidMain, jvmMain
- Replace android.util.LruCache with androidx.collection.LruCache (KMP-ready)
- Replace android.util.Patterns with local regex constants
- Move shared code to commonMain (icons, hashtags, robohash, compose, etc.)
- Move JVM-shared code to jvmAndroid (richtext, base64Image detection)
- Keep Android-specific code in androidMain (blurhash, bitmap handling)
- Remove @Preview annotations from shared code (Android-only feature)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 07:52:45 +02:00
Vitor Pamplona 273d5feb94 - Adds support to delete GiftWraps by p-tag for Deletion and Vanish modules
- Adds Query plans to the test cases
- Reduces the amount of indexes that weren't used.
2025-12-26 15:43:51 -05:00
Vitor Pamplona 4455509e32 Converts pubkey to pubkey hash on vanish events. 2025-12-26 14:33:41 -05:00
Vitor Pamplona 5dcac034ac Uses event_header_row_id as primary key (with index) on event_vanish 2025-12-26 14:32:22 -05:00
Vitor Pamplona ef5ed755be Uses primary key to reuse rowId instead of building a separate index. 2025-12-26 14:31:18 -05:00
Vitor Pamplona 720e4d2c87 Forces the use of the index on Addressables and Replaceables 2025-12-26 14:29:10 -05:00
nrobi144 59eeb1ff0c fix: Use configured relays to initiate subscriptions
The FeedScreen was waiting for connectedRelays to be non-empty before
subscribing, but relays are only added to the NostrClient pool when
subscriptions request them. This created a deadlock where no relays
would ever connect.

Now uses relayStatuses.keys (configured relays) to initiate the
subscription, which triggers the NostrClient to add those relays
to its pool and connect to them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:10:02 +02:00
nrobi144 8c8a4ab9e8 feat: Add relay connections, login, and feed view to desktop app
- Add DesktopHttpClient and DesktopRelayConnectionManager for relay WebSocket connections
- Implement AccountManager with key generation and nsec/npub login support
- Create LoginScreen with key import and new key generation UI
- Build FeedScreen with live global feed subscription and note cards
- Add ProfileScreen showing account info and logout
- Update RelaySettingsScreen with connection status and relay management
- Configure JDK 21 toolchain for desktop builds
- Add shared UI analysis documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 14:02:44 +02:00
nrobi144 e441a67e2b fix: Correct compose compiler plugin alias
Use jetbrainsComposeCompiler alias to match version catalog.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:24:38 +02:00
nrobi144 82f8bc62a0 feat: Add Compose Multiplatform Desktop support foundation
- Add desktopApp module with JVM entry point and sidebar navigation
- Add Claude specs for AI-assisted development:
  - Agent definitions: nostr-protocol, kotlin-multiplatform, compose-ui, kotlin-coroutines
  - Skills: quartz-kmp conversion, compose-desktop patterns
  - Commands: desktop-run, nip, extract
- Update Gradle configuration with Compose Multiplatform 1.7.1 plugin
- Add coroutines and secp256k1 JVM dependencies to version catalog

Next steps:
- Convert Quartz library to full KMP (expect/actual for crypto)
- Implement relay connections in desktop app
- Share UI components between Android and Desktop

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 08:21:02 +02:00
Vitor Pamplona eeb0c11c65 No need for this create method of GiftWraps to be suspending 2025-12-24 17:10:34 -05:00
Vitor Pamplona 66ea8ceda0 Fixes replaceable test 2025-12-24 17:10:04 -05:00
Vitor Pamplona 77e56f86a9 Using in memory databases for the test cases 2025-12-24 17:09:33 -05:00
Vitor Pamplona 09eeebba94 Keeps the hasher cache on the seed module 2025-12-24 15:28:59 -05:00
Vitor Pamplona f1298c3133 Removes event id from the deletion module insert 2025-12-24 15:27:38 -05:00
Vitor Pamplona 826308cbad test addressable filters together with event-id based for deletions and updates 2025-12-24 15:26:43 -05:00
Vitor Pamplona ff48af5090 Adds a pTagHash utility to the hasher 2025-12-24 15:25:27 -05:00
davotoula 6f8072d1bb enhanced recording button 2025-12-24 18:37:29 +00:00
davotoula 0a0365c266 translations 2025-12-23 16:28:39 +00:00
davotoula 6785f124e9 bug fix:
- Allow reply to reply by using BaseVoiceEvent
2025-12-23 15:04:08 +00:00
davotoula 2422e77dd0 TODO:
Reply to a reply fails to upload
Verify deletion of temp voice files

Code review:
- move re-record button higher
2025-12-23 15:04:08 +00:00
davotoula 64fe4dfac6 Code review:
- Removed DisposableEffect cleanup
- Added cancelUpload() to selectRecording()
2025-12-23 15:04:08 +00:00
davotoula 9b2ef76250 TOOD:
Move re-record higher up tp avoid google assistant on longpress
Reply to a reply fails to upload
Verify deletion of temp voice files

Code review:
- temp file cleanup on disposal
- Made uploads cancellable
- recording must exist; metadata-only no longer enables Send)
- Removed duplication
2025-12-23 15:04:08 +00:00
davotoula 8eee85a05e Register Route in AppNavigation
Modify ReplyViaVoiceReaction to Navigate
2025-12-23 15:04:08 +00:00
davotoula 13e07eb2e8 Add VoiceReply Route
Create VoiceReplyViewModel and VoiceReplyScreen
Add String Resource(s)
2025-12-23 15:04:08 +00:00
Vitor Pamplona aa2f969be6 Faster event serializer -> sha256 -> id comparison without creating intermediary buffers. 2025-12-23 09:39:30 -05:00
Vitor Pamplona 01ea413afd Faster SQLLite DB with probabilistic hashvalues 2025-12-22 15:18:59 -05:00
Vitor Pamplona 79d6745ee6 Adds faster parsers for Messages and Commands
Unwraps inline runCatching because it seems faster for some reason.
2025-12-22 14:52:02 -05:00
David Kaspar 2de4d49fd8 Merge pull request #1620 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2025-12-22 20:30:10 +01:00
Crowdin Bot 94f1e45b9a New Crowdin translations by GitHub Action 2025-12-22 19:20:35 +00:00
Vitor Pamplona 10bba83ee3 Faster Event parsers 2025-12-22 14:18:59 -05:00
Vitor Pamplona 59413f3051 Moves type to the when clause 2025-12-22 12:25:07 -05:00
Vitor Pamplona 23a7e3b535 Fixes kind being a number 2025-12-22 12:23:34 -05:00
Vitor Pamplona 4c1fedddef Makes runCatching inline 2025-12-22 12:17:55 -05:00
Vitor Pamplona 14a6ba586a Fixes command parser 2025-12-22 11:19:25 -05:00
Vitor Pamplona 349625f748 simple refactoring 2025-12-22 11:18:28 -05:00
Vitor Pamplona e278982e6d Filters correct events 2025-12-22 11:17:43 -05:00
Vitor Pamplona c7038d695f Adds new tests for rumor and template serializer 2025-12-22 11:07:01 -05:00
Vitor Pamplona eefca1e3f4 Removes unnecessary tests 2025-12-22 08:11:55 -05:00
Vitor Pamplona 37158a83dc Adds a nextLong random method
Adds unbounded methods because they are faster.
2025-12-20 12:26:16 -05:00
Vitor Pamplona e4f3a56851 Removes the Statement cache since statements are not thread safe 2025-12-20 12:25:16 -05:00
Vitor Pamplona 8cbc5f1e93 Faster Array Deserializer 2025-12-19 18:57:12 -05:00
Vitor Pamplona 8d5f866ed0 Merge 2025-12-19 17:47:26 -05:00
Vitor Pamplona 62151727f2 Merge pull request #1619 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2025-12-19 17:45:47 -05:00
Vitor Pamplona 7e65f1afa7 Fixes the Imodule dependency 2025-12-19 17:45:31 -05:00
Crowdin Bot f6890e4e27 New Crowdin translations by GitHub Action 2025-12-19 22:34:14 +00:00
Vitor Pamplona 1dbb5f0c83 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
2025-12-19 17:31:37 -05:00
Vitor Pamplona 664f0d0d59 Adds a Benchmark to simulate a real use on storage operators 2025-12-19 17:29:23 -05:00
Vitor Pamplona 8d15f0478f Faster MurMur hash for 64bit results. 2025-12-18 17:30:53 -05:00
Vitor Pamplona fde5d57b16 Faster parseResult array builder 2025-12-18 12:08:05 -05:00