Commit Graph

1707 Commits

Author SHA1 Message Date
Mary Kate Fain e65485a44b Rename Feed settings to Home Feed, clarify labels, conditionally show community
- Rename 'Feed' to 'Home Feed' in settings hub, page header, and SEO title
- Rename 'Notes' section to 'Basic Home Feed Options'
- Rename 'Other Stuff' to 'Show More Content Types in Home Feed'
- Rename 'Reposts' to 'Reposted Notes', 'Generic Reposts' to 'Reposted Other Content'
- Only show community domain management when community feed toggle is on
2026-03-07 18:43:00 -06:00
Mary Kate Fain 36db39584f Remove collapsible behavior from non-Advanced settings sections
Convert 10 collapsible sections to always-visible static sections with
plain subheaders across Feed, Content, Network, Profile, and Lists pages.
The 'Advanced' section on Profile and all sections within AdvancedSettings
remain collapsible.
2026-03-07 18:37:29 -06:00
Mary Kate Fain 398e3983d4 Move Lists to sidebar, remove Codex ornaments, add pencil edit indicators
- Remove 'Codex of Configuration' heading, ornament dividers, and bottom ornament from settings hub
- Remove Lists from settings menu; add as sidebar item with Scroll icon at /lists
- Reverse the /lists <-> /settings/lists redirect for backward compatibility
- Add persistent pencil icon badges on avatar and banner in ProfileCard edit mode
- Pencil badges fade on hover to reveal the full camera overlay
2026-03-07 18:28:46 -06:00
Mary Kate Fain 26082d6a61 Clean up settings UI: replace complex images with icons, remove duplicate headers
- Replace IntroImage PNG illustrations with simple Lucide icons on settings hub menu
- Remove redundant intro blocks (image + second heading + description) from all settings sub-pages
- Enrich page header descriptions with educational Nostr context
- Remove inner IntroImages and duplicate headings from ContentSettings collapsible sections
- Keep settings hub personality (Codex of Configuration, ornaments, magic sigil easter egg)

Fixes: https://gitlab.com/soapbox-pub/ditto/-/issues/83
2026-03-07 18:24:18 -06:00
Mary Kate Fain 1468e67253 Fix color picker popover clipped by dialog overflow
Move overflow-y-auto from DialogContent to an inner wrapper div so the
color picker popover (portaled into the dialog) is not clipped by the
overflow boundary. The dialog container uses overflow-visible while the
inner div handles scrolling.
2026-03-07 17:08:07 -06:00
Mary Kate Fain df51a6c7a8 Fix font picker and color picker scroll inside theme edit dialogs
Portal popover content into the Dialog DOM tree via PortalContainerProvider
so Radix Dialog's RemoveScroll doesn't block scroll events on the font
picker dropdown list. Fixes both ThemeSelector builder and ProfilePage
edit profile theme dialogs.
2026-03-07 17:03:33 -06:00
Mary Kate Fain b045fb53b9 Fix color pickers and font selector rendering behind theme edit dialog 2026-03-07 16:57:31 -06:00
Alex Gleason 41d2a31177 Remove content type selection step from onboarding
All content types are already enabled by default, so the 'What interests
you?' step was redundant. The onboarding flow now goes directly from
theme selection to content safety.
2026-03-07 15:37:49 -06:00
Alex Gleason a38d63a1f7 Limit onboarding theme grid to 9 items
Add a limit prop to ThemeGrid and pass limit={9} from the onboarding
ThemeStep so users see a clean 3×3 grid instead of 28+ themes.
2026-03-07 15:30:46 -06:00
Alex Gleason 23bf62a38f Fix onboarding modal unable to scroll to top of theme grid
Replace items-center/justify-center on the scroll container with
my-auto/mx-auto on the child. The flex centering was pushing the top
of the content above the scroll boundary when the theme grid exceeded
the viewport height, making it unreachable.
2026-03-07 15:27:34 -06:00
Mary Kate 655892d992 Merge branch 'fix/feed-tab-persistence' into 'main'
Persist active feed tab in sessionStorage across navigation

