diff --git a/src/components/ContentPanel.tsx b/src/components/ContentPanel.tsx index 7bac242b..fe8b64c1 100644 --- a/src/components/ContentPanel.tsx +++ b/src/components/ContentPanel.tsx @@ -580,9 +580,7 @@ const ContentPanel: React.FC = ({ try { const naddr = nip19.naddrEncode({ kind: 30023, pubkey: currentArticle.pubkey, identifier: dTag }) hasRead = hasRead || archiveController.isMarked(naddr) - console.log('[archive][content] check article', { naddr: naddr.slice(0, 24) + '...', hasRead }) } catch (e) { - console.warn('[archive][content] encode naddr failed', e) } } } else { @@ -594,7 +592,6 @@ const ContentPanel: React.FC = ({ // Also check archiveController const ctrl = archiveController.isMarked(selectedUrl) hasRead = hasRead || ctrl - console.log('[archive][content] check url', { url: selectedUrl, hasRead, ctrl }) } setIsMarkedAsRead(hasRead) } catch (error) { @@ -675,7 +672,6 @@ const ContentPanel: React.FC = ({ if (dTag) { const naddr = nip19.naddrEncode({ kind: 30023, pubkey: currentArticle.pubkey, identifier: dTag }) archiveController.mark(naddr) - console.log('[archive][content] optimistic mark article', naddr.slice(0, 24) + '...') } } catch (err) { console.warn('[archive][content] optimistic article mark failed', err) @@ -687,7 +683,6 @@ const ContentPanel: React.FC = ({ relayPool ) archiveController.mark(selectedUrl) - console.log('[archive][content] optimistic mark url', selectedUrl) } } catch (error) { console.error('Failed to mark as read:', error) diff --git a/src/components/Me.tsx b/src/components/Me.tsx index 1097379e..863ef087 100644 --- a/src/components/Me.tsx +++ b/src/components/Me.tsx @@ -564,27 +564,6 @@ const Me: React.FC = ({ ? buildArchiveOnly(linksWithProgress, { kind: 'external' }) : [] - // Debug logs for archive filter issues - if (readingProgressFilter === 'archive') { - const ids = Array.from(new Set([ - ...archiveController.getMarkedIds(), - ...readingProgressController.getMarkedAsReadIds() - ])) - const readIds = new Set(reads.map(i => i.id)) - const matches = ids.filter(id => readIds.has(id)) - const nonMatches = ids.filter(id => !readIds.has(id)).slice(0, 5) - console.log('[archive][me] counts', { - reads: reads.length, - filteredReads: filteredReads.length, - links: links.length, - linksWithProgress: linksWithProgress.length, - filteredLinks: filteredLinks.length, - markedIds: ids.length, - sampleMarked: ids.slice(0, 3), - matches: matches.length, - nonMatches - }) - } const sections: Array<{ key: string; title: string; items: IndividualBookmark[] }> = groupingMode === 'flat' ? [{ key: 'all', title: `All Bookmarks (${filteredBookmarks.length})`, items: filteredBookmarks }] diff --git a/src/services/archiveController.ts b/src/services/archiveController.ts index 4a9802ab..6dd23819 100644 --- a/src/services/archiveController.ts +++ b/src/services/archiveController.ts @@ -34,14 +34,12 @@ class ArchiveController { if (!this.markedIds.has(id)) { this.markedIds.add(id) this.emit() - console.log('[archive] mark() added', id.slice(0, 48)) } } unmark(id: string): void { if (this.markedIds.delete(id)) { this.emit() - console.log('[archive] unmark() removed', id.slice(0, 48)) } } @@ -60,7 +58,7 @@ class ArchiveController { reset(): void { this.generation++ if (this.timelineSubscription) { - try { this.timelineSubscription.unsubscribe() } catch (e) { console.warn('[archive] timeline unsub error', e) } + try { this.timelineSubscription.unsubscribe() } catch { /* ignore */ } this.timelineSubscription = null } this.markedIds = new Set() @@ -79,13 +77,11 @@ class ArchiveController { const startGen = this.generation if (!force && this.isLoadedFor(pubkey)) { - console.log('[archive] start() skipped - already loaded for pubkey') return } // Mark as loaded immediately (fetch runs non-blocking) this.lastLoadedPubkey = pubkey - console.log('[archive] start() begin for pubkey:', pubkey.slice(0, 12), '...') // Handlers for streaming queries const handleUrlReaction = (evt: NostrEvent) => { @@ -94,7 +90,6 @@ class ArchiveController { if (!rTag) return this.markedIds.add(rTag) this.emit() - console.log('[archive] mark url:', rTag) } const handleEventReaction = (evt: NostrEvent) => { @@ -109,7 +104,6 @@ class ArchiveController { const naddr = nip19.naddrEncode({ kind, pubkey, identifier }) this.markedIds.add(naddr) this.emit() - console.log('[archive] mark naddr via a-tag:', naddr.slice(0, 24), '...') return } } catch { /* ignore malformed a-tag */ } @@ -117,7 +111,6 @@ class ArchiveController { const eTag = evt.tags.find(t => t[0] === 'e')?.[1] if (!eTag) return this.pendingEventIds.add(eTag) - console.log('[archive] pending event id:', eTag) } try { @@ -132,27 +125,23 @@ class ArchiveController { // Include EOSE events kind17.forEach(handleUrlReaction) kind7.forEach(handleEventReaction) - console.log('[archive] EOSE sizes kind17:', kind17.length, 'kind7:', kind7.length, 'pendingEventIds:', this.pendingEventIds.size) if (this.pendingEventIds.size > 0) { // Fetch referenced articles (kind:30023) and map event IDs to naddr const ids = Array.from(this.pendingEventIds) const articleEvents = await queryEvents(relayPool, { kinds: [KINDS.BlogPost], ids }) - console.log('[archive] fetched articles for mapping:', articleEvents.length) for (const article of articleEvents) { const dTag = article.tags.find(t => t[0] === 'd')?.[1] if (!dTag) continue try { const naddr = nip19.naddrEncode({ kind: KINDS.BlogPost, pubkey: article.pubkey, identifier: dTag }) this.markedIds.add(naddr) - console.log('[archive] mark naddr:', naddr.slice(0, 24), '...') } catch { // skip invalid } } this.emit() } - console.log('[archive] total marked ids:', this.markedIds.size) // Try immediate mapping via eventStore for any still-pending e-ids if (this.pendingEventIds.size > 0) { @@ -166,7 +155,6 @@ class ArchiveController { if (dTag) { const naddr = nip19.naddrEncode({ kind: KINDS.BlogPost, pubkey: evt.pubkey, identifier: dTag }) this.markedIds.add(naddr) - console.log('[archive] map via eventStore naddr:', naddr.slice(0, 24), '...') } } else { stillPending.add(eId) @@ -177,7 +165,7 @@ class ArchiveController { if (stillPending.size > 0) { // Subscribe to future 30023 arrivals to finalize mapping if (this.timelineSubscription) { - try { this.timelineSubscription.unsubscribe() } catch (e) { console.warn('[archive] timeline unsub error', e) } + try { this.timelineSubscription.unsubscribe() } catch { /* ignore */ } this.timelineSubscription = null } const sub$ = eventStore.timeline({ kinds: [KINDS.BlogPost] }) @@ -192,16 +180,14 @@ class ArchiveController { const naddr = nip19.naddrEncode({ kind: KINDS.BlogPost, pubkey: evt.pubkey, identifier: dTag }) this.markedIds.add(naddr) this.pendingEventIds.delete(evt.id) - console.log('[archive] map via timeline naddr:', naddr.slice(0, 24), '...') this.emit() - } catch (e) { console.warn('[archive] map via timeline encode error', e) } + } catch { /* ignore */ } } }) } } } catch (err) { // Non-blocking fetch; ignore errors here - console.warn('[archive] start() error:', err) } } } diff --git a/src/services/bookmarkHelpers.ts b/src/services/bookmarkHelpers.ts index 475417f0..d8803a42 100644 --- a/src/services/bookmarkHelpers.ts +++ b/src/services/bookmarkHelpers.ts @@ -67,15 +67,12 @@ export const processApplesauceBookmarks = ( ): IndividualBookmark[] => { if (!bookmarks) return [] - console.log('[BOOKMARK_TS] processApplesauceBookmarks called with parentCreatedAt:', parentCreatedAt, 'isPrivate:', isPrivate) - if (typeof bookmarks === 'object' && bookmarks !== null && !Array.isArray(bookmarks)) { const applesauceBookmarks = bookmarks as ApplesauceBookmarks const allItems: IndividualBookmark[] = [] // Process notes (EventPointer[]) if (applesauceBookmarks.notes) { - console.log('[BOOKMARK_TS] Processing', applesauceBookmarks.notes.length, 'notes with timestamp:', parentCreatedAt || 0) applesauceBookmarks.notes.forEach((note: EventPointer) => { allItems.push({ id: note.id, @@ -94,7 +91,6 @@ export const processApplesauceBookmarks = ( // Process articles (AddressPointer[]) if (applesauceBookmarks.articles) { - console.log('[BOOKMARK_TS] Processing', applesauceBookmarks.articles.length, 'articles with timestamp:', parentCreatedAt || 0) applesauceBookmarks.articles.forEach((article: AddressPointer) => { // Convert AddressPointer to coordinate format: kind:pubkey:identifier const coordinate = `${article.kind}:${article.pubkey}:${article.identifier || ''}` @@ -133,7 +129,6 @@ export const processApplesauceBookmarks = ( // Process URLs (string[]) if (applesauceBookmarks.urls) { - console.log('[BOOKMARK_TS] Processing', applesauceBookmarks.urls.length, 'URLs with timestamp:', parentCreatedAt || 0) applesauceBookmarks.urls.forEach((url: string) => { allItems.push({ id: `url-${url}`, @@ -202,7 +197,6 @@ export function hydrateItems( .filter(item => { // Filter out bookmark list events (they're containers, not content) const isBookmarkListEvent = item.kind === 10003 || item.kind === 30003 || item.kind === 30001 - console.log('[BOOKMARK_TS] After hydration - id:', item.id, 'kind:', item.kind, 'isBookmarkListEvent:', isBookmarkListEvent, 'content:', item.content?.substring(0, 50)) return !isBookmarkListEvent }) } diff --git a/src/services/bookmarkProcessing.ts b/src/services/bookmarkProcessing.ts index 6901b476..dfbd4137 100644 --- a/src/services/bookmarkProcessing.ts +++ b/src/services/bookmarkProcessing.ts @@ -121,7 +121,6 @@ export async function collectBookmarksFromEvents( const decryptJobs: Array<{ evt: NostrEvent; metadata: { dTag?: string; setTitle?: string; setDescription?: string; setImage?: string } }> = [] for (const evt of bookmarkListEvents) { - console.log('[BOOKMARK_TS] Processing bookmark event', evt.id, 'kind:', evt.kind, 'created_at:', evt.created_at) newestCreatedAt = Math.max(newestCreatedAt, evt.created_at || 0) if (!latestContent && evt.content && !Helpers.hasHiddenContent(evt)) latestContent = evt.content if (Array.isArray(evt.tags)) allTags = allTags.concat(evt.tags) diff --git a/src/services/reactionService.ts b/src/services/reactionService.ts index 17ea041a..2774726a 100644 --- a/src/services/reactionService.ts +++ b/src/services/reactionService.ts @@ -35,7 +35,6 @@ export async function createEventReaction( ] if (options?.aCoord) { tags.push(['a', options.aCoord]) - console.log('[archive] createEventReaction add a-tag:', options.aCoord) } const draft = await factory.create(async () => ({ diff --git a/src/services/readingProgressController.ts b/src/services/readingProgressController.ts index b723eb9a..f4949355 100644 --- a/src/services/readingProgressController.ts +++ b/src/services/readingProgressController.ts @@ -8,7 +8,6 @@ import { ReadItem } from './readsService' import { ARCHIVE_EMOJI } from './reactionService' import { nip19 } from 'nostr-tools' -console.log('[readingProgress] Module loaded') type ProgressMapCallback = (progressMap: Map) => void type LoadingCallback = (loading: boolean) => void @@ -175,17 +174,14 @@ class ReadingProgressController { const { relayPool, eventStore, pubkey, force = false } = params const startGeneration = this.generation - console.log('[readingProgress] start() called for pubkey:', pubkey.slice(0, 16), '...', 'force:', force) // Skip if already loaded for this pubkey and not forcing if (!force && this.isLoadedFor(pubkey)) { - console.log('[readingProgress] Already loaded for pubkey, skipping') return } // Prevent concurrent starts if (this.isLoading) { - console.log('[readingProgress] Already loading, skipping concurrent start') return } @@ -211,7 +207,6 @@ class ReadingProgressController { this.timelineSubscription = null } - console.log('[readingProgress] Setting up eventStore subscription...') const timeline$ = eventStore.timeline({ kinds: [KINDS.ReadingProgress], authors: [pubkey] @@ -222,20 +217,17 @@ class ReadingProgressController { if (!Array.isArray(localEvents) || localEvents.length === 0) return this.processEvents(localEvents) }) - console.log('[readingProgress] EventStore subscription ready - updates streaming') // Mark as loaded immediately - queries run in background non-blocking this.lastLoadedPubkey = pubkey // Query reading progress from relays in background (non-blocking, fire-and-forget) - console.log('[readingProgress] Starting background relay query for reading progress...') queryEvents(relayPool, { kinds: [KINDS.ReadingProgress], authors: [pubkey] }) .then((relayEvents) => { if (startGeneration !== this.generation) return - console.log('[readingProgress] Got reading progress from relays:', relayEvents.length) if (relayEvents.length > 0) { relayEvents.forEach(e => eventStore.add(e)) this.processEvents(relayEvents) @@ -248,10 +240,8 @@ class ReadingProgressController { }) // Load mark-as-read reactions in background (non-blocking, streaming) - console.log('[readingProgress] Starting background relay query for mark-as-read reactions...') this.loadMarkAsReadReactions(relayPool, eventStore, pubkey, startGeneration) .then(() => { - console.log('[readingProgress] Mark-as-read reactions loading complete') }) .catch((err) => { console.warn('[readingProgress] Mark-as-read reactions loading failed:', err) @@ -264,9 +254,6 @@ class ReadingProgressController { this.setLoading(false) } this.isLoading = false - console.log('[readingProgress] === LOADED ===') - console.log('[readingProgress] progressMap keys:', Array.from(this.currentProgressMap.keys())) - console.log('[readingProgress] markedAsReadIds:', Array.from(this.markedAsReadIds)) } } @@ -317,7 +304,6 @@ class ReadingProgressController { ): Promise { try { // Stream kind:17 (URL reactions) and kind:7 (event reactions) in parallel - console.log('[readingProgress] Querying kind:17 and kind:7 reactions (streaming)...') const seenReactionIds = new Set() const handleUrlReaction = (evt: NostrEvent) => { @@ -378,7 +364,6 @@ class ReadingProgressController { this.emitMarkedAsReadChanged() } - console.log('[readingProgress] Mark-as-read reactions complete. Total:', Array.from(this.markedAsReadIds).length) } catch (err) { console.warn('[readingProgress] Failed to load mark-as-read reactions:', err) }