diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte index 4d83087..61b573b 100644 --- a/app/web/src/App.svelte +++ b/app/web/src/App.svelte @@ -116,6 +116,9 @@ // ACL mode let aclMode = ""; + // Relay version + let relayVersion = ""; + // Compose tab state let composeEventJson = ""; let composePublishError = ""; @@ -859,6 +862,9 @@ // Load policy configuration loadPolicyConfig(); + + // Load relay version + fetchRelayVersion(); } function savePersistentState() { @@ -2020,6 +2026,17 @@ } } + async function fetchRelayVersion() { + try { + const info = await api.fetchRelayInfo(); + if (info && info.version) { + relayVersion = info.version; + } + } catch (error) { + console.error("Error fetching relay version:", error); + } + } + // Export functionality async function exportEvents(pubkeys = []) { // Skip login check when ACL is "none" (open relay mode) @@ -2737,6 +2754,7 @@ {isDarkTheme} {tabs} {selectedTab} + version={relayVersion} on:selectTab={(e) => selectTab(e.detail)} on:closeSearchTab={(e) => closeSearchTab(e.detail)} /> diff --git a/app/web/src/Sidebar.svelte b/app/web/src/Sidebar.svelte index 52d89a0..2fdcbfc 100644 --- a/app/web/src/Sidebar.svelte +++ b/app/web/src/Sidebar.svelte @@ -2,6 +2,7 @@ export let isDarkTheme = false; export let tabs = []; export let selectedTab = ""; + export let version = ""; import { createEventDispatcher } from "svelte"; const dispatch = createEventDispatcher(); @@ -41,6 +42,15 @@ {/each} + {#if version} + + + + + + v{version} + + {/if} diff --git a/app/web/src/api.js b/app/web/src/api.js index 1638c90..5281cb5 100644 --- a/app/web/src/api.js +++ b/app/web/src/api.js @@ -319,6 +319,28 @@ export async function fetchPolicyFollows(signer, pubkey) { return data.follows || []; } +// ==================== Relay Info API ==================== + +/** + * Fetch relay info document (NIP-11) + * @returns {Promise} Relay info including version + */ +export async function fetchRelayInfo() { + try { + const response = await fetch(window.location.origin, { + headers: { + Accept: "application/nostr+json", + }, + }); + if (response.ok) { + return await response.json(); + } + } catch (error) { + console.error("Error fetching relay info:", error); + } + return null; +} + // ==================== Export/Import API ==================== /** diff --git a/pkg/version/version b/pkg/version/version index 7b4c69b..7bcc525 100644 --- a/pkg/version/version +++ b/pkg/version/version @@ -1 +1 @@ -v0.36.17 +v0.36.18