Closes #82

See merge request soapbox-pub/ditto!57
2026-03-07 20:45:55 +00:00
Mary Kate Fain 228d81a75a Merge origin/main and resolve conflict in Feed.tsx 2026-03-07 14:37:59 -06:00
Mary Kate Fain 6f24fefa0c Remove unused useState imports from EventsFeedPage and PhotosFeedPage 2026-03-07 14:32:20 -06:00
Alex Gleason bbcd9df17e Fix ESLint errors: remove unused Button import and config variable in Feed 2026-03-07 14:31:25 -06:00
Alex Gleason 12118b5f2a Only show glitched logo easter egg for logged-in users 2026-03-07 14:26:12 -06:00
Alex Gleason 99842593ab Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-07 14:22:16 -06:00
Mary Kate Fain 7eb6bbb768 Scope feed tab persistence per feed page
Extract useFeedTab hook that persists the active Follows/Global tab
in sessionStorage with a per-feed key (e.g. ditto:feed-tab:home,
ditto:feed-tab:vines). Each feed page remembers its own tab
independently — switching to Global on the home feed no longer
affects Vines, Videos, Photos, etc.

Applied to Feed.tsx (home), KindFeedPage, BooksPage, VideosFeedPage,
VinesFeedPage, PhotosFeedPage, and EventsFeedPage.
2026-03-07 14:19:18 -06:00
Alex Gleason 63e8e9b7ec Add #m tag filter for webxdc on logged-out homepage
Kind 1063 is generic file metadata, so webxdc events require filtering
by #m=application/x-webxdc. Add extraFilters support to useInfiniteHotFeed
and pass webxdc as a separate filter object with the MIME constraint.
2026-03-07 14:15:40 -06:00
Alex Gleason eeaf6fa2f9 Narrow logged-out homepage to themes, magic decks, color moments, webxdc, treasures, and emoji packs 2026-03-07 14:13:03 -06:00
Alex Gleason ec9e265e55 Replace kind 1 with curated otherstuff kinds on logged-out homepage
Switch the logged-out hot feed from useInfiniteSortedPosts (kind 1 only)
to useInfiniteHotFeed with a curated list of visually rich content types:
photos, videos, articles, vines, music, themes, polls, calendar events,
color moments, follow packs, and emoji packs.
2026-03-07 14:09:17 -06:00
Mary Kate Fain 7a5dedae56 Persist active feed tab in sessionStorage across navigation
The active feed tab (Follows/Global/Communities/saved feeds) was stored
in useState, so it was destroyed when navigating to a post and reset
to 'follows' on return. Now the selected tab is saved to sessionStorage
on change and restored on mount, surviving navigation while still
resetting when the browser tab is closed.

Validates stored tab against core tabs and saved feed IDs to prevent
restoring a deleted feed.

Closes #82
2026-03-07 14:07:12 -06:00
Mary Kate 5433eca08d Merge branch 'fix/search-results-flicker' into 'main'
Fix search results flickering between old and new queries

Closes #72

See merge request soapbox-pub/ditto!56
2026-03-07 20:04:19 +00:00
Mary Kate Fain 15df41d59f Fix search results flickering between old and new queries
When searching from the sidebar while already on /search, the
SearchPage component stayed mounted and its internal state (allEvents,
isLoading) from the previous search would briefly flash before the
new query's effect could clear it.

Fix: wrap SearchPage with a keyed component that uses ?q as the React
key. When the query changes, React unmounts the old instance entirely
and mounts a fresh one — all state initializes cleanly from the new
URL with no transitional renders showing stale data.

