Commit Graph

9162 Commits

Author SHA1 Message Date
davotoula 87bf52b59e Code review fixes:
reduce duplicate code
2026-02-26 18:22:52 +00:00
davotoula 3822197830 Code review fixes:
Skip-forward clamps against unknown duration
Share dropdown is no longer anchored to the overflow button
simplify: keep skip amount fixed at 10
2026-02-26 18:22:28 +00:00
davotoula ce76f8fb27 Code review fixes:
Redundant Box in SkipButton
Unused string resources
remember { fadeIn() } pattern
2026-02-26 18:22:11 +00:00
davotoula ebbc7b5526 Code review fixes:
skipSeconds duplication + stale duration read
pointerInput(Unit) stale capture
ShareMediaAction composed unconditionally
Overflow menu background opaque in dark theme
2026-02-26 18:21:43 +00:00
davotoula 3e9475087e simplify top buttons, move to overflow
add skip buttons
add gradient overlays and double-tap gesture support
2026-02-26 18:17:13 +00:00
davotoula eb57811654 add skip button component, overflow menu component, gradient overlay 2026-02-26 18:13:34 +00:00
Vitor Pamplona 591c32ceb3 Solving some more stability issues 2026-02-25 16:53:50 -05:00
Vitor Pamplona 105dfa21fb Resolving some stability issues 2026-02-25 16:45:03 -05:00
Vitor Pamplona b523505c05 fixes spotless check 2026-02-24 18:00:04 -05:00
Vitor Pamplona 89cf71d555 Merge pull request #1710 from nrobi144/feat/desktop-private-dms
feat(desktop): encrypted private DMs (NIP-04/NIP-17)
2026-02-24 17:50:55 -05:00
Vitor Pamplona b1fd450c91 Merge branch 'main' into feat/desktop-private-dms 2026-02-24 17:50:48 -05:00
Vitor Pamplona f0d62a8ea2 Merge pull request #1713 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-02-24 17:40:36 -05:00
Crowdin Bot 80ca7d05ea New Crowdin translations by GitHub Action 2026-02-24 22:31:46 +00:00
Vitor Pamplona f2410a6921 - Turn video controller creation into a flow, removing most of the little hacks to get the controller to work in the lifecycle
- Uses new Media3 content view frames
- Redesigns video playback interface to remove unused buttons and modernize it.
- Adds our own buttons and indicators for the video playback
- Checks if PiP is supported and active before showing the button.
- Improves click interactions with the image dialog
- Fixes Surface release bugs
- Creates new interface for the Picture in Picture view
- Fixes muting and play buttons on the Picture in Picture
2026-02-24 17:28:41 -05:00
Vitor Pamplona 3942a38f0e Fixes missing Video Decoder for the Gallery 2026-02-24 17:22:18 -05:00
Vitor Pamplona 6c63ef60f3 Adds a filter for multiple addressable kinds but one key 2026-02-24 17:21:57 -05:00
Vitor Pamplona 4e39df2707 Initializes the disk cache on an io thread after 3 seconds. 2026-02-24 17:21:37 -05:00
Vitor Pamplona 4c81ef19df Fixes build.gradle to add dependencies for the Gallery 2026-02-24 17:02:03 -05:00
Vitor Pamplona bdc708e658 Fixes stability of the feedstate 2026-02-24 17:01:25 -05:00
Vitor Pamplona 5e2a4b2cef - Migrates Gallery to not play videos and simply display a tumbnail when it is a video
- Fixes incorrect aspect ratios of the AutoNonLazyGrid when multiple images exist for a single entry
- Adds Play buttons when the image fails to load so that people click and the post appears.
2026-02-23 19:28:53 -05:00
Vitor Pamplona 6c12476902 Fixes bug when showing multiple versions of replaceable videos in the gallery. 2026-02-23 19:21:58 -05:00
KotlinGeekDev 3817fb04f0 Merge remote-tracking branch 'origin/kmp-completeness' into kmp-completeness 2026-02-23 20:46:09 +01:00
KotlinGeekDev d48dfce3a5 Foundations(iOS Sourceset): Provide implementation for DigestInstance. Make note about KECCAK256(not supported, until other solution is found). 2026-02-23 19:44:55 +01:00
KotlinGeekDev fd1b1ae635 Foundations(iOS Sourceset): Duplicate Nip-04 tests for iOS, in order to test the AESCBC implementation used underneath. 2026-02-23 18:05:20 +01:00
KotlinGeekDev 265fef0a93 Foundations(iOS Sourceset): Provide implementation for AESGCM. Duplicate AESGCM tests for iOS. Move dependency to 'cryptography-optimal' make use of all iOS crypto providers. 2026-02-23 17:57:54 +01:00
nrobi144 e7239980c6 feat(desktop): add multi-column deck layout replacing NavigationRail
Replace the 80dp NavigationRail + single content area with a TweetDeck-style
multi-column deck. Default layout: Home Feed + Notifications + Messages.

New deck system:
- DeckColumnType sealed class with 12 column types
- DeckState with StateFlow-based column management
- Per-column navigation stack for in-column drill-down
- Draggable dividers for column resize (300-800dp)
- Column config persisted via Jackson JSON in DesktopPreferences
- 48dp thin sidebar with add-column and settings buttons
- AddColumnDialog for picking column types

