Add useEffect to keep the me param field in sync with the active
account pubkey. Clears on logout, updates on account switch. Skips
updates while a scroll is actively running to avoid mid-execution changes.
Closes#265
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract shared useEventActions hook so EventMenu and EventContextMenu
share a single set of hook subscriptions instead of duplicating them.
Wrap callbacks in useCallback and memoize KindRenderer/DetailKindRenderer
to reduce unnecessary re-renders in event feeds.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace hand-rolled ~350-entry emoji list with unicode-emoji-json (~1,900 emojis) and emojilib
keywords for richer search matching. Move EmojiSearchService to a singleton with Dexie-backed
caching for instant availability on startup. Add recency+frequency emoji usage tracking shared
across the emoji picker and editor autocomplete.
- Use AGGREGATOR_RELAYS as fallback for follows without kind:10002,
not the user's personal relays. Personal inbox/write relays were
being assigned as outbox for hundreds of unknown follows, inflating
counts and sending unnecessary queries to niche relays.
- Per-relay REQ badges now show assigned count (from reasoning) as
the primary number, with unassigned users shown dimmed as +N.
Tooltips show the full breakdown.
- Switch to useStableRelayFilterMap for structural comparison.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stabilizes relay filter map references using isFilterEqual per relay
instead of JSON.stringify. Avoids serialization overhead for large
filter maps with many relays and pubkeys.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Skip duplicate events in setEventsMap (return prev if event.id exists)
- Only create new relayStates Map on actual state transitions (waiting→receiving),
not on every event — counter increments applied in-place
- Don't add unknown relays to the state map (skip defensive init)
- Cap streaming eventsMap at 2000 with 25% batch eviction of oldest events
- Decouple relay filter map from subscription lifecycle: store in ref,
only tear down subscriptions when the relay SET changes (not filter content)
- Use useStableRelayFilterMap for structural comparison instead of JSON.stringify
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extend relay filter chunking to route #p tags to inbox/read relays,
matching the existing outbox/write routing for authors. Remove debug
console.log statements across the codebase while preserving error-level
logging. Delete unused logger utility. Expand test coverage for all
chunking scenarios.