diff --git a/js/searchView.js b/js/searchView.js index b6891a8d..b5257161 100644 --- a/js/searchView.js +++ b/js/searchView.js @@ -284,50 +284,89 @@ async function performProfileSearch(query, token) { } async function performVideoSearch(query, token) { - if (!nostrClient || !nostrClient.pool) return []; + if (!nostrClient) return []; const isHashtag = query.startsWith("#"); const term = isHashtag ? query.slice(1) : query; + const lowerTerm = term.toLowerCase(); - const filter = { - kinds: [30078], - limit: 50 - }; + // 1. Local Search (Cache) + const localMatches = []; + if (nostrClient.activeMap instanceof Map) { + for (const video of nostrClient.activeMap.values()) { + if (!video || video.deleted) continue; - if (isHashtag) { - filter["#t"] = [term]; - } else { - filter.search = term; - } + let matches = false; + if (isHashtag) { + // Check tags for 't' + if (Array.isArray(video.tags)) { + matches = video.tags.some(t => Array.isArray(t) && t[0] === "t" && t[1].toLowerCase() === lowerTerm); + } + } else { + // Check title/description + const title = video.title ? video.title.toLowerCase() : ""; + const desc = video.description ? video.description.toLowerCase() : ""; + if (title.includes(lowerTerm) || desc.includes(lowerTerm)) { + matches = true; + } + } - const relays = nostrClient.relays || []; - if (relays.length === 0) return []; - - let events = []; - try { - events = await nostrClient.pool.list(relays, [filter]); - } catch (e) { - devLogger.warn("Video search error", e); - return []; + if (matches) { + localMatches.push(video); + } + } } if (currentSearchToken !== token) return []; - const { convertEventToVideo } = await import("./nostr/index.js"); + // 2. Relay Search + let relayVideos = []; + const relays = nostrClient.relays || []; - const videos = events.map(evt => { - const vid = convertEventToVideo(evt); - if (vid.invalid) return null; - return vid; - }).filter(Boolean); + if (relays.length > 0 && nostrClient.pool) { + const filter = { + kinds: [30078], + limit: 50 + }; - // Deduplicate by ID (or root) - const unique = new Map(); - for (const v of videos) { - if (!unique.has(v.id)) { - unique.set(v.id, v); + if (isHashtag) { + filter["#t"] = [term]; + } else { + filter.search = term; + } + + try { + const events = await nostrClient.pool.list(relays, [filter]); + + if (currentSearchToken === token) { + const { convertEventToVideo } = await import("./nostr/index.js"); + relayVideos = events.map(evt => { + const vid = convertEventToVideo(evt); + if (vid.invalid) return null; + return vid; + }).filter(Boolean); + } + } catch (e) { + devLogger.warn("Video search error", e); + // Continue with local matches if relay search fails } } - return Array.from(unique.values()); + if (currentSearchToken !== token) return []; + + // Deduplicate by ID + const unique = new Map(); + + // Add local matches first + for (const v of localMatches) { + if (!unique.has(v.id)) unique.set(v.id, v); + } + + // Add relay matches (overwriting local if needed, or ignoring duplicates) + for (const v of relayVideos) { + if (!unique.has(v.id)) unique.set(v.id, v); + } + + // Sort by creation date (newest first) + return Array.from(unique.values()).sort((a, b) => (b.created_at || 0) - (a.created_at || 0)); } diff --git a/server.log b/server.log index 121dc93f..ba9f8de2 100644 --- a/server.log +++ b/server.log @@ -464,3 +464,236 @@ 127.0.0.1 - - [16/Jan/2026 22:58:17] "GET /views/search.html?v=2024.11.09 HTTP/1.1" 200 - 127.0.0.1 - - [16/Jan/2026 22:58:17] "GET /components/disclaimer.html?v=2024.11.09 HTTP/1.1" 200 - 127.0.0.1 - - [16/Jan/2026 22:58:17] "GET /views/search.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /index.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/nostrToolsBootstrap.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /css/tailwind.generated.css?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/accessControl.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/config.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/webtorrent.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/lists.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/disclaimer.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/bootstrap.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/index.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/viewManager.js?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/utils/logger.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/config.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/adminListStore.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /config/instance-config.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/nostr/toolkit.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/webtorrent.min.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/constants.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /js/utils/safeDecode.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /assets/svg/default-profile.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /assets/svg/filter.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:58] "GET /assets/svg/search.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/app.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/viewManager.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/nostrService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/r2Service.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/hashtagPreferencesService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/components/staticModalAccessibility.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /config/validate-config.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /config/asset-version.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/bufferPolyfill.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/applicationContext.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/designSystem.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authProviders/index.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/themeController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrClientFacade.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/userBlocks.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/accessControl.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/relayManager.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/channelProfile.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrEventSchemas.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/bootstrap.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/subscriptions.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrClientRegistry.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/r2.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrPublish.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrToolsBootstrap.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/index.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/storage/r2-s3.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/storage/r2-mgmt.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/formatters.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/videoNotePayload.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/moderationService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/storageService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/directMessagesStore.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/state/appState.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/components/modalAccessibility.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/magnetUtils.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/webtorrent.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostrViewEventsFacade.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/playbackUtils.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/videoTags.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/urlHealthObserver.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/cardSourceVisibility.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/profileMedia.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/gridHealth.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/lists.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/r2-quick.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/overlay/popoverEngine.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/sidebarLoading.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/feedEngine/index.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/watchHistoryDebug.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/watchHistoryService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/components/videoMenuRenderers.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/viewCounter.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/domUtils.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/components/tagPreferenceMenu.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/reactionCounter.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/loginModalController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/zapSplit.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/pointer.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/videoPointer.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/videoDeduper.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/magnetValidators.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/profileBatchFetcher.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/serviceWorkerFallbackMessages.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/state/cache.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/utils/videoTimestamps.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/applicationBootstrap.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/videoModalCommentController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/moderationActionController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authProviders/nsec.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authProviders/nip46.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authProviders/nip07.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/trustBootstrap.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/services/authProviders/generate.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/defaultClient.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/nip46Client.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/views/VideoListView.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/moderationUiHelpers.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/components/VideoCard.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/ui/moderationCopy.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/feedEngine/stages.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/zapSharedState.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/lnurl.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/nwcClient.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/zapNotifications.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/client.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/payments/platformAddress.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/nip07Permissions.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/nip71.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/watchHistory.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/watchHistoryBindings.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/viewEvents.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/reactionEvents.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /vendor/crypto-helpers.bundle.min.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/commentEvents.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/magnet.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/magnetShared.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/nostr/viewEventBindings.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:38:59] "GET /js/dom/cardObserver.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/magnets.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/designSystem/metrics.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/feedEngine/sorters.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/feedEngine/engine.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/feedEngine/sources.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/overlay/overlayRoot.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /vendor/floating-ui.dom.bundle.min.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/feedEngine/watchHistoryFeed.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/utils/hex.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nostr/publishHelpers.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/utils/qrcode.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/payments/zapReceiptValidator.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/payments/platformFee.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/utils/storage.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/state/profileSettingsStore.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/utils/mediaLoader.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/historyView.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/watchHistoryController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/services/watchHistoryTelemetry.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/services/playbackService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/services/discussionCountService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/services/commentThreadService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/services/nwcSettingsService.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/profileIdentityController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/appChromeController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/videoListViewController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/profileModalController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/ModalManager.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/tagPillList.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/moreMenuController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/feedEngine/utils.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/payments/zapMessages.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nostr/countDiagnostics.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nostr/maxListenerDiagnostics.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nostr/sessionActor.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/videoEventUtils.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nostrWatchHistoryFacade.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/designSystem/dynamicStyles.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/nwcSettings.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/RevertModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/VideoModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/initEditModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/initUploadModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/initDeleteModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/EventDetailsModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/zapController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/nip71FormManager.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/UploadModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/EditModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/DeleteModal.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/ambientBackground.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/video-modal/commentsController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/video-modal/reactionsController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/video-modal/similarContentController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/video-modal/moderationController.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/utils/torrentHash.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/video-modal/utils/commentAvatar.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /js/ui/components/SimilarContentCard.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/application-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/feature-request-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/general-feedback-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/content-appeals-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/login-modal.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/bug-fix-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/upload-modal.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/video-modal.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/edit-video-modal.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/profile-modal.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/iframe-application-form.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/iframe-feedback-form.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/iframe-request-form.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/iframe-content-appeals-form.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/iframe-bug-fix-form.html HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/sidebar.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /components/iframe_forms/theme-sync.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /css/tailwind.generated.css HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:00] "GET /views/most-recent-videos.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/recent-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/history-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/subscriptions-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/ellipsis.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/explore-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/about-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/guidelines-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/getting-started-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/roadmap-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/upload-content-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/blog-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/nostr-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/beta-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/beacon-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/github-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/links-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/ipns-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /assets/svg/dns-icon.svg HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /js/sidebar.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /js/index.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/login-modal.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/application-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/general-feedback-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/feature-request-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/content-appeals-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/bug-fix-form.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/disclaimer.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /views/search.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /components/sidebar.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /js/disclaimer.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:01] "GET /js/searchView.js HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:02] "GET /views/search.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:02] "GET /components/disclaimer.html?v=2024.11.09 HTTP/1.1" 200 - +127.0.0.1 - - [17/Jan/2026 03:39:02] "GET /views/search.html?v=2024.11.09 HTTP/1.1" 200 - diff --git a/verification/search_view.png b/verification/search_view.png deleted file mode 100644 index deece43e..00000000 Binary files a/verification/search_view.png and /dev/null differ diff --git a/verification/verify_search.py b/verification/verify_search.py deleted file mode 100644 index b64d73f8..00000000 --- a/verification/verify_search.py +++ /dev/null @@ -1,40 +0,0 @@ -from playwright.sync_api import sync_playwright, expect - -def test_search_functionality(): - with sync_playwright() as p: - browser = p.chromium.launch(headless=True) - page = browser.new_page() - - # Navigate to the home page - page.goto("http://localhost:3000/index.html") - - # Verify search input exists - search_input = page.locator("#headerSearchInput") - expect(search_input).to_be_visible() - - # Type a query - search_input.fill("test") - search_input.press("Enter") - - # Wait for hash change and search results view - page.wait_for_timeout(2000) # Give it a moment to load view - - # Verify the hash updated - assert "#view=search&q=test" in page.url - - # Verify the search title updated - title_locator = page.locator("#searchTitle") - expect(title_locator).to_be_visible() - expect(title_locator).to_have_text('Search Results for "test"') - - # Verify sections exist - expect(page.locator("#searchChannelList")).to_be_visible() - expect(page.locator("#searchVideoList")).to_be_visible() - - # Take a screenshot - page.screenshot(path="verification/search_view.png", full_page=True) - - browser.close() - -if __name__ == "__main__": - test_search_functionality()