From 964ef441ecf2a89d8a12ffd36690f2ed8d5b9fe8 Mon Sep 17 00:00:00 2001 From: Pratyush Mohanty Date: Tue, 14 Apr 2026 15:09:46 +0000 Subject: [PATCH 1/2] Update relay description (#195) (#197) Co-authored-by: Pratyush Mohanty Co-committed-by: Pratyush Mohanty --- src/routes/settings/relays/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/settings/relays/+page.svelte b/src/routes/settings/relays/+page.svelte index 210aaaab..4352c455 100644 --- a/src/routes/settings/relays/+page.svelte +++ b/src/routes/settings/relays/+page.svelte @@ -58,14 +58,14 @@ From 132c7f031b4a820324bdcef88276456ffde8c79c Mon Sep 17 00:00:00 2001 From: bhavishy2801 Date: Tue, 14 Apr 2026 15:43:49 +0000 Subject: [PATCH 2/2] fix: remove deleted rooms from space navigation after refresh ## Summary This PR fixes a bug where deleting a room succeeded on the relay, but the room could still appear in space navigation (including after refresh). Fixes #194. ## Root Cause Room list derivation did not consistently treat delete events as authoritative in edge cases: - Delete timestamp aggregation could involve an undefined prior value. - Room meta events with the same second-level timestamp as a delete event were still considered active. ## Changes - Updated room delete timestamp aggregation logic to handle first delete event safely. - Updated room filtering condition so a room is excluded when its meta timestamp is less than or equal to the delete timestamp. - This ensures deleted rooms are not shown in navigation immediately or after reload. ## Validation - `pnpm run check` passed. - `pnpm run lint` passed. ## Testing - [x] In a NIP-29 space, create a temporary room. - [x] Delete the room from room details. - [x] Confirm it disappears from navigation immediately. - [x] Hard refresh and confirm it does not reappear. - [x] Reopen app/session and confirm it remains absent. - [x] Repeat by creating/deleting another room quickly (same-minute timestamp edge case). --- src/app/core/state.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app/core/state.ts b/src/app/core/state.ts index 78e8576c..581b735f 100644 --- a/src/app/core/state.ts +++ b/src/app/core/state.ts @@ -615,7 +615,12 @@ export const roomsByUrl = derived(roomMetaEventsByIdByUrl, roomMetaEventsByIdByU for (const event of deleteEvents) { for (const h of getTagValues("h", event.tags)) { - deletedByH.set(h, max([deletedByH.get(h), event.created_at])) + const deletedAt = deletedByH.get(h) + + deletedByH.set( + h, + deletedAt === undefined ? event.created_at : max([deletedAt, event.created_at]), + ) } } @@ -623,8 +628,9 @@ export const roomsByUrl = derived(roomMetaEventsByIdByUrl, roomMetaEventsByIdByU for (const event of metaEvents) { const meta = tryCatch(() => readRoomMeta(event)) + const deletedAt = meta ? deletedByH.get(meta.h) : undefined - if (!meta || gt(deletedByH.get(meta.h), meta.event.created_at)) { + if (!meta || (deletedAt !== undefined && !gt(meta.event.created_at, deletedAt))) { continue }