Commit Graph

1252 Commits

Author SHA1 Message Date
Chad Curtis ea824fb6ca Fix notification toggle disabled on Android: treat native platform as always supported
The settings page checked for the browser Notification API to determine
support, but Android WebView doesn't expose that API. The Java foreground
service handles notifications natively, so the check was wrong — it showed
'not supported' and disabled the toggle on every APK install.
2026-03-01 07:15:03 +00:00
Chad Curtis c389ab98df Add audio to post detail, volume slider, and theme-aware audio visualizer
- Render audio in PostDetailPage (was only rendering in feed NoteCard)
- Add volume slider to VideoPlayer and AudioVisualizer (hover to reveal)
- Move shared volume state and handlers into usePlayerControls
- Replace hardcoded purple canvas colors with hsl(var(--primary))
- Replace bg-black with bg-background on AudioVisualizer container
2026-03-01 00:36:32 -06:00
Chad Curtis 4557326847 Fix ternary used as statement in AudioVisualizer togglePlay 2026-02-28 23:45:26 -06:00
Chad Curtis e1e5bbe696 Render audio uploads as video-style visualizer with avatar and sinewave
- Add AudioVisualizer component: mirrors VideoPlayer chrome exactly (same overlay controls, progress bar, hide-on-idle, scroll-pause) with a canvas sinewave and author avatar in the centre
- Wire audio into NoteCard (kind 1 notes), FileMetadataContent (kind 1063), and ComposeBox preview
- Extract shared utilities: formatTime, usePlayerControls hook, and mediaUrls (regexes + mimeFromExt) to eliminate duplication across VideoPlayer, AudioVisualizer, NoteCard, NoteContent, ComposeBox, and EmbeddedNote
- Fix ComposeBox: audio URLs now get correct imeta MIME tags and are excluded from link-embed detection
2026-02-28 23:35:17 -06:00
Chad Curtis 3c574d4194 Remove section header icons from App Relays, Your Relays, and Blossom Servers 2026-02-28 23:13:03 -06:00
Chad Curtis ca96093b65 Redesign NotificationSettings to match Advanced page style 2026-02-28 23:11:53 -06:00
Chad Curtis a010b53d27 Remove redundant 'Show theme updates in feed' toggle from Theme Preferences 2026-02-28 23:10:53 -06:00
Chad Curtis 9d4251dc8c Convert Theme Preferences to collapsible section, remove bottom border 2026-02-28 23:10:07 -06:00
Chad Curtis 6b49957180 Use EXTRA_KIND_ICONS as single source of truth in ContentSettings
Remove the local ICONS map from ContentSettings.tsx and replace it with
EXTRA_KIND_ICONS from extraKindIcons.ts. Add feed-kind icons (posts,
comments, reposts, generic-reposts) to the shared registry so all icon
references resolve from one place.
2026-02-28 23:08:50 -06:00
Chad Curtis 44cc217de9 Treat single image with short caption as a single image post 2026-02-28 23:01:21 -06:00
Chad Curtis fc8e6491e8 Fix initialContent prefill in ComposeBox via mount guard instead of useEffect 2026-02-28 21:33:21 -06:00
Chad Curtis 930a64d965 Set compose modal title to 'Share to feed' when sharing external content 2026-02-28 21:27:09 -06:00
Chad Curtis 38c7e00ca9 Share button on /i/ page opens compose modal pre-filled with URL 2026-02-28 21:27:09 -06:00
Chad Curtis 1bcfdc1457 Revert external content share back to kind 1 with i tag
Kind 16 requires an e tag pointing to a Nostr event ID, which external
content doesn't have. Kind 1 with an i tag is the correct approach.
2026-02-28 21:27:09 -06:00
Chad Curtis 1f18b978ce Fix external content repost to use kind 16 instead of kind 1 2026-02-28 21:27:09 -06:00
Chad Curtis 31a543ce0c Add react/share action bar to external content (/i/) pages
Implements NIP-25 kind 17 reactions and kind 1 shares for external
content identifiers (URLs, ISBNs, countries) on the /i/ page.
2026-02-28 21:27:09 -06:00
Alex Gleason d27464d6fc Add GIF keyboard with Tenor API to compose box and DM chat
Introduces a GIF picker powered by Tenor's API with search and trending
GIFs. The picker is integrated into both the post compose toolbar and
the DM chat input area, alongside a new emoji picker for DMs.
2026-02-28 21:13:59 -06:00
Chad Curtis eaa337de01 Fix missing followsFeedShowReplies in FeedSettings literals 2026-02-28 20:59:56 -06:00
Chad Curtis 7bf9419b48 Remove sticky + background from /i/ page headers 2026-02-28 20:58:48 -06:00
Chad Curtis 708dd23fc4 Add follows feed reply filter and fix feedSettings deep-merge for new keys 2026-02-28 20:27:03 -06:00
Alex Gleason dfee354158 Merge branch 'main' of gitlab.com:soapbox-pub/ditto-mew 2026-02-28 20:25:01 -06:00
Chad Curtis e81c7c183c Fix mention e-tags incorrectly treated as reply markers per NIP-10 2026-02-28 20:17:17 -06:00
Alex Gleason 45e76e7dd8 Add Spotify and Reddit embeds to LinkEmbed
- SpotifyEmbed: iframe to open.spotify.com/embed/ with fixed heights
  per content type (track/episode: 152px, album/playlist/show: 352px)
