Commit Graph

14 Commits

Author SHA1 Message Date
Alex Gleason 29fd0c9a0f Remove unused exports and dead code
Aggressive cleanup of 359 exports across 153 files identified as
having zero importers outside their declaring module:

- 105 symbols deleted entirely (no internal uses either)
- 254 symbols un-exported (still referenced file-locally; dropped the
  `export` keyword to shrink the public surface)
- ~70 cascade cleanups of locals that became dead once their sole
  consumer was removed

Notable shrinkage:
- src/hooks/useShakespeare.ts: 626 \u2192 22 lines (unwired AI chat surface;
  only the ChatMessage type is consumed)
- src/hooks/useTrending.ts: only useEventStats survives; trending feed
  hooks were never wired up
- src/hooks/useTrustedCountryStats.ts: dead type re-exports removed
- src/lib/bitcoin.ts: PSBT helpers \u2014 unused wallet feature scaffolding
- src/lib/communityUtils.ts: unused NIP-72 moderation helpers
- src/lib/extraKinds.ts, src/lib/colorUtils.ts: unused helpers
- src/lib/logger.ts: bare debug/info/warn/error exports dropped;
  consumers use the `logger` object
- src/lib/aiChatSystemPrompt.ts: trimmed to the
  DEFAULT_SYSTEM_PROMPT_TEMPLATE constant
- src/components/music/MusicTrackRow.tsx: dead row component removed;
  only the skeleton is consumed

src/hooks/useNostr.ts (intentional decoy) and src/i18n.ts
(side-effect import) were preserved per their respective contracts.
2026-05-23 20:56:43 -05:00
Chad Curtis edf9f77060 Default the Search Kind filter to Agora content only
Search previously defaulted to 'all kinds' — every kind in the picker
(50+), which means a user typing 'bitcoin' into the search bar got a
firehose of music tracks, podcasts, bird detections, geocaches, and
every other supported NIP. The Posts tab is meant to surface Agora
content; the long-tail kinds belong behind an explicit opt-in.

Introduce 'agora' as a new sentinel value for the Kind filter that
expands to AGORA_PRESET_KIND_VALUES (Campaigns, Pledges, Communities,
Posts, Articles, Events, Polls, Photos, Videos). Make it the default
in DEFAULT_FILTERS, teach parseKindFilter to resolve it, and render
both 'Agora content' and 'All kinds' as top-level selectable rows in
the KindPicker (with the existing Agora-curated quick-list still
appearing as individual selectable items below).

The active-filter chip summary suppresses a chip when the default
'agora' is in effect, surfaces 'All kinds' as a chip when the user
explicitly broadens the search, and continues to show individual kind
labels for everything else.
2026-05-21 23:02:57 -05:00
filemon e3412fac46 Merge branch 'main' into feat-blobbi 2026-03-24 12:20:40 -03:00
filemon 163712471c Improve Blobbi UI mobile responsiveness and add compact coin formatting
- Add formatCompactNumber utility for compact coin display (1.2K, 15.4K, 1.2M)
- Fix BlobbiActionInventoryModal (medicine items) layout for mobile
- Fix BlobbiBottomBar to prevent overflow on narrow screens
- Fix BlobbiInventoryModal item cards for mobile
- Fix BlobbiMissionsModal horizontal scroll and layout issues
- Fix DailyMissionsPanel and TasksPanel for mobile
- Fix BlobbiShopModal and related dialogs for mobile
- Apply compact number formatting to all coin displays
2026-03-23 17:07:16 -03:00
Lemon 2b8b7a1750 Cleanup: remove dead code, hoist styles, adopt PageHeader across remaining pages 2026-03-22 23:36:40 -07:00
Alex Gleason 2850405664 Redesign profile tab editor: multi-kind selection, author scope toggle, remove unused filters
Simplify the ProfileTabEditModal to only show Search Query, Author Scope
(Me/Contacts/Global), and a multi-select Kind picker with checkboxes and
chips. Remove Media, Platform, and Language fields that were not useful
for profile tabs.

Extract parseKindFilter utility to handle comma-separated kind values
across all consumers (Feed, ProfilePage, SearchPage).
2026-03-06 00:18:16 -06:00
Chad Curtis 780271f3c1 Fix sticky headers to use top-mobile-bar pattern
- Change STICKY_HEADER_CLASS to use 'top-mobile-bar sidebar:top-0'
- Matches the pattern used in Feed and NotificationsPage
- On mobile: sticky tabs position below the MobileTopBar (accounting for safe area)
- On desktop: sticky tabs position at top-0 (no top bar on desktop)
- Fixes issue where safe-area-top created unwanted space above tabs
2026-02-19 08:03:08 -06:00
Chad Curtis 40b1c1c182 Add safe-area-top to sticky headers
- Update STICKY_HEADER_CLASS constant to include safe-area-top
- Fixes sticky tabs in Search and Settings pages on mobile
- Ensures sticky headers respect device notches and status bars
- Feed and NotificationsPage already use top-mobile-bar which includes safe area
2026-02-19 07:58:45 -06:00
Chad Curtis 8fc7dff792 Fix mobile APK issues: sticky headers and video playback
- Make headers sticky on all screen sizes (not just desktop)
- Add sticky positioning to settings tabs
- Add webkit-playsinline and x-webkit-airplay attributes for better mobile video support
2026-02-19 07:52:59 -06:00
shakespeare.diy 02014b3dc4 Fix favicon display issues: use DDG service and reduce background opacity
- Switched from Google favicon service to DuckDuckGo's service
- DuckDuckGo returns 404 for missing favicons instead of default globe icon
- Reduced background opacity from bg-muted/50 to bg-white/5 for nearly transparent look
- Moved getNip05Domain function into Nip05Badge component for better encapsulation
- Removed unused utility functions from lib/utils.ts

Fixes:
- No more default globe icons showing for domains without favicons
- Much more subtle/transparent background that doesn't look "quite" visible

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 01:36:25 -06:00
shakespeare.diy 7d0b45f0f8 Add NIP-05 domain favicon display in posts
- Created utility functions getNip05Domain() and getDomainFavicon() in lib/utils.ts
- Updated NoteCard component to show domain favicon after NIP-05 identifier
- Updated PostDetailPage to display favicons in all NIP-05 displays
- Updated NotificationsPage to include favicons in ReferencedPostCard and FullNoteCard
- Uses Google's favicon service for reliable favicon retrieval
- Favicons are displayed as 16x16px (size-4) inline images with lazy loading

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 01:32:31 -06:00
shakespeare.diy 8532d5a45e Make mobile top bar slightly taller (h-10→h-12) and unstick page headers on mobile
- MobileTopBar: bump height from h-10 (40px) to h-12 (48px)
- Page headers (STICKY_HEADER_CLASS): only sticky on desktop (sidebar:sticky sidebar:top-0), scroll naturally on mobile
- Updated inline sticky classes in Feed.tsx and PostDetailPage.tsx to match

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 04:03:04 -06:00
shakespeare.diy d4f5b786a1 Always show mobile top nav bar on every page
- Removed hideMobileTopBar prop from MainLayout entirely
- Added STICKY_HEADER_CLASS constant in utils for consistent mobile-aware
  sticky positioning (top-10 on mobile, top-0 on desktop)
- Updated all pages to use the shared constant: Search, KindFeed (Vines),
  Hashtag, Wallet, Settings, Placeholder, NotFound, Bookmarks,
  Notifications, and Profile
- Back arrows hidden on desktop where sidebar provides navigation

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-17 18:38:53 -06:00
shakespeare.diy 98ff1e09e0 New project created with Shakespeare
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 16:54:01 -06:00