Commit Graph
1116 Commits
Author SHA1 Message Date
Barry DeenandGitHub 872fce1d93 Merge pull request #447 from NielLiesmons/main
Chat UI/UX proposal
2026-04-12 12:50:58 -04:00
Barry Deen adb45541a0 chore: remove junk files and add to gitignore
Remove accidentally committed .kotlin/errors/ log and .vscode/ config
files. Add both directories to .gitignore to prevent future commits.
2026-04-12 12:46:44 -04:00
Barry DeenandGitHub e7a6986bf0 Merge pull request #445 from fiatjaf/no-note1
stop producing useless deprecated "note1" codes
2026-04-11 12:31:14 -04:00
Niel Liesmons eec8dd2ad3 - Better Chat Actions Modal
- Conistent UI in all Chats: DMs and Groups
2026-04-10 12:21:26 +02:00
Niel Liesmons f37032d1d0 Group chat Ui improvements:
- Added Actions modal for one-click access to all actions
- Tweaked the top bar and bottom bars
- Made it bubbles
2026-04-09 22:10:48 +02:00
fiatjaf dc24b43f0e run ktlint after every change. 2026-04-09 13:26:55 -03:00
fiatjaf 798e746ec8 stop producing useless deprecated "note1" codes. 2026-04-09 11:37:30 -03:00
Barry DeenandGitHub 32f973f814 Merge pull request #444 from fiatjaf/autoprefix-naddr
also autoprefix naddr1 codes
2026-04-08 18:47:40 -04:00
fiatjaf 3da826f612 also autoprefix naddr1 codes. 2026-04-08 19:38:22 -03:00
Barry DeenandGitHub db6aead115 Merge pull request #443 from barrydeen/fix/focus-requester-crash
fix: catch FocusRequester not initialized crash
2026-04-08 12:36:50 -04:00
Barry Deen 1d56c1204e fix: catch FocusRequester not initialized crash
Guard all LaunchedEffect { requestFocus() } calls against the race
where the FocusRequester node is not yet attached — particularly in
Scaffold subcomposition (SearchScreen) and dialog content.

Reported on HONOR DNY-NX9, Android 36.
2026-04-08 12:36:22 -04:00
Barry DeenandGitHub eb3cd609cd Merge pull request #442 from barrydeen/fix/reply-count-lru-eviction
fix: reply count lost after LRU cache eviction
2026-04-08 11:31:09 -04:00
Barry Deen 8b3915090d fix: reply count lost after LRU cache eviction
countedReplyIds was a ConcurrentHashMap that never evicted, while
replyCounts was an LruCache. When replyCounts evicted an entry, the
permanent dedup set prevented re-counting on re-fetch. Align
countedReplyIds with the same LruCache pattern used by
countedReactionIds and countedZapIds so both evict together.

