Commit Graph

9931 Commits

Author SHA1 Message Date
nrobi144 836e024bd7 feat(media): use VLC :start-volume for initial audio; document volume bug
Passes :start-volume media option to VLC on play. Removes polling/delay
volume hacks. Documents 9.7 volume bug in testing plan — VLC ignores
initial volume on macOS, needs further investigation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:26:52 +02:00
nrobi144 f0c80f3c7c fix(media): delay volume enforcement — VLC audio output not ready at playing event
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:34:36 +02:00
nrobi144 11b9fdad80 fix(media): enforce volume on playback start — VLC resets volume on new media
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:30:57 +02:00
nrobi144 2a6087af27 feat(media): global media player — persistent playback across navigation
Media playback now survives navigation. A GlobalMediaPlayer singleton owns
VLC players and exposes StateFlows. Composables are thin viewports.
NowPlayingBar has full controls (volume, mute, save, fullscreen).
GlobalFullscreenOverlay renders video fullscreen above all screens.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 12:27:13 +02:00
davotoula 20ab105e44 feat: add metadata stripping failure dialog to all upload ViewModels
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 11:12:36 +01:00
davotoula c0632e17bd feat: add onStrippingFailed callback to upload orchestrators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:51:30 +01:00
davotoula 9ce1ff3e63 feat: plumb stripMetadata from UI through ViewModels to upload orchestrators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:50:16 +01:00
davotoula 3b1b15911f feat: rename stripLocationMetadata to stripMetadata in UI state and dialogs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:42:59 +01:00
davotoula c76459859d feat: update all Screen call-sites for new stripMetadata onAdd parameter
Add 6th Boolean parameter to onAdd lambdas in all 6 files that call
ImageVideoDescription. The parameter is unused (_) for now in 5 sites
and named in ShortNotePostScreen for future plumbing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:38:04 +01:00
davotoula 0d514a46d7 feat: add privacy toggle to ImageVideoDescription
Add stripMetadata state and SettingSwitchItem toggle. Extend onAdd
callback signature with 6th Boolean parameter for stripMetadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:36:56 +01:00
davotoula f7a9389a66 feat: add string resources for privacy toggle and metadata dialog
Rename strip_location_metadata_label/description to strip_metadata_label/description
to reflect broader scope. Add new strings for the metadata stripping failure dialog.
Update references in NewMediaView.kt and ChatFileUploadDialog.kt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:36:03 +01:00
davotoula 24e8487db6 fix: hide codec toggle when video compression is set to uncompressed
When the compression quality slider is set to UNCOMPRESSED (value 3),
no encoding happens so the H264/H265 codec choice is irrelevant. Hide
the codec toggle in this case to avoid confusion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:33:35 +01:00
davotoula 0e62904883 fix: hide compression slider for audio uploads
Audio has no compression support in MediaCompressor (falls through to
no-op), so showing the compression quality slider for audio files is
misleading. This removes audio from the slider visibility condition in
ImageVideoDescription and wraps the unconditionally-shown slider in
ChatFileUploadDialog with a media type check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:33:28 +01:00
davotoula 489e731eea feat: add MP3 ID3 tag stripping and early-exit for unsupported audio
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:29:09 +01:00
davotoula b9d62edaad feat: support multiple tracks in audio metadata stripping
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:28:13 +01:00
davotoula 7219c787a6 fix: update direct MetadataStripper.strip() call sites for StrippingResult
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:26:02 +01:00
davotoula 4fc5166815 feat: propagate StrippingResult through UploadOrchestrator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:25:55 +01:00
davotoula f9176fc3fb feat: add StrippingResult data class to MetadataStripper
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:25:50 +01:00
nrobi144 6e1315a4fa feat(media): improve video player pool, thumbnail extraction, and NoteCard layout
Harden VLC player pool with dedicated thumbnail acquisition, better error
logging, and defensive buffer checks. Simplify lightbox/video controls,
fix NoteCard media sizing across feed, thread, bookmarks, and search screens.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 09:24:00 +02:00
Vitor Pamplona f25be5e7bd removes the benchmark action... it's not that useful. 2026-03-17 16:00:46 -04:00
Vitor Pamplona bc5b254d01 merge 2026-03-17 15:57:44 -04:00
Vitor Pamplona 62811282a1 Merge pull request #1871 from vitorpamplona/claude/reorganize-nip47-wallet-mbVxR
Refactor NIP47 WalletConnect into organized subpackages
2026-03-17 15:47:51 -04:00
Vitor Pamplona 3e19195e4a Renaming and making a test case that considers limits.
Fixes active filter index bug
2026-03-17 15:45:52 -04:00
davotoula 72158e8fc2 Add rotation to stripped video 2026-03-17 20:27:15 +01:00
davotoula e5e51c9c42 REMUX_BUFFER_SIZE = 8MB — extracted as a companion constant (was 1024 * 1024 inline in both video and audio). 8MB prevents silent frame loss on 4K keyframes.
stripAudioMetadata try/finally — now mirrors stripVideoMetadata exactly: muxer/extractor always released, incomplete output file deleted on failure.
2026-03-17 20:09:33 +01:00
Claude 5029db2302 refactor: reorganize nip47 wallet connect package into subpackages
Split the flat nip47WalletConnect package into logical subpackages:
- rpc/ - JSON-RPC protocol models (Request, Response, Notification, NwcMethod, NwcErrorCode, NwcTransaction, etc.)
- events/ - Nostr event types (LnZapPaymentRequestEvent, LnZapPaymentResponseEvent, NwcInfoEvent, NwcNotificationEvent)
- cache/ - Decryption caches (NostrWalletConnectRequestCache, NostrWalletConnectResponseCache)

