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>
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>
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>
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>
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>
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>
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
Extract the paginated relay download into a reusable INostrClient
extension (NostrClientDownloadFromRelayExt.kt) in the Quartz
commonMain accessories package. Uses Channel-based event collection
for KMP compatibility (no JVM-only atomics).
EventSyncViewModel.downloadFromRelay now delegates to the Quartz
extension, keeping the ViewModel thin.
Add NostrClientDownloadFromRelayTest integration test against
wss://nos.lol with Filter(kinds = [MetadataEvent.KIND], limit = 10)
to verify paginated downloads return correctly-typed events.
https://claude.ai/code/session_01U8qF9mK4UBvXsXP1zNMXfX
- Convert filteredTransactions from cold Flow to StateFlow via stateIn()
to ensure reliable state updates with collectAsState()
- Add 30s timeout to NWC requests (fetchBalance, fetchTransactions,
loadMoreTransactions) so loading state resets if wallet doesn't respond
https://claude.ai/code/session_01CdNY7qYDRHJr1jhAFvVgzj
Replace aspectRatio modifier with BoxWithConstraints that manually
calculates height from aspect ratio and clamps it to the max height
constraint. Video now stays within its allocated space in the card,
so controls are accessible and content below is not overlapped.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>