From 9bc601c16d7f35384a029e15d4d18ced7705ca5f Mon Sep 17 00:00:00 2001 From: Silberengel Date: Mon, 9 Feb 2026 22:09:58 +0100 Subject: [PATCH] bug-fixes --- package-lock.json | 4 ++-- package.json | 2 +- src/lib/error-suppression.ts | 22 ++++++++++++++++++++++ src/services/client.service.ts | 25 +++++++++++++++++-------- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89e34c1..385683d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jumble-imwald", - "version": "16.1.1", + "version": "16.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jumble-imwald", - "version": "16.1.1", + "version": "16.1.2", "license": "MIT", "dependencies": { "@asciidoctor/core": "^3.0.4", diff --git a/package.json b/package.json index f3bf3d7..9c8b18d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jumble-imwald", - "version": "16.1.1", + "version": "16.1.2", "description": "A user-friendly Nostr client focused on relay feed browsing and relay discovery, forked from Jumble", "private": true, "type": "module", diff --git a/src/lib/error-suppression.ts b/src/lib/error-suppression.ts index 4702eca..ba133d0 100644 --- a/src/lib/error-suppression.ts +++ b/src/lib/error-suppression.ts @@ -56,6 +56,17 @@ export function suppressExpectedErrors() { return } + // Suppress Radix UI Dialog accessibility warnings + // These are informational warnings about DialogTitle/Description + // All our dialogs have titles (some hidden with sr-only for accessibility) + if (message.includes('DialogContent') && ( + message.includes('requires a DialogTitle') || + message.includes('Missing `Description`') || + message.includes('aria-describedby') + )) { + return + } + // Suppress Workbox precaching errors for development modules if (message.includes('Precaching did not find a match') && ( message.includes('@vite/client') || @@ -166,6 +177,17 @@ export function suppressExpectedErrors() { return } + // Suppress Radix UI Dialog accessibility warnings + // These are informational warnings about DialogTitle/Description + // All our dialogs have titles (some hidden with sr-only for accessibility) + if (message.includes('DialogContent') && ( + message.includes('requires a DialogTitle') || + message.includes('Missing `Description`') || + message.includes('aria-describedby') + )) { + return + } + // Call original console.warn for unexpected warnings originalConsoleWarn.apply(console, args) } diff --git a/src/services/client.service.ts b/src/services/client.service.ts index 05ce4e1..2a46194 100644 --- a/src/services/client.service.ts +++ b/src/services/client.service.ts @@ -163,7 +163,6 @@ class ClientService extends EventTarget { kinds.RelayList, ExtendedKind.CACHE_RELAYS, kinds.Contacts, - ExtendedKind.FAVORITE_RELAYS, ExtendedKind.BLOSSOM_SERVER_LIST, ExtendedKind.RELAY_REVIEW ].includes(event.kind) @@ -175,18 +174,26 @@ class ClientService extends EventTarget { profileRelays: PROFILE_RELAY_URLS, additionalRelayCount: _additionalRelayUrls.length }) + } else if (event.kind === ExtendedKind.FAVORITE_RELAYS) { + // Use fast write relays for favorite relays to avoid timeouts and payment requirements + _additionalRelayUrls.push(...FAST_WRITE_RELAY_URLS) + logger.debug('[DetermineTargetRelays] Favorite relays event detected, adding FAST_WRITE_RELAY_URLS', { + kind: event.kind, + fastWriteRelays: FAST_WRITE_RELAY_URLS, + additionalRelayCount: _additionalRelayUrls.length + }) } else if (event.kind === ExtendedKind.RSS_FEED_LIST) { _additionalRelayUrls.push(...FAST_WRITE_RELAY_URLS, ...PROFILE_RELAY_URLS) } - if (event.kind === kinds.RelayList) { - logger.debug('[DetermineTargetRelays] Fetching user relay list for relay list event publication', { + if (event.kind === kinds.RelayList || event.kind === ExtendedKind.FAVORITE_RELAYS) { + logger.debug('[DetermineTargetRelays] Fetching user relay list for event publication', { pubkey: event.pubkey?.substring(0, 8), kind: event.kind }) } const relayList = await this.fetchRelayList(event.pubkey) - if (event.kind === kinds.RelayList) { + if (event.kind === kinds.RelayList || event.kind === ExtendedKind.FAVORITE_RELAYS) { logger.debug('[DetermineTargetRelays] User relay list fetched', { hasRelayList: !!relayList, writeRelayCount: relayList?.write?.length ?? 0, @@ -197,8 +204,9 @@ class ClientService extends EventTarget { relays = (relayList?.write.slice(0, 10) ?? []).concat( Array.from(new Set(_additionalRelayUrls)) ?? [] ) - if (event.kind === kinds.RelayList) { - logger.info('[DetermineTargetRelays] Final relay list for relay list event publication', { + if (event.kind === kinds.RelayList || event.kind === ExtendedKind.FAVORITE_RELAYS) { + logger.info('[DetermineTargetRelays] Final relay list for event publication', { + kind: event.kind, totalRelayCount: relays.length, userWriteRelays: relayList?.write?.slice(0, 10) ?? [], additionalRelays: Array.from(new Set(_additionalRelayUrls)), @@ -222,9 +230,10 @@ class ClientService extends EventTarget { }) const uniqueRelayUrls = Array.from(new Set(relayUrls)) - if (event.kind === kinds.RelayList) { - logger.info('[PublishEvent] Publishing relay list event to relays', { + if (event.kind === kinds.RelayList || event.kind === ExtendedKind.FAVORITE_RELAYS) { + logger.info('[PublishEvent] Publishing event to relays', { eventId: event.id?.substring(0, 8), + kind: event.kind, totalRelayCount: uniqueRelayUrls.length, allRelays: uniqueRelayUrls })