Keyboard shortcuts:
- Cmd+T: Add column
- Cmd+W: Close focused column
- Cmd+1-9: Focus column by index
- Cmd+Shift+Left/Right: Move column left/right

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:53:31 +02:00
nrobi144 78aa7962e9 feat(desktop): add DM broadcast status banner and audit fixes
- Show relay confirmation URLs in broadcast banner
- Add relayUrls field to DmBroadcastStatus.Sent
- Wire send progress tracking with per-relay confirmations
- Fix empty chatroom Loading state transition
- Improve NewDmDialog npub metadata resolution
- Harden sendAndWaitForResponse timeout handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 06:53:53 +02:00
nrobi144 35a15f0462 feat(desktop): add DM broadcast banner and fix empty room loading
- Fix ListChangeFeedViewModel stuck on Loading for empty chatrooms by
  adding invalidateData() call in init block
- Add DmBroadcastStatus sealed class and DmBroadcastBanner composable
  in commons for relay send progress display
- Add DmSendTracker using sendAndWaitForResponse for confirmed delivery
- Wire send tracking through DesktopIAccount into ChatPane banner
- Fix audit risks: unsubscribe DMs on account change, wait for relay
  connect before subscribing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:20:04 +02:00
nrobi144 5d983c5d27 fix(desktop): wire gift wrap broadcast for DM reactions
The sendWrappedReaction function was creating NIP-17 gift wraps via
NIP17Factory but never broadcasting them. Added sendGiftWraps() to
IAccount interface with implementations in both Desktop and Android.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 09:34:33 +02:00
nrobi144 3f5ad8f7be feat(desktop): wire NIP-17 emoji reactions in DM chat
Replace TODO stub with sendWrappedReaction using NIP17Factory.
createReactionWithinGroup creates gift-wrapped reactions for group privacy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 07:34:53 +02:00
nrobi144 9a30b935d2 feat(desktop): wire DM sending, subscriptions, and new DM dialog
- DesktopIAccount: sign + broadcast NIP-04/NIP-17 messages via relay layer
- Main.kt: activate DM subscriptions on login, consume events into cache
- NewDmDialog: user search dialog with SearchBarState + UserSearchCard
- DesktopMessagesScreen: wire Cmd+Shift+N and "+" button to NewDmDialog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 07:33:04 +02:00
Vitor Pamplona 2f1eeea77b Merge pull request #1708 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-02-18 15:00:31 -05:00
Crowdin Bot bae16f0b52 New Crowdin translations by GitHub Action 2026-02-18 19:58:57 +00:00
Vitor Pamplona fc502d81d4 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
  update cz, pt, de, sv
2026-02-18 14:56:21 -05:00
Vitor Pamplona bcd2bc066b - Removes nip96 and updates Blossom recommendations 2026-02-18 14:56:07 -05:00
Vitor Pamplona 9000a11377 Merge pull request #1707 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-02-18 13:08:20 -05:00
Crowdin Bot b1dad24393 New Crowdin translations by GitHub Action 2026-02-18 18:05:59 +00:00
David Kaspar 69a7ceef6c Merge pull request #1706 from davotoula/update-translations
update cz, pt, de, sv
2026-02-18 18:03:38 +00:00
Vitor Pamplona 086e2046db Fixes test file loader for iOS 2026-02-18 12:34:55 -05:00
Vitor Pamplona ee7d20e939 Minor adjustment in class names 2026-02-18 12:25:48 -05:00
Vitor Pamplona 64c8c0edfd Improves the name of the NIP01 Crypto object 2026-02-18 11:29:56 -05:00
Vitor Pamplona 907ff6e844 Moves deterministic signer to the test package since it's only used there. 2026-02-18 11:24:33 -05:00
Vitor Pamplona cf7b4ed4e3 Fixes warning in chess test cases 2026-02-18 10:49:59 -05:00
Vitor Pamplona ab6560d47d Fixes Chess's need for clone functions that are not available on iOS 2026-02-18 10:46:06 -05:00
Vitor Pamplona 2c3ca7f906 - Finishes the transition to EventHint objects for building events.
- Removes the "a-tag" dependency on Addressable interface because the `a` can have different names in different objects.
2026-02-18 10:45:50 -05:00
davotoula 2af1dfbcf4 update cz, pt, de, sv 2026-02-18 11:36:20 +00:00
nrobi144 5d81da2486 feat(desktop): add encrypted DMs with split-pane layout (NIP-04/NIP-17)
Full desktop DM implementation with shared components extracted to commons:
- Relay layer: DM relay state, filter construction, subscription coordinator
- Shared: ChatroomFeedFilter, ChatroomFeedViewModel, ChatNewMessageState
- Shared UI: ChatBubbleLayout, ChatMessageCompose, ChatroomHeader, ChatTheme
- Desktop: split-pane (conversation list + chat), keyboard shortcuts, hover reactions
- IAccount extended with signer, sendNip04/17, chatroomList, isAcceptable

Refs: vitorpamplona/amethyst#1704

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 13:19:46 +02:00
Vitor Pamplona 46b17628ac Adds ditto as search relay 2026-02-17 19:30:04 -05:00
Vitor Pamplona 7bd4698073 Updates Tor 2026-02-17 19:28:53 -05:00
Vitor Pamplona fa4180e4ac Updates readme with the current list of supported NIPs 2026-02-17 19:19:29 -05:00