Bump to 0.17.5 (71).
2026-04-08 11:29:42 -04:00
Barry DeenandGitHub a8dbe9daa3 Merge pull request #441 from barrydeen/feat/emoji-frequency-sorting
feat: sort emoji picker by usage frequency
2026-04-08 10:45:55 -04:00
Barry DeenandClaude Opus 4.6 b881925f4c feat: sort emoji picker by usage frequency
Track emoji usage counts in SharedPreferences and sort the reaction
picker by most-used first. Both unicode and custom image emojis are
included in the unified sorted list, so frequently used custom emojis
appear before less-used unicode ones.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 10:44:55 -04:00
Barry DeenandGitHub 87c5603fd0 Merge pull request #440 from barrydeen/feat/inline-header-action-icons
Inline action icons in chat message headers
2026-04-08 10:10:22 -04:00
Barry Deen 651ccb5154 feat: inline action icons in chat message headers
Move reply/react/zap icons into the username/timestamp header row
so they're always visible without tapping. Removes the tap-to-reveal
action bar and its 5s auto-dismiss timer. Zero extra vertical space.
2026-04-08 10:09:03 -04:00
Barry DeenandGitHub 84f2b3d42f Merge pull request #438 from barrydeen/fix/blocked-users-quoted-notes-and-list-names
Fix blocked users, notifications, chat UX, and live stream toggle
2026-04-07 16:47:59 -04:00
Barry DeenandClaude Opus 4.6 538b4ad9ab chore: bump version to 0.17.4 (70)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:47:19 -04:00
Barry DeenandClaude Opus 4.6 050e0ce603 feat: tap-to-show action bar and colored usernames in chat rooms
Hide reply/react/zap action bar behind a tap gesture with 5s auto-dismiss
to reduce visual clutter in group and live stream chats. Assign each chat
member a deterministic color based on their pubkey for easier distinction,
keeping the user's own name in the theme primary color.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:47:19 -04:00
Barry DeenandGitHub 4b13a94586 Merge pull request #437 from barrydeen/fix/blocked-users-quoted-notes-and-list-names
Fix notifications, blocked user quotes, list names, and live stream toggle
2026-04-07 16:31:40 -04:00
Barry Deen 1d8f28ca9c feat: add toggle to hide live streams from feed
Adds a "Hide live streams" switch in Interface settings under the
Media section, with translations for all 10 supported locales.
2026-04-07 16:29:57 -04:00
Barry Deen 9226129512 fix: distinguish quote notes from replies in notification effects
Quotes with a "q" tag were incorrectly triggering the reply animation.
Also respect notification filter settings for reply/DM tab animations.
2026-04-07 16:29:44 -04:00
Barry DeenandGitHub 7d4d93e8af Merge pull request #436 from barrydeen/fix/blocked-users-quoted-notes-and-list-names
fix: blocked user quoted notes + NIP-51 list name fallback
2026-04-07 16:13:08 -04:00
Barry DeenandClaude Opus 4.6 1f40c58914 fix: hide blocked users' notes when referenced or quoted
getEvent() and findAddressableEvent() served events from blocked pubkeys
without checking the mute list. Quoted/embedded notes from blocked users
were visible because getEvent() reloaded purged events from ObjectBox
persistence. Add block checks to both methods and to seedFromObjectBox().

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:12:08 -04:00
Barry DeenandClaude Opus 4.6 8669460bfc fix: support "name" tag fallback for NIP-51 list names
Some clients use "name" instead of "title" for relay sets, follow sets,
bookmark sets, and interest sets. Fall back to "name" when "title" is
absent before using the d-tag identifier.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:12:06 -04:00
Barry DeenandGitHub 8f8fea61ba Merge pull request #435 from barrydeen/fix/status-update-after-resume
fix: status update after resume + misc improvements
2026-04-07 16:00:31 -04:00
Barry DeenandClaude Opus 4.6 106c5ab8f8 feat: notification sound filtering, muted user profiles, article nostr embeds
- Only play notification sounds for enabled notification types (reactions, reposts, mentions, votes)
- Fetch and display profile pictures/names for muted users on the safety screen
- Render nostr entity references (nevent, nprofile, naddr) as rich cards in article view

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:00:01 -04:00
Barry DeenandGitHub d59cf28f01 Merge pull request #434 from barrydeen/fix/status-update-after-resume
fix: status update after resume + re-fetch emoji sets
2026-04-07 15:45:26 -04:00
Barry Deen 932927d436 fix: status update silent failure after app resume + always re-fetch emoji sets
Move the optimistic status cache update before the signer null-check so
the UI always responds, and stamp userStatusTimestamps in setUserStatus
so relay re-fetches of stale events cannot overwrite the local update.

Change emoji set fetching to always re-fetch all referenced sets instead
of only missing ones, ensuring sets are up-to-date after reconnect.
2026-04-07 15:44:58 -04:00
Barry DeenandGitHub d91d66bfce Merge pull request #433 from barrydeen/fix/portrait-video-sizing
fix: prevent portrait videos from filling entire post card
2026-04-07 15:22:51 -04:00
Barry Deen 7cdf37db62 fix: prevent portrait videos from filling entire post card
fillMaxWidth() on the video Box pinned both min and max width, preventing
aspectRatio() from narrowing portrait videos to fit within the 500dp
height cap. Wrap in a centering Box so the inner container can freely
size to the correct aspect ratio.
2026-04-07 15:22:24 -04:00
Barry DeenandGitHub 752b65334a Merge pull request #432 from dmnyc/feat/ui-polish-round-3
feat: UI polish round 3
2026-04-07 15:09:11 -04:00
The Daniel 874659abce feat: consolidate QR dialogs into tabbed profile sheet
Replace separate npub and lightning QR dialogs with a single
ProfileQrSheet bottom sheet. Nostr and Lightning tabs are swipeable,
with the Lightning tab only shown when the user has a lud16.

