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.
- Add Following/Global feed tabs to Books page with sticky tab bar
- Add KindInfoButton linking to Bookstr (bookstr.xyz) for content creation
- Add text truncation with 'Read more' fade (300px max-height, matching NoteCard)
- Include kind 1111 book comments in the feed with 'commented' badge
- Comments on books navigate to the book page instead of event detail
- Add Reviews tab on book detail pages (/i/isbn:*) alongside Comments
- Add review submission form with 5-star rating, spoiler warnings, and edit support
- Add 'Write Review' button in book page action bar and Reviews tab
- Support useFollowList for follows-tab scoped book queries
Replace the static OpenLibrary trending books list with a live social
feed of book-related Nostr events. The feed queries kind 31985 (book
reviews/ratings) and kind 1 posts tagged #bookstr or referencing ISBNs,
following the Bookstr NIP-XX protocol.
New files:
- src/lib/bookstr.ts: protocol constants, event parsing, ISBN extraction
- src/hooks/useBookFeed.ts: infinite scroll feed of book events
- src/hooks/useBookDetails.ts: OpenLibrary book metadata by ISBN
- src/components/BookFeedItem.tsx: feed item with inline book card,
star ratings, spoiler guards, and full social actions