gitextract_dgfwre9y/ ├── .dockerignore ├── .drone.yml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ ├── docker.yml │ ├── nsite.yml │ └── release.yml ├── .gitignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── AGENTS.md ├── Dockerfile ├── Dockerfile.prebuilt ├── LICENSE ├── README.md ├── biome.json ├── crowdin.yml ├── docker/ │ └── nginx.conf ├── functions/ │ ├── _middleware.ts │ └── tsconfig.json ├── maintainers.yaml ├── package.json ├── packages/ │ ├── app/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── babel.config.json │ │ ├── bun-env.d.ts │ │ ├── bunfig.toml │ │ ├── config/ │ │ │ ├── README.md │ │ │ ├── default.json │ │ │ ├── iris.json │ │ │ ├── meku.json │ │ │ ├── nostr.json │ │ │ ├── phoenix.json │ │ │ └── soloco.json │ │ ├── custom.d.ts │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ ├── iris/ │ │ │ │ ├── .well-known/ │ │ │ │ │ └── assetlinks.json │ │ │ │ ├── _headers │ │ │ │ ├── manifest.json │ │ │ │ └── robots.txt │ │ │ ├── nostr/ │ │ │ │ └── _headers │ │ │ ├── phoenix/ │ │ │ │ ├── .well-known/ │ │ │ │ │ ├── apple-app-site-association │ │ │ │ │ └── assetlinks.json │ │ │ │ ├── _headers │ │ │ │ ├── manifest.json │ │ │ │ └── robots.txt │ │ │ └── snort/ │ │ │ ├── .well-known/ │ │ │ │ ├── apple-app-site-association │ │ │ │ └── assetlinks.json │ │ │ ├── _headers │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── Agent/ │ │ │ │ └── system-prompt.ts │ │ │ ├── Cache/ │ │ │ │ ├── CommunityLeadersStore.tsx │ │ │ │ ├── GiftWrapCache.ts │ │ │ │ ├── ProfileWorkerCache.ts │ │ │ │ ├── RefreshFeedCache.ts │ │ │ │ ├── RelaysWorkerCache.ts │ │ │ │ ├── UserFollowsWorker.ts │ │ │ │ ├── index.ts │ │ │ │ └── worker-cached.ts │ │ │ ├── Components/ │ │ │ │ ├── AskSnort/ │ │ │ │ │ └── AskSnortInput.tsx │ │ │ │ ├── Button/ │ │ │ │ │ ├── AsyncButton.tsx │ │ │ │ │ ├── AsyncIcon.tsx │ │ │ │ │ ├── BackButton.tsx │ │ │ │ │ ├── CloseButton.tsx │ │ │ │ │ ├── IconButton.tsx │ │ │ │ │ ├── LogoutButton.tsx │ │ │ │ │ └── NavLink.tsx │ │ │ │ ├── Collapsed.tsx │ │ │ │ ├── CommunityLeaders/ │ │ │ │ │ ├── Award.tsx │ │ │ │ │ └── LeaderBadge.tsx │ │ │ │ ├── Copy/ │ │ │ │ │ └── Copy.tsx │ │ │ │ ├── DvmSelector.tsx │ │ │ │ ├── Embed/ │ │ │ │ │ ├── AppleMusicEmbed.tsx │ │ │ │ │ ├── BlossomBlob.tsx │ │ │ │ │ ├── CashuNuts.tsx │ │ │ │ │ ├── GenericPlayer.tsx │ │ │ │ │ ├── Hashtag.tsx │ │ │ │ │ ├── HyperText.tsx │ │ │ │ │ ├── Invoice.tsx │ │ │ │ │ ├── LinkPreview.tsx │ │ │ │ │ ├── MagnetLink.tsx │ │ │ │ │ ├── MediaElement.tsx │ │ │ │ │ ├── Mention.tsx │ │ │ │ │ ├── MixCloudEmbed.tsx │ │ │ │ │ ├── NostrLink.tsx │ │ │ │ │ ├── NostrNestsEmbed.tsx │ │ │ │ │ ├── PubkeyList.tsx │ │ │ │ │ ├── SoundCloudEmded.tsx │ │ │ │ │ ├── SpotifyEmbed.tsx │ │ │ │ │ ├── TidalEmbed.tsx │ │ │ │ │ ├── TwitchEmbed.tsx │ │ │ │ │ ├── UrlStatusCheck.tsx │ │ │ │ │ ├── WavlakeEmbed.tsx │ │ │ │ │ ├── YoutubeEmbed.tsx │ │ │ │ │ ├── ZapstrEmbed.css │ │ │ │ │ └── ZapstrEmbed.tsx │ │ │ │ ├── ErrorBoundary.tsx │ │ │ │ ├── ErrorOrOffline.tsx │ │ │ │ ├── Event/ │ │ │ │ │ ├── Application.tsx │ │ │ │ │ ├── Create/ │ │ │ │ │ │ ├── NoteCreator.tsx │ │ │ │ │ │ ├── NoteCreatorButton.tsx │ │ │ │ │ │ ├── OkResponseRow.tsx │ │ │ │ │ │ └── util.ts │ │ │ │ │ ├── DVMJobFeedback.tsx │ │ │ │ │ ├── EventComponent.tsx │ │ │ │ │ ├── FileUpload.tsx │ │ │ │ │ ├── HiddenNote.tsx │ │ │ │ │ ├── LoadMore.tsx │ │ │ │ │ ├── LongFormText.tsx │ │ │ │ │ ├── Markdown.tsx │ │ │ │ │ ├── NostrFileHeader.tsx │ │ │ │ │ ├── Note/ │ │ │ │ │ │ ├── ClientFingerprinting.tsx │ │ │ │ │ │ ├── ClientTag.tsx │ │ │ │ │ │ ├── Note.tsx │ │ │ │ │ │ ├── NoteAppHandler.tsx │ │ │ │ │ │ ├── NoteContent.tsx │ │ │ │ │ │ ├── NoteContext.tsx │ │ │ │ │ │ ├── NoteContextMenu.tsx │ │ │ │ │ │ ├── NoteFooter/ │ │ │ │ │ │ │ ├── AsyncFooterIcon.tsx │ │ │ │ │ │ │ ├── FooterZapButton.tsx │ │ │ │ │ │ │ ├── LikeButton.tsx │ │ │ │ │ │ │ ├── NoteFooter.tsx │ │ │ │ │ │ │ ├── PowIcon.tsx │ │ │ │ │ │ │ ├── ReplyButton.tsx │ │ │ │ │ │ │ ├── RepostButton.tsx │ │ │ │ │ │ │ └── ZapperQueue.tsx │ │ │ │ │ │ ├── NoteHeader.tsx │ │ │ │ │ │ ├── NoteQuote.tsx │ │ │ │ │ │ ├── NoteText.tsx │ │ │ │ │ │ ├── NoteTime.tsx │ │ │ │ │ │ ├── ReactionsModal.tsx │ │ │ │ │ │ ├── ReplyTag.tsx │ │ │ │ │ │ ├── TranslationInfo.tsx │ │ │ │ │ │ └── types.tsx │ │ │ │ │ ├── NoteReaction.tsx │ │ │ │ │ ├── Poll.tsx │ │ │ │ │ ├── Reveal.tsx │ │ │ │ │ ├── RevealMedia.tsx │ │ │ │ │ ├── Thread/ │ │ │ │ │ │ ├── Subthread.tsx │ │ │ │ │ │ ├── Thread.tsx │ │ │ │ │ │ ├── ThreadRoute.tsx │ │ │ │ │ │ └── util.ts │ │ │ │ │ ├── Zap.tsx │ │ │ │ │ ├── ZapButton.tsx │ │ │ │ │ ├── ZapGoal.tsx │ │ │ │ │ └── ZapsSummary.tsx │ │ │ │ ├── Feed/ │ │ │ │ │ ├── ImageGridItem.tsx │ │ │ │ │ ├── LoadMore.tsx │ │ │ │ │ ├── RootTabItems.tsx │ │ │ │ │ ├── RootTabs.tsx │ │ │ │ │ ├── Timeline.tsx │ │ │ │ │ ├── TimelineChunk.tsx │ │ │ │ │ ├── TimelineFollows.tsx │ │ │ │ │ ├── TimelineFragment.tsx │ │ │ │ │ ├── TimelineRenderer.tsx │ │ │ │ │ └── UsersFeed.tsx │ │ │ │ ├── Icons/ │ │ │ │ │ ├── Alby.tsx │ │ │ │ │ ├── BlueWallet.tsx │ │ │ │ │ ├── Cashu.tsx │ │ │ │ │ ├── ECash.tsx │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ ├── NWC.tsx │ │ │ │ │ ├── Nostrich.tsx │ │ │ │ │ ├── Spinner.tsx │ │ │ │ │ └── Toggle.tsx │ │ │ │ ├── IntlProvider/ │ │ │ │ │ ├── IntlProvider.tsx │ │ │ │ │ ├── IntlProviderUtils.tsx │ │ │ │ │ ├── langStore.tsx │ │ │ │ │ └── useLocale.tsx │ │ │ │ ├── Invite.tsx │ │ │ │ ├── LiveStream/ │ │ │ │ │ ├── LiveEvent.tsx │ │ │ │ │ ├── LiveStreams.tsx │ │ │ │ │ ├── VU.tsx │ │ │ │ │ ├── livekit.tsx │ │ │ │ │ └── nests-participants.tsx │ │ │ │ ├── Modal/ │ │ │ │ │ └── Modal.tsx │ │ │ │ ├── Nip5Service.tsx │ │ │ │ ├── Offline.tsx │ │ │ │ ├── PageSpinner.tsx │ │ │ │ ├── PinPrompt/ │ │ │ │ │ └── PinPrompt.tsx │ │ │ │ ├── Progress/ │ │ │ │ │ └── Progress.tsx │ │ │ │ ├── ProxyImg.tsx │ │ │ │ ├── QrCode.tsx │ │ │ │ ├── ReBroadcaster.tsx │ │ │ │ ├── Relay/ │ │ │ │ │ ├── Relay.tsx │ │ │ │ │ ├── RelaysMetadata.tsx │ │ │ │ │ ├── name.tsx │ │ │ │ │ ├── paid.tsx │ │ │ │ │ ├── permissions.tsx │ │ │ │ │ ├── software.tsx │ │ │ │ │ ├── status-label.tsx │ │ │ │ │ ├── uptime-label.tsx │ │ │ │ │ └── uptime.tsx │ │ │ │ ├── Review.tsx │ │ │ │ ├── RightWidgets/ │ │ │ │ │ ├── articles.tsx │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── invite-friends.tsx │ │ │ │ │ └── mini-stream.tsx │ │ │ │ ├── ScrollToTop.tsx │ │ │ │ ├── SearchBox/ │ │ │ │ │ └── SearchBox.tsx │ │ │ │ ├── Spotlight/ │ │ │ │ │ ├── SpotlightMedia.tsx │ │ │ │ │ ├── SpotlightThreadModal.tsx │ │ │ │ │ └── context.tsx │ │ │ │ ├── SuggestedProfiles.tsx │ │ │ │ ├── TabSelectors/ │ │ │ │ │ └── TabSelectors.tsx │ │ │ │ ├── Tasks/ │ │ │ │ │ ├── BackupKey.tsx │ │ │ │ │ ├── DonateTask.tsx │ │ │ │ │ ├── FollowMorePeople.tsx │ │ │ │ │ ├── Nip5Task.tsx │ │ │ │ │ ├── NoticeZapPool.tsx │ │ │ │ │ ├── PendingChangesTask.tsx │ │ │ │ │ ├── RenewSubscription.tsx │ │ │ │ │ ├── TaskList.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Text/ │ │ │ │ │ ├── DisableMedia.tsx │ │ │ │ │ ├── HighlightedText.tsx │ │ │ │ │ ├── Text.tsx │ │ │ │ │ └── const.ts │ │ │ │ ├── Textarea/ │ │ │ │ │ ├── Textarea.css │ │ │ │ │ └── Textarea.tsx │ │ │ │ ├── Toaster/ │ │ │ │ │ └── Toaster.tsx │ │ │ │ ├── Trending/ │ │ │ │ │ ├── ShortNote.tsx │ │ │ │ │ ├── TrendingHashtags.tsx │ │ │ │ │ ├── TrendingPosts.tsx │ │ │ │ │ └── TrendingUsers.tsx │ │ │ │ ├── Upload/ │ │ │ │ │ └── file-picker.tsx │ │ │ │ ├── User/ │ │ │ │ │ ├── AnimalName.ts │ │ │ │ │ ├── Avatar.tsx │ │ │ │ │ ├── AvatarEditor.tsx │ │ │ │ │ ├── AvatarGroup.tsx │ │ │ │ │ ├── BadgeList.tsx │ │ │ │ │ ├── Bookmarks.tsx │ │ │ │ │ ├── Debug.tsx │ │ │ │ │ ├── DisplayName.tsx │ │ │ │ │ ├── FollowButton.tsx │ │ │ │ │ ├── FollowDistanceIndicator.tsx │ │ │ │ │ ├── FollowListBase.tsx │ │ │ │ │ ├── FollowedBy.tsx │ │ │ │ │ ├── Following.tsx │ │ │ │ │ ├── FollowsYou.tsx │ │ │ │ │ ├── MuteButton.tsx │ │ │ │ │ ├── MutedList.tsx │ │ │ │ │ ├── Nip05.tsx │ │ │ │ │ ├── NoteToSelf.tsx │ │ │ │ │ ├── ProfileCard.tsx │ │ │ │ │ ├── ProfileCardWrapper.tsx │ │ │ │ │ ├── ProfileImage.tsx │ │ │ │ │ ├── ProfileLink.tsx │ │ │ │ │ ├── ProfilePreview.tsx │ │ │ │ │ ├── UserWebsiteLink.tsx │ │ │ │ │ └── Username.tsx │ │ │ │ ├── WarningNotice/ │ │ │ │ │ └── WarningNotice.tsx │ │ │ │ ├── ZapModal/ │ │ │ │ │ ├── SuccessAction.tsx │ │ │ │ │ ├── ZapModal.tsx │ │ │ │ │ ├── ZapModalInput.tsx │ │ │ │ │ ├── ZapModalInvoice.tsx │ │ │ │ │ ├── ZapModalTitle.tsx │ │ │ │ │ ├── ZapType.tsx │ │ │ │ │ └── ZapTypeSelector.tsx │ │ │ │ ├── flyout.tsx │ │ │ │ ├── json.tsx │ │ │ │ ├── kind-name.tsx │ │ │ │ ├── messages.ts │ │ │ │ ├── nip.tsx │ │ │ │ └── zap-amount.tsx │ │ │ ├── Db/ │ │ │ │ └── FuzzySearch.ts │ │ │ ├── External/ │ │ │ │ ├── NostrBand.ts │ │ │ │ ├── NostrServices.ts │ │ │ │ ├── SnortApi.ts │ │ │ │ ├── base.ts │ │ │ │ └── index.ts │ │ │ ├── Feed/ │ │ │ │ ├── ArticlesFeed.ts │ │ │ │ ├── BadgesFeed.ts │ │ │ │ ├── FollowersFeed.ts │ │ │ │ ├── FollowsFeed.ts │ │ │ │ ├── HashtagsFeed.ts │ │ │ │ ├── LoginFeed.ts │ │ │ │ ├── RelayState.ts │ │ │ │ ├── RelaysFeed.tsx │ │ │ │ ├── StatusFeed.ts │ │ │ │ ├── TimelineFeed.ts │ │ │ │ ├── WorkerRelayView.ts │ │ │ │ └── ZapsFeed.ts │ │ │ ├── Hooks/ │ │ │ │ ├── useAiAgent.ts │ │ │ │ ├── useAppHandler.ts │ │ │ │ ├── useBlindSpot.ts │ │ │ │ ├── useBlossomServers.ts │ │ │ │ ├── useCloseRelays.ts │ │ │ │ ├── useCommunityLeaders.tsx │ │ │ │ ├── useContentDiscovery.ts │ │ │ │ ├── useCopy.ts │ │ │ │ ├── useDiscoverMediaServers.ts │ │ │ │ ├── useDvmLinks.ts │ │ │ │ ├── useEventPublisher.tsx │ │ │ │ ├── useFollowControls.ts │ │ │ │ ├── useHistoryState.tsx │ │ │ │ ├── useHorizontalScroll.tsx │ │ │ │ ├── useHovering.ts │ │ │ │ ├── useImgProxy.ts │ │ │ │ ├── useKeyboardShortcut.ts │ │ │ │ ├── useLists.tsx │ │ │ │ ├── useLiveStreams.ts │ │ │ │ ├── useLoading.tsx │ │ │ │ ├── useLogin.tsx │ │ │ │ ├── useLoginHandler.tsx │ │ │ │ ├── useLoginRelays.tsx │ │ │ │ ├── useMediaServerList.ts │ │ │ │ ├── useModeration.tsx │ │ │ │ ├── usePageDimensions.tsx │ │ │ │ ├── usePreferences.ts │ │ │ │ ├── useProfileLink.ts │ │ │ │ ├── useProfileSearch.tsx │ │ │ │ ├── useRates.tsx │ │ │ │ ├── useRelays.tsx │ │ │ │ ├── useTextTransformCache.tsx │ │ │ │ ├── useTheme.tsx │ │ │ │ ├── useTimelineChunks.ts │ │ │ │ ├── useTimelineWindow.tsx │ │ │ │ ├── useTraceTimeline.tsx │ │ │ │ ├── useWindowSize.ts │ │ │ │ └── useWoT.ts │ │ │ ├── Pages/ │ │ │ │ ├── About.tsx │ │ │ │ ├── Agent/ │ │ │ │ │ └── AgentPage.tsx │ │ │ │ ├── CacheDebug.tsx │ │ │ │ ├── ComponentDebug.tsx │ │ │ │ ├── Deck/ │ │ │ │ │ ├── Articles.tsx │ │ │ │ │ ├── Columns.tsx │ │ │ │ │ └── DeckLayout.tsx │ │ │ │ ├── Discover.tsx │ │ │ │ ├── Donate/ │ │ │ │ │ ├── DonatePage.tsx │ │ │ │ │ ├── ZapPoolDonateSection.tsx │ │ │ │ │ └── const.ts │ │ │ │ ├── ErrorPage.tsx │ │ │ │ ├── FixedPage.tsx │ │ │ │ ├── FreeNostrAddressPage.tsx │ │ │ │ ├── HashTagsPage.tsx │ │ │ │ ├── HelpPage.tsx │ │ │ │ ├── Layout/ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ ├── HasNotificationsMarker.tsx │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── LogoHeader.tsx │ │ │ │ │ ├── NavSidebar.tsx │ │ │ │ │ ├── NotificationsHeader.tsx │ │ │ │ │ ├── ProfileMenu.tsx │ │ │ │ │ ├── RightColumn.tsx │ │ │ │ │ ├── WalletBalance.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ListFeedPage.tsx │ │ │ │ ├── Messages/ │ │ │ │ │ ├── ChatParticipant.tsx │ │ │ │ │ ├── DM.tsx │ │ │ │ │ ├── DmWindow.tsx │ │ │ │ │ ├── MessagesPage.tsx │ │ │ │ │ ├── NewChatWindow.tsx │ │ │ │ │ ├── UnreadCount.tsx │ │ │ │ │ └── WriteMessage.tsx │ │ │ │ ├── NostrAddressPage.tsx │ │ │ │ ├── NostrLinkHandler.tsx │ │ │ │ ├── Notifications/ │ │ │ │ │ ├── NotificationGroup.tsx │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ ├── getNotificationContext.tsx │ │ │ │ │ └── notificationContext.tsx │ │ │ │ ├── Profile/ │ │ │ │ │ ├── AvatarSection.tsx │ │ │ │ │ ├── MusicStatus.tsx │ │ │ │ │ ├── ProfileDetails.tsx │ │ │ │ │ ├── ProfilePage.tsx │ │ │ │ │ ├── ProfileTabComponents.tsx │ │ │ │ │ ├── ProfileTabSelectors.tsx │ │ │ │ │ └── ProfileTabType.tsx │ │ │ │ ├── Root/ │ │ │ │ │ ├── BlindSpots.tsx │ │ │ │ │ ├── ConversationsTab.tsx │ │ │ │ │ ├── DefaultTab.tsx │ │ │ │ │ ├── FollowSets.tsx │ │ │ │ │ ├── FollowedByFriendsTab.tsx │ │ │ │ │ ├── ForYouTab.tsx │ │ │ │ │ ├── Media.tsx │ │ │ │ │ ├── NotesTab.tsx │ │ │ │ │ ├── RelayFeedPage.tsx │ │ │ │ │ ├── RootRoutes.tsx │ │ │ │ │ ├── RootTabRoutes.tsx │ │ │ │ │ └── TagsTab.tsx │ │ │ │ ├── SearchPage.tsx │ │ │ │ ├── TopicsPage.tsx │ │ │ │ ├── ZapPool/ │ │ │ │ │ ├── ZapPool.css │ │ │ │ │ ├── ZapPool.tsx │ │ │ │ │ ├── ZapPoolPageInner.tsx │ │ │ │ │ └── ZapPoolTarget.tsx │ │ │ │ ├── messages.ts │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── discover.tsx │ │ │ │ │ ├── fixedModeration.tsx │ │ │ │ │ ├── fixedTopics.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── moderation.tsx │ │ │ │ │ ├── profile.tsx │ │ │ │ │ ├── routes.ts │ │ │ │ │ ├── sign-in.tsx │ │ │ │ │ ├── sign-up.tsx │ │ │ │ │ └── topics.tsx │ │ │ │ ├── settings/ │ │ │ │ │ ├── Accounts.tsx │ │ │ │ │ ├── Cache.tsx │ │ │ │ │ ├── Keys.css │ │ │ │ │ ├── Keys.tsx │ │ │ │ │ ├── Menu/ │ │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ │ └── SettingsMenuComponent.tsx │ │ │ │ │ ├── Moderation.tsx │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ ├── Preferences.tsx │ │ │ │ │ ├── Profile.tsx │ │ │ │ │ ├── Referrals.tsx │ │ │ │ │ ├── RelayInfo.tsx │ │ │ │ │ ├── Relays.tsx │ │ │ │ │ ├── Routes.tsx │ │ │ │ │ ├── SnortNostrAddressService.tsx │ │ │ │ │ ├── WalletSettings.tsx │ │ │ │ │ ├── handle/ │ │ │ │ │ │ ├── LNAddress.tsx │ │ │ │ │ │ ├── ListHandles.tsx │ │ │ │ │ │ ├── Manage.tsx │ │ │ │ │ │ ├── TransferHandle.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── routes.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── media-settings.tsx │ │ │ │ │ ├── messages.ts │ │ │ │ │ ├── relays/ │ │ │ │ │ │ └── discover.tsx │ │ │ │ │ ├── saveRelays.tsx │ │ │ │ │ ├── tools/ │ │ │ │ │ │ ├── follows-relay-health.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── prune-follows.tsx │ │ │ │ │ │ ├── routes.tsx │ │ │ │ │ │ └── sync-account.tsx │ │ │ │ │ └── wallet/ │ │ │ │ │ ├── Alby.tsx │ │ │ │ │ ├── LNDHub.tsx │ │ │ │ │ ├── NWC.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── routes.tsx │ │ │ │ │ └── utils.ts │ │ │ │ ├── subscribe/ │ │ │ │ │ ├── ManageSubscription.tsx │ │ │ │ │ ├── RenewSub.tsx │ │ │ │ │ ├── SubscriptionCard.tsx │ │ │ │ │ ├── index.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── utils.tsx │ │ │ │ └── wallet/ │ │ │ │ ├── index.tsx │ │ │ │ ├── price-chart.tsx │ │ │ │ ├── receive.tsx │ │ │ │ └── send.tsx │ │ │ ├── State/ │ │ │ │ └── NoteCreator.ts │ │ │ ├── Utils/ │ │ │ │ ├── Const.ts │ │ │ │ ├── Login/ │ │ │ │ │ ├── Functions.ts │ │ │ │ │ ├── LoginSession.ts │ │ │ │ │ ├── MultiAccountStore.ts │ │ │ │ │ ├── Nip7OsSigner.ts │ │ │ │ │ ├── Preferences.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── Nip05/ │ │ │ │ │ ├── ServiceProvider.ts │ │ │ │ │ └── SnortServiceProvider.ts │ │ │ │ ├── Notifications.ts │ │ │ │ ├── Number.ts │ │ │ │ ├── Subscription/ │ │ │ │ │ └── index.ts │ │ │ │ ├── Thread/ │ │ │ │ │ ├── ThreadContextWrapper.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Upload/ │ │ │ │ │ ├── blossom.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ZapPoolController.ts │ │ │ │ ├── emoji-search.ts │ │ │ │ ├── getEventMedia.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nip6.ts │ │ │ │ ├── stream.ts │ │ │ │ └── wasm.ts │ │ │ ├── Wallet/ │ │ │ │ └── index.ts │ │ │ ├── assets/ │ │ │ │ └── fonts/ │ │ │ │ └── inter.css │ │ │ ├── bench.html │ │ │ ├── benchmarks.ts │ │ │ ├── chat/ │ │ │ │ ├── index.ts │ │ │ │ └── nip17.ts │ │ │ ├── hug.json │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── lang.json │ │ │ ├── service-worker.ts │ │ │ ├── setupTests.ts │ │ │ ├── system.ts │ │ │ ├── translations/ │ │ │ │ ├── af_ZA.json │ │ │ │ ├── ar_SA.json │ │ │ │ ├── az_AZ.json │ │ │ │ ├── ca_ES.json │ │ │ │ ├── cs_CZ.json │ │ │ │ ├── da_DK.json │ │ │ │ ├── de_DE.json │ │ │ │ ├── el_GR.json │ │ │ │ ├── en.json │ │ │ │ ├── es_ES.json │ │ │ │ ├── fa_IR.json │ │ │ │ ├── fi_FI.json │ │ │ │ ├── fr_FR.json │ │ │ │ ├── he_IL.json │ │ │ │ ├── hr_HR.json │ │ │ │ ├── hu_HU.json │ │ │ │ ├── id_ID.json │ │ │ │ ├── it_IT.json │ │ │ │ ├── ja_JP.json │ │ │ │ ├── ko_KR.json │ │ │ │ ├── ms_MY.json │ │ │ │ ├── nl_NL.json │ │ │ │ ├── no_NO.json │ │ │ │ ├── pa_IN.json │ │ │ │ ├── pl_PL.json │ │ │ │ ├── pt_BR.json │ │ │ │ ├── pt_PT.json │ │ │ │ ├── ro_RO.json │ │ │ │ ├── ru_RU.json │ │ │ │ ├── sr_SP.json │ │ │ │ ├── sv_SE.json │ │ │ │ ├── sw_KE.json │ │ │ │ ├── ta_IN.json │ │ │ │ ├── th_TH.json │ │ │ │ ├── tr_TR.json │ │ │ │ ├── uk_UA.json │ │ │ │ ├── vi_VN.json │ │ │ │ ├── zh_CN.json │ │ │ │ └── zh_TW.json │ │ │ └── tz.json │ │ ├── tests/ │ │ │ ├── Utils.test.ts │ │ │ └── worker-cached.test.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── bot/ │ │ ├── README.md │ │ ├── example/ │ │ │ └── simple.ts │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── typedoc.json │ ├── shared/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── SortedMap/ │ │ │ │ ├── SortedMap.test.ts │ │ │ │ └── SortedMap.ts │ │ │ ├── cache-store.ts │ │ │ ├── const.ts │ │ │ ├── custom.d.ts │ │ │ ├── external-store.ts │ │ │ ├── feed-cache.ts │ │ │ ├── imgproxy.ts │ │ │ ├── index.ts │ │ │ ├── invoices.ts │ │ │ ├── lnurl.ts │ │ │ ├── tlv.ts │ │ │ ├── utils.ts │ │ │ └── work-queue.ts │ │ ├── tsconfig.json │ │ └── typedoc.json │ ├── system/ │ │ ├── .npmignore │ │ ├── AUDIT.md │ │ ├── README.md │ │ ├── examples/ │ │ │ └── simple.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── background-loader.ts │ │ │ ├── cache/ │ │ │ │ ├── index.ts │ │ │ │ ├── user-follows-lists.ts │ │ │ │ ├── user-metadata.ts │ │ │ │ └── user-relays.ts │ │ │ ├── cache-relay.ts │ │ │ ├── connection-cache-relay.ts │ │ │ ├── connection-pool.ts │ │ │ ├── connection-stats.ts │ │ │ ├── connection.ts │ │ │ ├── const.ts │ │ │ ├── encryption/ │ │ │ │ ├── index.ts │ │ │ │ ├── nip44.ts │ │ │ │ └── pin-encrypted.ts │ │ │ ├── event-builder.ts │ │ │ ├── event-ext.ts │ │ │ ├── event-kind.ts │ │ │ ├── event-publisher.ts │ │ │ ├── filter-cache-layer.ts │ │ │ ├── impl/ │ │ │ │ ├── nip10.ts │ │ │ │ ├── nip11.ts │ │ │ │ ├── nip18.ts │ │ │ │ ├── nip22.ts │ │ │ │ ├── nip25.ts │ │ │ │ ├── nip4.ts │ │ │ │ ├── nip44.ts │ │ │ │ ├── nip46.ts │ │ │ │ ├── nip55.ts │ │ │ │ ├── nip57.ts │ │ │ │ ├── nip7.ts │ │ │ │ ├── nip90.ts │ │ │ │ ├── nip92.ts │ │ │ │ └── nip94.ts │ │ │ ├── index.ts │ │ │ ├── negentropy/ │ │ │ │ ├── accumulator.ts │ │ │ │ ├── negentropy-flow.ts │ │ │ │ ├── negentropy.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── vector-storage.ts │ │ │ │ └── wrapped-buffer.ts │ │ │ ├── nips.ts │ │ │ ├── nostr-link.ts │ │ │ ├── nostr-system.ts │ │ │ ├── nostr.ts │ │ │ ├── note-collection.ts │ │ │ ├── outbox/ │ │ │ │ ├── index.ts │ │ │ │ ├── outbox-model.ts │ │ │ │ └── relay-loader.ts │ │ │ ├── pow-util.ts │ │ │ ├── pow-worker.ts │ │ │ ├── pow.ts │ │ │ ├── profile-cache.ts │ │ │ ├── query-manager.ts │ │ │ ├── query-optimizer/ │ │ │ │ ├── index.ts │ │ │ │ ├── request-expander.ts │ │ │ │ ├── request-merger.ts │ │ │ │ └── request-splitter.ts │ │ │ ├── query.ts │ │ │ ├── relays.ts │ │ │ ├── request-builder.ts │ │ │ ├── request-matcher.ts │ │ │ ├── request-router.ts │ │ │ ├── request-trim.ts │ │ │ ├── signer.ts │ │ │ ├── sync/ │ │ │ │ ├── diff-sync.ts │ │ │ │ ├── index.ts │ │ │ │ ├── json-in-event-sync.ts │ │ │ │ ├── range-sync.ts │ │ │ │ └── safe-sync.ts │ │ │ ├── system-base.ts │ │ │ ├── system.ts │ │ │ ├── text.ts │ │ │ ├── trace-timeline.ts │ │ │ ├── user-state.ts │ │ │ └── utils.ts │ │ ├── tests/ │ │ │ ├── background-loader.test.ts │ │ │ ├── event-ext.test.ts │ │ │ ├── feed-cache-subscribe.test.ts │ │ │ ├── negentropy.test.ts │ │ │ ├── nip10.test.ts │ │ │ ├── nip18.test.ts │ │ │ ├── node.ts │ │ │ ├── nostr-link.test.ts │ │ │ ├── note-collection-comprehensive.test.ts │ │ │ ├── note-collection.test.ts │ │ │ ├── pin-encrypted.test.ts │ │ │ ├── query-comprehensive.test.ts │ │ │ ├── query-manager-comprehensive.test.ts │ │ │ ├── query-manager-race.test.ts │ │ │ ├── query-system-edge-cases.test.ts │ │ │ ├── request-builder.test.ts │ │ │ ├── request-expander.test.ts │ │ │ ├── request-matcher.test.ts │ │ │ ├── request-merger.test.ts │ │ │ ├── request-splitter.test.ts │ │ │ ├── setupTests.ts │ │ │ ├── text.test.ts │ │ │ └── utils.test.ts │ │ ├── tsconfig.json │ │ └── typedoc.json │ ├── system-react/ │ │ ├── README.md │ │ ├── example/ │ │ │ └── example.tsx │ │ ├── package.json │ │ ├── src/ │ │ │ ├── TraceTimeline/ │ │ │ │ ├── TraceStatsView.tsx │ │ │ │ ├── TraceTimeline.css │ │ │ │ ├── TraceTimelineDetailPopup.tsx │ │ │ │ ├── TraceTimelineOverlay.tsx │ │ │ │ └── TraceTimelineView.tsx │ │ │ ├── context.tsx │ │ │ ├── index.ts │ │ │ ├── useCached.ts │ │ │ ├── useEventFeed.ts │ │ │ ├── useEventReactions.tsx │ │ │ ├── useReactions.ts │ │ │ ├── useRequestBuilder.tsx │ │ │ ├── useSystemState.tsx │ │ │ ├── useUserProfile.ts │ │ │ └── useUserSearch.tsx │ │ ├── tsconfig.json │ │ └── typedoc.json │ ├── system-svelte/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── request-builder.ts │ │ ├── tsconfig.json │ │ └── typedoc.json │ ├── system-wasm/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── benches/ │ │ │ └── basic.rs │ │ ├── package.json │ │ ├── pkg/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── system_wasm.d.ts │ │ │ ├── system_wasm.js │ │ │ ├── system_wasm_bg.js │ │ │ ├── system_wasm_bg.wasm │ │ │ └── system_wasm_bg.wasm.d.ts │ │ ├── src/ │ │ │ ├── diff.rs │ │ │ ├── filter.rs │ │ │ ├── lib.rs │ │ │ ├── merge.rs │ │ │ ├── pow.rs │ │ │ └── verify.rs │ │ ├── system-query.iml │ │ └── typedoc.json │ ├── wallet/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── AlbyWallet.ts │ │ │ ├── LNDHub.ts │ │ │ ├── NostrWalletConnect.ts │ │ │ ├── WebLN.ts │ │ │ ├── custom.d.ts │ │ │ ├── index.ts │ │ │ └── zapper.ts │ │ ├── tsconfig.json │ │ └── typedoc.json │ └── worker-relay/ │ ├── README.md │ ├── example/ │ │ └── basic.ts │ ├── package.json │ ├── src/ │ │ ├── custom.d.ts │ │ ├── debug.ts │ │ ├── forYouFeed.ts │ │ ├── index.ts │ │ ├── interface.ts │ │ ├── memory-relay.ts │ │ ├── queue.ts │ │ ├── sqlite/ │ │ │ ├── fixers.ts │ │ │ ├── migrations.ts │ │ │ └── sqlite-relay.ts │ │ ├── types.ts │ │ └── worker.ts │ ├── tsconfig.json │ └── typedoc.json ├── src-tauri/ │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ ├── capabilities/ │ │ └── migrated.json │ ├── gen/ │ │ └── schemas/ │ │ ├── acl-manifests.json │ │ ├── capabilities.json │ │ ├── desktop-schema.json │ │ └── linux-schema.json │ ├── src/ │ │ └── main.rs │ └── tauri.conf.json └── zapstore.yaml