- Created WalletSettings component with wallet management UI
- Added "Wallet" tab to SettingsPage
- Removed Wallet nav item from LeftSidebar and MobileDrawer
- Moved Bookmarks above Settings in both LeftSidebar and MobileDrawer
- Removed /wallet route from AppRouter
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Create ChestIcon component using the chest SVG from the treasures project
- Replace all MapPin usages for Treasures in sidebar, feed settings, treasures page, and router
- Remove unused @lucide/lab dependency (chest SVG is inlined)
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Add kind 39089 (starter packs) to EXTRA_KINDS with sidebar/feed toggles
- Create FollowPackContent component for NoteCard rendering with title,
description, member count badge, cover image, and avatar stack preview
- Add kind dispatch in NoteCard for 39089 and 30000
- Add /packs route using KindFeedPage
- Add PartyPopper icon in sidebar and feed settings
- Default showPacks to true so it appears in sidebar
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Updated ProfileSearchDropdown with `enableTextSearch` prop that shows
a combined dropdown with a "Search for ..." text option plus people results
- Pressing Enter without a profile selected navigates to /search?q=...
- Selecting a profile from autocomplete still navigates to their profile
- Updated SearchPage to read `q` param from URL and sync search state
- Changed sidebar search placeholder from "Search people..." to "Search..."
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Widen left sidebar from 280px to 300px to match Ditto
- Add max-w-[1240px] and mx-auto to center the three-column layout
- Adjust compose box textarea top padding (py-2 → pt-3 pb-2) for better vertical alignment of placeholder text with avatar
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- PollContent (kind 1068 / NIP-88): Shows question, options with
selectable vote UI, tallied results with percentage bars, poll type
badge (single/multi), expiry status. Fetches kind 1018 vote events,
deduplicates per pubkey, and allows voting when logged in.
- GeocacheContent (kind 37516 / NIP-GC): Shows cache name, type badge,
size badge, D/T difficulty pips (1-5), description, image, and
ROT13-decoded hint toggle. Supports verified cache indicator.
- ColorMomentContent (kind 3367 / Espy NIP): Renders color palettes
with all 6 layout modes (horizontal, vertical, grid, star,
checkerboard, diagonalStripes). Emoji overlay with adaptive
light/dark text based on palette luminance. Click-to-copy hex
swatches. Name display above palette.
- NoteCard now dispatches to the correct content component based on
event.kind (1, 1068, 3367, 34236, 37516).
- Replaced VinesPage/useStreamVines with generic KindFeedPage/useStreamKind.
All kind-specific routes (/vines, /polls, /treasures, /colors) use
the same generic streaming page parameterized by kind number.
- Centralized extra-kind definitions in lib/extraKinds.ts. All feeds
(home, search, profile, hashtag) respect feed settings for which
extra kinds to include.
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Add FeedSettings to AppConfig for persisting user preferences
- Create Settings > Feed tab with two sections:
- Sidebar Links: toggle visibility of Vines, Polls, Treasures, Colors in nav
- Feed Content: include these kinds in Follows/Global feeds
- Update LeftSidebar and MobileBottomNav to conditionally render nav items
- Update useFeed hook to include extra kinds (1068 Polls, 3367 Colors,
34236 Vines, 37516 Treasures) based on feed settings
- Add routes for /polls, /treasures, /colors (placeholder pages)
- Vines enabled in sidebar by default; all others off by default
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Added onSignupClick prop to LoginDialog interface
- Added "New here? Create account" link in LoginDialog
- Link appears after extension login button (if available) or with other options
- Matches borkstr's login dialog pattern for better UX
- Users can easily switch between login and signup flows
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Changed Join button onClick handler to open LoginDialog instead of SignupDialog
- Follows the same pattern as borkstr project where Join opens the login modal
- Users can still access signup through the login modal's "More Options" section
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Moved early return to after all hooks to comply with Rules of Hooks
- Changed handleLogout to async/await pattern for better error handling
- Prevents "Rendered more hooks than during the previous render" error
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Show current theme name and icon in dropdown trigger button
- Fix light theme not working (update class removal from 'mew' to 'dark')
- Remove opacity from logo in pink theme (keep full visibility)
- Logo now only uses opacity in light theme (70%)
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Use opacity (60% pink, 70% light) for MewLogo instead of color filters
- Change Mew theme icon to Cat, Black theme icon to Moon
- Convert theme selector to proper dropdown menu with chevron indicator
- Add DropdownMenuLabel and separator for better UX
- Maintain theme icons: Cat (Mew), Sun (Light), Moon (Black), Heart (Pink)
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Rename "mew" theme to "dark" (Mew=dark, Light=light remain)
- Make pink theme more vibrant with increased saturation and adjusted hues
- Convert theme selector to dropdown menu with icons (Moon, Sun, Zap, Heart)
- Add CSS filters to MewLogo for pink and light themes with smooth transitions
- Keep Black and Pink themes as requested
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Create useSearchProfiles hook that queries wss://relay.ditto.pub
with NIP-50 search filter for kind 0 (profile) events
- Create ProfileSearchDropdown component with debounced input,
keyboard navigation, and animated dropdown of matching profiles
- Update SearchPage to use the new profile autocomplete
- Update LeftSidebar search bar to use the profile autocomplete
- Selecting a profile navigates to their npub profile page
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Created useBookmarks hook for NIP-51 kind 10003 bookmark list management
(query, add, remove bookmarks)
- Created BookmarksPage with login prompt, loading skeletons, and empty state
- Replaced "More" nav item with "Bookmarks" in LeftSidebar
- Added bookmark toggle button to NoteCard action bar (replaces three-dot menu)
- Removed /more route from AppRouter
- Bookmarks are stored per NIP-51 as replaceable kind 10003 events
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
The sidebar now either shows fully (280px with labels, search, user
info) or is completely replaced by the mobile UI. The icon-only 72px
strip is eliminated — below 900px the mobile top bar, bottom nav,
drawer, and FAB take over entirely.
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>