Closes #72
2026-03-07 14:01:27 -06:00
Alex Gleason 885425ec34 Add landing hero for logged-out homepage with theme showcase and trending tags
Replace the plain 'Join' CTA banner with an engaging first-impression
experience: logo + tagline, interactive theme swatches that transform
the page on click, and a trending hashtags strip — all above the
existing hot feed. Staggered fade-in animations add polish.
2026-03-07 13:58:39 -06:00
Mary Kate Fain b933abaa2c Fix stale events flashing in useStreamPosts on query change
The useEffect that clears allEvents runs *after* render, so the posts
useMemo would still filter/return old events during the first render
with the new query. Track the current query in a ref and return an
empty array from the useMemo when the query has just changed, preventing
stale results from ever reaching the UI.
2026-03-07 13:50:04 -06:00
Mary Kate Fain 9df5747312 Fix search results flickering between old and new queries
When navigating from the sidebar search, the URL param (?q=) updates
immediately but the local searchQuery state lagged one render cycle
behind (synced via useEffect). During that gap, the old query's
results would briefly flash before being cleared.

Fix: derive an effectiveQuery directly from the URL search params and
use it for all data fetching and conditional rendering. The local
searchQuery state is kept only as the controlled input value.

Closes #72
2026-03-07 13:46:18 -06:00
Mary Kate 048a53c411 Merge branch 'feat/share-to-socials' into 'main'
Add native share button to posts, post detail, and profiles on mobile

Closes #39

See merge request soapbox-pub/ditto!55
2026-03-07 19:42:07 +00:00
Mary Kate Fain be1771e4e5 Only show Share button on mobile
On desktop the URL bar and 'Copy Link' in the More menu already
cover sharing. The native share sheet is the unique value on mobile,
so hide the button at the sidebar breakpoint (900px+).
2026-03-07 13:38:38 -06:00
Mary Kate Fain a45c5c6647 Add Share button to posts, post detail, and profiles
Add a dedicated Share button using the Web Share API with clipboard
fallback across three locations:

- NoteCard action bar (between Zap and More)
- PostDetailPage action bars (both compact and expanded views)
- ProfilePage header (between More and Zap buttons)

On mobile and supported desktop browsers, tapping Share opens the
native OS share sheet with all installed apps (Twitter, WhatsApp,
etc.). On unsupported browsers, falls back to copying the link to
clipboard with a toast confirmation.

Closes #39
2026-03-07 13:29:08 -06:00
Mary Kate f9940cd195 Merge branch 'fix/share-theme-help-text' into 'main'
Improve help text on share theme toggle for clarity

Closes #80

See merge request soapbox-pub/ditto!54
2026-03-07 19:26:54 +00:00
Alex Gleason a29ecc5b20 Merge branch 'opencode/1772908553' 2026-03-07 13:23:28 -06:00
Mary Kate Fain c1e9db848a Remove 'page' from profile description text 2026-03-07 13:13:02 -06:00
Mary Kate Fain ffd78e428e Add gap between theme sync label and toggle switch 2026-03-07 13:05:15 -06:00
Mary Kate Fain c435b0de94 Improve help text on share theme toggle for clarity
Rename toggle to 'Sync app theme with your profile theme' and update
description to explain what disabling it actually does, so users
understand it unsyncs the two themes rather than just stopping posts.
Consistent wording across both ThemeSelector and ThemesPage.

Closes #80
2026-03-07 13:01:13 -06:00
Mary Kate 4ebe893cde Merge branch 'fix/addressable-event-comment-preview' into 'main'
Add context preview for comments on addressable events (vines, music, etc.)

Closes #75

See merge request soapbox-pub/ditto!53
2026-03-07 18:56:11 +00:00
Mary Kate c2378e4dff Merge branch 'fix/copy-theme-background-not-applied' into 'main'
Fix copied theme background not applying until page refresh

Closes #71

