Commit Graph

8524 Commits

Author SHA1 Message Date
Vitor Pamplona 780ea487aa Adds a test case to simulate reports 2025-12-31 09:42:54 -05:00
Vitor Pamplona 4f1ad11d79 Moves SQLBuilder to its own class 2025-12-31 09:27:33 -05:00
Vitor Pamplona 7b696f5f54 Adds created_at to tags to speed up tag-ordered queries 2025-12-30 16:23:11 -05:00
Vitor Pamplona 5eb9d230e2 Moves current test to a better name of Notifications
Adds a Followers test
2025-12-30 13:00:03 -05:00
Vitor Pamplona c3d741ebd1 Implements AND queries for tags: https://github.com/nostr-protocol/nips/pull/1365 2025-12-30 12:29:04 -05:00
Vitor Pamplona df97b7c444 Improves efficiency of the filter class for matching and checking errors 2025-12-30 12:09:05 -05:00
Vitor Pamplona 333285747b Migrates to using indexes instead tagNames to avoid non-ASCII chars reaching the DB 2025-12-30 12:06:22 -05:00
Vitor Pamplona 2a8e7cbe94 Fixes duplicated results 2025-12-30 12:03:09 -05:00
Vitor Pamplona 258c4e0111 Moves BundledUpdate (which should cease to exist at some point) to Amethyst's module 2025-12-29 19:42:47 -05:00
Vitor Pamplona 54ce0a5a92 Moves mutable time to Amethyst 2025-12-29 19:37:45 -05:00
Vitor Pamplona c5133e98f8 - Fixes Preview Tag
- Fixes Email Pattern
2025-12-29 18:57:56 -05:00
Vitor Pamplona e9d07b3939 Aligns Android studio with gradle files 2025-12-29 17:37:43 -05:00
Vitor Pamplona d586c39008 Getting rid of some idea files in the repo 2025-12-29 16:21:19 -05:00
Vitor Pamplona 31d7e135cb Updates kotlin, compose, multiplatform, activity, serialization, media3, mockk, secp256, tor, androidxCamera, stdlib 2025-12-29 14:23:48 -05:00
Vitor Pamplona 6054c5700d Merge pull request #1625 from nrobi144/feat/desktop-multiplatform
Create desktopApp module
2025-12-29 10:41:58 -05:00
Vitor Pamplona d2c8991916 Merge pull request #1627 from greenart7c3/payto_part1
Payment targets - part 1
2025-12-29 09:31:45 -05:00
greenart7c3 ff0466872a Create PaymentTargetEvent 2025-12-29 06:26:25 -03:00
Vitor Pamplona 163632249e Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
  Quartz Feature Parity Table on Multiplatform
  enhanced recording button
  translations
  bug fix: - Allow reply to reply by using BaseVoiceEvent
  TODO: Reply to a reply fails to upload Verify deletion of temp voice files
  Code review: - Removed DisposableEffect cleanup - Added cancelUpload() to selectRecording()
  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
  Register Route in AppNavigation Modify ReplyViaVoiceReaction to Navigate
  Add VoiceReply Route Create VoiceReplyViewModel and VoiceReplyScreen Add String Resource(s)
2025-12-28 12:23:14 -05:00
David Kaspar 7351cf1dd3 Merge pull request #1626 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2025-12-28 16:24:52 +00:00
Crowdin Bot d2164118bc New Crowdin translations by GitHub Action 2025-12-28 15:59:11 +00:00
Vitor Pamplona 425d07fa8f Merge pull request #1622 from davotoula/voice-notes-replies
Christmas delivery: Voice notes replies
2025-12-28 10:57:52 -05:00
Vitor Pamplona fe046477f5 Merge pull request #1624 from DestBro/quartz_feature_parity_table_on_multiplatform
Quartz Feature Parity Table on Multiplatform
2025-12-28 10:40:40 -05:00
Róbert Nagy edd0ac9b77 Merge branch 'main' into feat/desktop-multiplatform 2025-12-28 15:43:59 +02:00
nrobi144 0dcd480d43 leftover changes 2025-12-28 07:35:48 +02:00
nrobi144 e407e03e90 update readme 2025-12-28 07:21:36 +02:00
nrobi144 b23ff488ed refactor: Polish shared commons components and fix formatting
- Improve RelayConnectionManager with better connection handling
- Refine UI components (LoginCard, ProfileInfoCard, RelayStatusCard)
- Update KeyInputField with improved layout
- Fix formatting in FeedHeader and AppScreen
- Add proper number formatting utilities
- Remove .claude config from version control

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 07:03:57 +02:00
Vitor Pamplona 57a22384b2 Refactoring 2025-12-27 17:57:32 -05:00
Vitor Pamplona 390da16129 Creating a IndexingStrategy interface 2025-12-27 17:55:30 -05:00
Dumitru 71d9f25557 Quartz Feature Parity Table on Multiplatform 2025-12-27 20:41:17 +01:00
Vitor Pamplona 55774b0292 sorting tags before inserting speeds up imports by ~20% 2025-12-27 13:13:46 -05:00
Vitor Pamplona 068ba3b717 Vacuum and Analyze are blocking, so moving to a coroutine. 2025-12-27 12:40:23 -05:00
Vitor Pamplona d435231f55 Setting cache doesn't seem to do anything :( 2025-12-27 12:38:22 -05:00
Vitor Pamplona f07070d65e Fixes test name 2025-12-27 12:12:12 -05:00
Vitor Pamplona f0b6fa622c adds vacuum and analyse utility functions 2025-12-27 12:11:58 -05:00
Vitor Pamplona f9582bb007 Increases cache size to up to 40MB 2025-12-27 12:11:31 -05:00
nrobi144 201acc8140 feat: Extract shared UI components to commons for Android/Desktop reuse
Extract reusable components from desktopApp to commons module:

Utilities (commonMain):
- NumberFormatters: countToHumanReadable, countToHumanReadableBytes
- PubKeyFormatter: toShortDisplay, toDisplayHexKey for key formatting

Utilities (jvmAndroid):
- TimeAgoFormatter: Human-readable time formatting for Nostr timestamps
- ZapFormatter: BigDecimal amount formatting with G/M/k suffixes

UI Components (commonMain):
- AppScreen enum for shared navigation
- LoadingState, EmptyState, ErrorState with refresh/retry support
- FeedHeader with relay status indicator
- NoteCard for displaying Nostr notes
- ActionButtons (AddButton, RemoveButton)
- RobohashImage for avatar display
- PlaceholderScreens (Search, Messages, Notifications)
- RelayStatusColors and shared color definitions

UI Components (jvmAndroid):
- LoginCard with key input field
- NewKeyWarningCard for new key backup warnings
- KeyInputField and SelectableKeyText
- ProfileInfoCard for account display
- RelayStatusCard for relay management

Core (jvmAndroid):
- AccountManager with login/logout/key generation
- RelayConnectionManager base class
- RelayStatus and DefaultRelays

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 15:12:04 +02:00
nrobi144 e5a064d0c3 feat: Add expect/actual for blurhash and base64Image in commons
- Create PlatformImage expect/actual abstracting Bitmap/BufferedImage
- Move pure blurhash algorithms (Base83, SRGB, CosineCache, BlurHashEncoder) to commonMain
- Rewrite BlurHashDecoder to return PlatformImage instead of Bitmap
- Add PlatformImage.toBlurhash() extension in commonMain
- Add platform-specific Bitmap.toBlurhash() and BufferedImage.toBlurhash()
- Add base64Image toPlatformImage() for both Android and JVM

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 12:48:32 +02:00
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