Removes the separate lightning address icon from the drawer header,
cleaning up the icon row to just tor, theme, and QR.
2026-04-06 18:16:36 -04:00
The Daniel 20122af237 fix: trim trailing whitespace from profile display names in mentions 2026-04-06 18:12:37 -04:00
The Daniel fcfeed3d2f feat: polish QR code dialogs with rounded corners and center overlays
- Round QR code corners (16dp) on both npub and lightning dialogs
- Use high error correction (Level H) to support center overlays
- Npub QR: show user avatar in center (wisp logo fallback)
- Lightning QR: show bolt or bitcoin icon based on user preference
- Pass avatar URL through from profile and drawer call sites
- Replace QrCode2 with simpler QrCodeScanner icon on profile screen
2026-04-06 17:53:54 -04:00
The Daniel 74b25e44c1 feat: notification stats bar as filters, bolt icon, switch contrast
- Move "24h" from stats row into title bar as "Notifications | 24h"
- Tap any stat to filter notifications to that type; tap again to
  reset. Uses atomic isolateType() to avoid empty-state flash.
- Zap icon in stats bar and filter sheet respects bolt/bitcoin toggle
- Improve off-state switch contrast with explicit thumb/track/border
  colors in the notification filter sheet
2026-04-06 17:53:54 -04:00
The Daniel 1784c33ec7 feat: add separator line at top of bottom navigation bar
Thin 0.5dp divider above the nav bar to visually distinguish it
from the content area, especially in themes where both share the
same surface color.
2026-04-06 17:53:54 -04:00
The Daniel ecc2720fcd fix: reset theme and UI preferences on full logout
Add reset() to InterfacePreferences that clears accent color, theme,
dark mode, large text, bolt icon, balance hidden, and new notes button
preferences. Called when the last account logs out so the splash
screen returns to default appearance.
2026-04-06 17:53:54 -04:00
Barry DeenandGitHub cbb1f23fbb Merge pull request #431 from barrydeen/fix/signer-login-navigation
fix: resolve signer login not advancing past auth screen
2026-04-05 14:59:30 -04:00
Barry Deen fdbe4a5b5e chore: bump version to 0.17.3 (69) 2026-04-05 14:59:01 -04:00
Barry Deen c3ae3f31d1 fix: resolve signer login not advancing past auth screen
The navigateSafe() guard requires RESUMED lifecycle state, but
ActivityResultLauncher callbacks fire during STARTED. Defer the
onAuthenticated call via LaunchedEffect so navigation runs after
the composable is fully resumed.
2026-04-05 14:58:57 -04:00
Barry DeenandGitHub 370c61b025 Merge pull request #430 from barrydeen/chore/bump-version-0.17.2
chore: bump version to 0.17.2
2026-04-05 14:42:06 -04:00
Barry DeenandClaude Opus 4.6 002c5e3855 chore: bump version to 0.17.2 (68)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 14:41:42 -04:00
Barry DeenandGitHub ba41ed5964 Merge pull request #429 from barrydeen/feat/fullscreen-video-wake-lock-media-controls
feat: keep screen awake and show media controls for video
2026-04-05 14:38:36 -04:00
Barry DeenandClaude Opus 4.6 77148d127f feat: keep screen awake during fullscreen video and show media controls
Prevent the device from sleeping during fullscreen video playback with
FLAG_KEEP_SCREEN_ON. Add a MediaSessionService so Android shows media
controls in the notification shade and lock screen when the app is
backgrounded, covering both fullscreen and PiP video modes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 14:38:07 -04:00
Barry DeenandGitHub 7648e5a5b8 Merge pull request #428 from barrydeen/fix/fullscreen-video-rotation
fix: prevent fullscreen video from exiting on device rotation
2026-04-05 14:21:54 -04:00
Barry DeenandClaude Opus 4.6 9fccf262ce fix: prevent fullscreen video from exiting on device rotation
Fullscreen video state was stored in per-item remember state inside
LazyColumn items (RichContent, GalleryCard). On rotation the
LazyColumn can dispose items, losing that state and dismissing the
Dialog. Hoist the state into a FullScreenVideoState singleton
observed at the Navigation level where it survives recomposition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 14:21:23 -04:00
Barry DeenandGitHub 94bc05f500 Merge pull request #427 from barrydeen/fix/video-overlay-aspect-ratio
fix: video overlay not respecting video proportions
2026-04-05 14:11:25 -04:00
Barry Deen 4328187431 fix: move aspect ratio constraint to parent Box in video overlay
The play button overlay in InlineVideoPlayerWithFullscreen used
fillMaxSize on the parent Box which had no aspect ratio constraint,
causing the overlay to not respect video proportions. Moved heightIn
and aspectRatio from the AndroidView to the outer Box so both the
video and overlay share the same correctly-proportioned container.
2026-04-05 14:10:44 -04:00