See merge request soapbox-pub/ditto!52
2026-03-07 18:52:34 +00:00
Mary Kate Fain 73a048aeae Use sidebar icons for addressable event preview cards
Look up the content type's icon from CONTENT_KIND_ICONS (same icons
used in the sidebar) and display it in both the label row and as the
fallback thumbnail placeholder.
2026-03-07 12:50:45 -06:00
Mary Kate Fain b401a21cbc Add context preview for comments on addressable events (vines, music, etc.)
When viewing a kind 1111 comment that replies to an addressable event
like a vine (34236), music, or article, the detail page now shows a
rich preview banner with thumbnail, kind label, title, and author —
matching the existing pattern for URL, profile, and community previews.

Works generically for all addressable event kinds by looking up the
kind label from EXTRA_KINDS and extracting thumbnails from image/imeta
tags.

Closes #75
2026-03-07 12:46:11 -06:00
Alex Gleason 9b0b546645 Remove dead CommentsSection component and rewrite nostr-comments skill
Delete src/components/comments/ (CommentsSection, CommentForm, Comment)
which were never imported by any page or component. Rewrite the
nostr-comments SKILL.md to document the actual commenting architecture:
ComposeBox, ThreadedReplyList, useComments, usePostComment, and the
dual NIP-10/NIP-22 protocol system used across PostDetailPage,
ExternalContentPage, and other pages.
2026-03-07 12:44:02 -06:00
Mary Kate 585dc502cb Merge branch 'fix/profile-tab-form-labels' into 'main'
Improve profile custom tab builder form labels and field order

Closes #68

See merge request soapbox-pub/ditto!51
2026-03-07 18:33:55 +00:00
Mary Kate Fain d6224b26b3 Fix copied theme background not applying until page refresh
The profile page effect cleanup was restoring the background using a
stale previousBgCss value captured when the effect first ran, before
'Copy Theme' was clicked. Now the cleanup always rebuilds background
CSS from ownThemeRef.current (like colors already do), so it reflects
any theme changes made while on the profile page.

Closes #71
2026-03-07 12:32:00 -06:00
Mary Kate Fain b2ad06ae0a Fix Kinds popover not opening inside profile tab dialog
Portal the popover into the DialogContent element using
PortalContainerProvider so Radix pointer-event blocking
doesn't prevent the dropdown from opening.

Closes #68
2026-03-07 12:25:07 -06:00
Mary Kate Fain 77cd2de47a Improve profile custom tab builder form labels and field order
Rename 'Search query' to 'Filter by Word' and 'Kinds' to 'Content Kinds'
for clarity. Reorder fields to: Tab name, Content Kinds, Filter by Word,
Authors — placing the higher-order Kind filter before the word filter.

Closes #68
2026-03-07 12:18:43 -06:00
Mary Kate eccbc1d7c7 Merge branch 'fix/country-feed-sort-order' into 'main'
Fix country feeds showing posts oldest-first instead of newest-first

Closes #64

See merge request soapbox-pub/ditto!50
2026-03-07 18:18:16 +00:00
Mary Kate Fain f25f2925ba Fix country feeds showing posts oldest-first instead of newest-first
Country feeds (iso3166) are social feeds and should display in
reverse-chronological order. URL and ISBN comment threads keep
the existing oldest-first conversation order.

Closes #64
2026-03-07 12:13:50 -06:00
Mary Kate a63a1fb165 Merge branch 'fix/books-feed-back-arrow' into 'main'
Add back arrow to Books feed header on mobile

Closes #79

See merge request soapbox-pub/ditto!49
2026-03-07 18:13:25 +00:00
Mary Kate Fain 2b6fddeab9 Add back arrow to Books feed header
Closes #79
2026-03-07 12:06:57 -06:00
Alex Gleason 2e6d328335 Remove mobile bottom navigation bar
Delete MobileBottomNav component and all related code including the
noBottomSpacer layout option, bottom nav height spacer, and CSS
calculations that accounted for the bottom nav height.
2026-03-07 11:57:17 -06:00
Alex Gleason 60e3ead6ed Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-07 11:52:48 -06:00
Alex Gleason bed84c6285 Fix iOS Safari auto-zoom on input focus by ensuring 16px minimum font size on mobile 2026-03-07 11:42:54 -06:00