Commit Graph

19 Commits

Author SHA1 Message Date
Alex Gleason 9da62f46cf Change wall compose placeholder to 'Write on {user}'s wall' 2026-03-02 14:16:02 -06:00
Alex Gleason 64810d3acc Fix post composer dialog to autofocus textarea instead of X button 2026-03-02 10:17:27 -06:00
Mary Kate Fain 081d890e41 Fix reply modal overflowing viewport on long posts
Make the embedded parent post scrollable and cap the dialog at 85vh
so the compose area and submit button always remain visible.
2026-03-01 12:56:20 -06:00
Chad Curtis 71d08aadd1 Show profile card in reply modal and correct title for kind 0 wall posts
ReplyComposeModal now renders ProfilePreview instead of raw JSON content
when the reply target is a kind 0 event, and titles the modal 'Comment on
profile' rather than 'Reply to post'.
2026-03-01 04:05:26 -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
Alex Gleason a03045ec85 Add Wall tab to user profiles with NIP-22 comments on kind 0
Wall posts are kind 1111 comments targeting the profile owner's kind 0
event (A tag: 0:pubkey:). Comments are filtered by the target user's
kind 3 follow list to show only posts from people they follow. Uses
the same ComposeBox/ReplyComposeModal pattern as /i/:uri routes.

If the profile owner has no follow list, an empty state is shown.
2026-02-28 17:10:06 -06:00
Alex Gleason 930e4dc006 Use FAB + full compose dialog for comments on external content pages
Widen ComposeBox.replyTo and ReplyComposeModal.event to accept URL,
enabling the standard post composer for NIP-22 comments on external
content. Replace the inline CommentForm on /i/ pages with a FAB that
opens ReplyComposeModal, giving users the full compose experience
with file uploads, emoji picker, and content warnings.
2026-02-27 23:45:27 -06:00
Alex Gleason 439ab94ea3 Merge branch 'main' of gitlab.com:soapbox-pub/ditto-mew 2026-02-23 20:19:22 -06:00
Alex Gleason d3d44689d6 Verify NIP-05 identifiers before displaying them
Add useNip05Verify hook that uses Nostrify's NIP05.lookup() to verify
that a claimed NIP-05 identifier resolves to the correct pubkey via
.well-known/nostr.json. Update Nip05Badge and all raw nip05 display
sites to suppress display when verification fails or is pending.
2026-02-23 19:14:34 -06:00
Mary Kate Fain 379282ecea Fix horizontal overflow on posts with links when reposting
- Add overflow-hidden to NoteCard article elements in both normal and
  threaded layouts to clip content that exceeds card width
- Add overflow-hidden to NoteContent root div to prevent link preview
  cards and embedded content from pushing beyond container bounds
- Strip .xdc URLs in EmbeddedNote content preview (was missing from
  the media URL regex, causing raw long URLs to render in quote embeds)
- Add overflow-hidden to EmbedContentPreview paragraph for defense
  against long unbreakable strings
- Use disableEmbeds on NoteContent inside ReplyComposeModal's embedded
  post preview so URLs render as plain links instead of full preview
  cards that overflow the clamped container
- Add attachment indicator chips to EmbeddedNote (images, videos, apps,
  links) so stripped media URLs still have a visible presence
2026-02-23 16:46:49 -06:00
Chad Curtis bca82dcdc7 Fix mention autocomplete not clickable inside compose modal
Render dropdown inline with absolute positioning instead of portaling
to document.body, which placed it behind the modal overlay. Also set
overflow-visible on DialogContent so the dropdown isn't clipped.
2026-02-22 16:56:39 -06:00
shakespeare.diy f43132b656 Remove border between modal title and content
- Removed border-b from modal header for cleaner look

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 06:53:14 -06:00
shakespeare.diy d3d6d56e49 Move preview toggle to top of compose modal
- Moved Edit/Preview toggle from toolbar to modal header
- Added controlled preview mode to ComposeBox component
- Toggle now appears next to close button in modal header
- Added border-bottom to header for visual separation
- ComposeBox can be controlled externally or use internal state
- Fixes layout issues and improves UX in modal

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 06:52:45 -06:00
shakespeare.diy ba43340e8c Fix quote posts being treated as replies
- When quotedEvent is present, don't pass event as replyTo in ComposeBox
- This ensures quote posts are published as kind 1 with q tags, not replies
- Repost (kind 6) was already working correctly

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 17:55:15 -06:00
shakespeare.diy 3f19edd7a1 Implement quote posts and removable embeds in compose box
- Added quotedEvent prop to ComposeBox for quote post support
- Auto-detect and display embeds: nevent, note, naddr, and link previews
- Add remove button (X) to clear any embed from compose
- Quote posts open ReplyComposeModal with quoted event embedded
- Updated RepostMenu to open quote dialog instead of toast
- Added NIP-18 quote tags (q tag) when publishing quotes
- Embeds shown at bottom of compose with EmbeddedNote/EmbeddedNaddr/LinkPreview
- Support for manually typed nostr: URIs in compose content
- Invalidate event stats after quote to update counts

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 17:39:18 -06:00
shakespeare.diy 9a375f3d3d Unify new post and reply into a single ComposeModal
ReplyComposeModal now handles both cases: when an event is passed it's a
reply (shows embedded post preview), when no event is passed it's a new
post. FloatingComposeButton reuses ReplyComposeModal instead of having
its own duplicate dialog.

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 22:24:30 -06:00
shakespeare.diy 42446fe0c7 Move X close button to the right side on all compose/reply/interaction modals
Updated ReplyComposeModal, FloatingComposeButton, and InteractionsModal
to place the title on the left and the dismiss X button on the right,
matching the standard dialog layout pattern.

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 22:22:50 -06:00
shakespeare.diy 7cdbf4a6e6 Add reply compose modal with embedded original post preview
- Created ReplyComposeModal component that shows the original post embedded
  in a compact card above the compose area, matching the reference design
- Updated ComposeBox to accept replyTo, forceExpanded, and hideAvatar props
- ComposeBox now generates proper NIP-10 reply tags (root/reply markers,
  p tags for thread participants)
- Wired reply buttons in NoteCard and PostDetailPage to open the modal
- Reply success invalidates both feed and replies query caches

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 21:35:26 -06:00