Root level keeps the entry points: Nip47WalletConnect (URI parsing), Nip47Client, Nip47Server.
Existing subpackages (tags/, kotlinSerialization/, jackson/) remain unchanged.

https://claude.ai/code/session_018YcwMeTHPXmeqpbZHcBEUg
2026-03-17 19:04:24 +00:00
davotoula d87bf37138 added comment about limitations 2026-03-17 19:53:57 +01:00
davotoula e7d11fdc84 add Track interleaving 2026-03-17 19:51:58 +01:00
davotoula a2f29d5e2e Early return with the original uri if there are no tracks 2026-03-17 19:43:16 +01:00
davotoula 4cf3a84190 delete orphaned output file on failure 2026-03-17 19:42:18 +01:00
davotoula b61e1d5779 fix resource leak(s) on exception 2026-03-17 19:40:12 +01:00
Vitor Pamplona b8351b8e29 Merge branch 'main' into claude/event-sync-screen-sYGtN 2026-03-17 14:17:13 -04:00
Vitor Pamplona 18fdfcc9d8 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  adaptability: use constant instead of repeated string literals
2026-03-17 14:10:45 -04:00
Vitor Pamplona b22aa1ad0f Shows default banner if the user's image is not available 2026-03-17 14:02:09 -04:00
Vitor Pamplona 7f5baab5df Adds last seen to the user profile 2026-03-17 13:58:07 -04:00
davotoula 76f8130d40 Merge branch 'main-upstream' into claude/strip-file-metadata-sVIEd 2026-03-17 18:47:35 +01:00
Vitor Pamplona aaa3bcfb2a Merge pull request #1870 from vitorpamplona/claude/fix-event-counter-per-filter-Aps6R
Add per-filter event counting for relay pagination
2026-03-17 13:46:10 -04:00
Claude 308e9fcb9e chore: remove unused coroutineContext import in EventSync
https://claude.ai/code/session_01Baaira4xoEHEsaSQCX52Sy
2026-03-17 17:43:04 +00:00
davotoula a6c153a154 adaptability: use constant instead of repeated string literals 2026-03-17 18:42:39 +01:00
Claude 76c00dea3c fix: track event counts per filter in downloadFromRelay
Change the event counter from a single global counter to per-filter
tracking using Filter.match(). Each filter's limit is now respected
individually - fulfilled filters are excluded from subsequent pages,
and pagination stops when all filters with limits are satisfied.

https://claude.ai/code/session_01Baaira4xoEHEsaSQCX52Sy
2026-03-17 17:41:40 +00:00
Vitor Pamplona 504a218eee Merge branch 'main' into claude/event-sync-screen-sYGtN 2026-03-17 13:41:34 -04:00
Vitor Pamplona 97758a5163 fixes build 2026-03-17 13:35:50 -04:00
Vitor Pamplona dd9e57542f Merge branch 'main' into claude/event-sync-screen-sYGtN 2026-03-17 13:28:36 -04:00
Vitor Pamplona 985cab73cd Merge branch 'main' into claude/strip-file-metadata-sVIEd 2026-03-17 13:27:00 -04:00
Vitor Pamplona 843058ce52 Merge pull request #1869 from vitorpamplona/claude/move-delete-button-topbar-SlZVz
Refactor DraftListScreen UI with top app bar improvements
2026-03-17 13:26:23 -04:00
Vitor Pamplona 91994a0b74 Merge branch 'main' into claude/strip-file-metadata-sVIEd 2026-03-17 13:25:54 -04:00
Vitor Pamplona acb8068606 Merge pull request #1866 from vitorpamplona/claude/auto-load-transactions-scroll-KC8of
Add transaction filtering and pagination to wallet screen
2026-03-17 12:06:31 -04:00
Vitor Pamplona cc98ac72c1 Revert to 20 since Alby only replies if limit is 20. 2026-03-17 12:04:10 -04:00
Vitor Pamplona 3764cd6d7f missing imports 2026-03-17 11:51:02 -04:00
Vitor Pamplona e66e5e28c1 Merge branch 'main' into claude/auto-load-transactions-scroll-KC8of 2026-03-17 11:48:21 -04:00