- RedditEmbed: iframe to embed.reddit.com with resize.embed postMessage
- Supports track, album, playlist, episode, show for Spotify
- Supports /r/subreddit/comments/id/ URLs for Reddit
- Both with rounded corners and discuss bar
2026-02-28 20:14:38 -06:00
Alex Gleason 44ace938a3 Fix Bluesky embed height by clearing minHeight after resize 2026-02-28 20:06:07 -06:00
Alex Gleason 2bd5b92a3c Fix Bluesky embed height by removing embedId check on resize message
The source window check is sufficient to identify the iframe.
The id match was failing, preventing the iframe from resizing.
2026-02-28 19:54:22 -06:00
Alex Gleason 0fc0ff1875 Simplify UrlContentHeader to always use LinkEmbed
Removes 123 lines of bespoke YouTube/generic link preview rendering
from UrlContentHeader. All URL types on /i/ pages now go through
LinkEmbed, so Bluesky and Mastodon embeds work automatically.
2026-02-28 19:49:07 -06:00
Alex Gleason 7d2db70f29 Add Discuss bar below embed iframes linking to /i/:uri page
Shows favicon, domain link, and Discuss button below YouTube, Twitter,
Bluesky, and Mastodon embeds. Disabled on the /i/ page itself where
you're already viewing the discussion. LinkPreview keeps its own
built-in Discuss button.
2026-02-28 19:45:53 -06:00
Alex Gleason 9c06c61527 Add rounded corners to Mastodon embed iframe 2026-02-28 19:42:00 -06:00
Alex Gleason 254486b4fa Add Bluesky and Mastodon post embeds to LinkEmbed
- BlueskyEmbed: iframe to embed.bsky.app with handle→DID resolution
- MastodonEmbed: iframe to {instance}/@user/id/embed with setHeight resize
- Known Mastodon servers list (317 instances) for URL detection
- embedLabel() helper for consistent platform labels in headers
- Both embeds auto-resize via postMessage, no third-party scripts
2026-02-28 19:37:38 -06:00
Alex Gleason 21b465ff3e Add unified LinkEmbed component, consolidate URL detection and embed rendering
- Create LinkEmbed that dispatches to YouTubeEmbed, TweetEmbed, or LinkPreview based on URL
- Centralize extractYouTubeId and extractTweetId in LinkEmbed module
- Simplify NoteContent: merge link-preview and youtube-embed token types into link-embed
- Tweet URLs in posts now render as embedded tweets automatically
- Remove duplicate extractYouTubeId from NoteContent and ExternalContentHeader
2026-02-28 19:01:47 -06:00
Alex Gleason 55338669d0 Auto-resize tweet iframe via twttr.private.resize postMessage 2026-02-28 18:50:22 -06:00
Alex Gleason fcd32f1bd4 Replace Twitter widgets.js with direct iframe embed, remove CSP exception 2026-02-28 18:46:25 -06:00
Alex Gleason d834851788 Add embedded tweet display for Twitter/X URLs on external content pages 2026-02-28 18:42:46 -06:00
Alex Gleason 8cafccf18e Merge branch 'main' of gitlab.com:soapbox-pub/ditto-mew 2026-02-28 18:37:39 -06:00
Mary Kate Fain 6598a0363a Fix lint errors: remove unused useEffect import, prefix unused schema
- ThemeSelector.tsx: remove unused useEffect import
- useBookInfo.ts: prefix OpenLibraryBookSchema with _ (only used for type inference)
2026-02-28 18:30:47 -06:00
Alex Gleason 10035f80bc Make reaction rows clickable to view NIP-22 comments on that reaction
Each reaction in the interactions modal now navigates to the kind 7
event's detail page (via nevent), where users can leave NIP-22 kind
1111 comments on the reaction using E/e tags. Added eventId to
ReactionEntry and a dedicated ReactionRow component with a chevron
indicating it's navigable.
2026-02-28 18:23:25 -06:00
Mary Kate Fain 5b83812d1a Shrink-wrap solid background to nav items instead of filling entire scroll area
Move bg-background from the flex-1 nav container (which stretches to
fill all remaining height) to an inner div that wraps just the nav
items and More button, so the solid background stops right after the
last item and the background image shows in the space below.
2026-02-28 18:20:47 -06:00
Mary Kate Fain 6d7f1c7da5 Use solid bg-background for mobile drawer sections over background image
Swap bg-background/85 to bg-background for all sections in the mobile
drawer (user row, account switcher, nav items, theme picker, logged-out
state) to ensure full legibility over busy background images.
2026-02-28 18:20:47 -06:00
Mary Kate Fain 612abb1f9d Fix background image not showing: use inline backgroundColor to override cva bg-background
The sheet component's cva base class includes bg-background which was
winning the Tailwind specificity battle over bg-transparent. Using
inline style backgroundColor: 'transparent' guarantees it overrides
the class-based background color, letting the background-image show.
2026-02-28 18:20:47 -06:00
Mary Kate Fain 5069a92642 Apply theme background image directly on mobile drawer content
Instead of making the drawer transparent (which just shows the dark
overlay), render the background image on the SheetContent itself via
inline styles. When a background image is active, sections get
bg-background/85 rounded containers for legibility. When there's no
background image, the drawer renders normally as before.
2026-02-28 18:20:47 -06:00
Mary Kate Fain d07fac2c98 Show theme background image in mobile drawer nav menu
Make the mobile hamburger menu transparent so the user's theme
background image shows through, matching the desktop sidebar pattern.
Individual sections (user row, account switcher, nav items, theme
picker) get bg-background/85 rounded containers for legibility.
2026-02-28 18:20:47 -06:00
Alex Gleason 7afe8efa21 Add profile preview at top of comment threads on person profiles
When viewing a kind 1111 comment thread where the root is a person
(kind 0 profile), show a compact profile preview card with avatar,
name, and NIP-05 at the top of the page, similar to how external
content previews are shown for URLs/books/countries.
2026-02-28 18:14:28 -06:00
Alex Gleason 5475144a7e Merge branch 'opencode/1772318974' 2026-02-28 17:26:43 -06:00
Alex Gleason 42a7522f23 Display country flag and name for iso3166 identifiers in CommentContext
Shows 'Commenting on 🇮🇷 Iran' instead of 'iso3166:IR'.
For subdivisions shows 'Commenting on 🇺🇸 United States (TX)'.
2026-02-28 17:24:49 -06:00
Alex Gleason 0ce79be2df Merge branch 'opencode/1772318974' 2026-02-28 17:21:20 -06:00
Alex Gleason ce08e068cb Merge branch 'opencode/1772318980' 2026-02-28 17:20:17 -06:00
Alex Gleason 92af295476 Show 'Commenting on @Name' for wall comments instead of 'a post' 2026-02-28 17:20:05 -06:00
Mary Kate Fain 103020ea37 Make inactive sidebar nav items full opacity text-foreground 2026-02-28 17:19:32 -06:00
Mary Kate Fain a7fd1f1fe9 Make sidebar nav text darker and update Retro Pop background color
- Change inactive sidebar nav items from text-muted-foreground to
  text-foreground/70 for better readability
- Update Retro Pop preset background color to #d9d6ff (244 100% 92%)
2026-02-28 17:18:14 -06:00
Alex Gleason 2cd4124d65 Enlarge emoji-only posts with robust detection for ZWJ, flags, keycaps, skin tones, and NIP-30 custom emojis 2026-02-28 17:17:40 -06:00