diff --git a/AGENTS.md b/AGENTS.md index 7663bb2..87b3401 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2107,10 +2107,14 @@ The community relay moved off the hosted relay.tools instance `scripts/systemd/skatespots-health.{service,timer}`. - **Cutover (2026-10-12):** `SKATE_RELAY` (`src/lib/types.ts`) → the new relay; the default pools, the DM/CVM/zap relay arrays, the `cvm-server` + `push-service` - defaults, and the archive default all point at the new relay **with the legacy - relay kept as a fallback**. ⚠️ **Retire the legacy relay only after old native - clients update** — the web app is instant (Netlify), the APK lags (Zapstore). - Until then the old relay still receives writes so old clients can read. + defaults, and the archive default all point at the new relay. +- **Legacy relay retired (2026-10-12):** verified the old relay held the **same 115 + events** as the new one (0 diff) before changing anything, so nothing is lost. + `wss://goskatespots.nostr1.com` was then removed from the pools, the servers and + the box env. ⚠️ Old native clients (a pre-update APK) that still point at the old + relay will lose skate content once the relay.tools subscription is cancelled — + cancel only after the Zapstore update has propagated. Historical newsletter text + still names the old relay (left as-is on purpose). - ⚠️ `relay.skate-spots.org` can show a stale NXDOMAIN in a local resolver cache right after creation (our dev box did). Verify with `curl --resolve relay.skate-spots.org:443:185.18.221.2 …` or from another host. diff --git a/cvm-server/server.ts b/cvm-server/server.ts index 4ec70ef..d48fe82 100644 --- a/cvm-server/server.ts +++ b/cvm-server/server.ts @@ -37,7 +37,7 @@ if (!NSEC_HEX) { process.exit(1); } -const NOSTR_RELAYS = (process.env.NOSTR_RELAYS || "wss://relay.skate-spots.org,wss://goskatespots.nostr1.com") +const NOSTR_RELAYS = (process.env.NOSTR_RELAYS || "wss://relay.skate-spots.org") .split(",") .map((r) => r.trim()) .filter(Boolean); diff --git a/push-service/server.ts b/push-service/server.ts index 6c76640..2bef4eb 100644 --- a/push-service/server.ts +++ b/push-service/server.ts @@ -36,7 +36,7 @@ const env = process.env; const PORT = Number(env.PORT ?? 8788); const MARKER = (env.PUSH_MARKER ?? 'skatespots').trim(); const STORAGE_PATH = env.PUSH_STORAGE_PATH ?? './push-state.json'; -const RELAYS = (env.PUSH_RELAYS ?? 'wss://relay.skate-spots.org,wss://goskatespots.nostr1.com') +const RELAYS = (env.PUSH_RELAYS ?? 'wss://relay.skate-spots.org') .split(',').map((s) => s.trim()).filter(Boolean); const LOOKBACK_SECONDS = Number(env.PUSH_LOOKBACK_SECONDS ?? 3 * 24 * 60 * 60); const CHALLENGE_TTL_SECONDS = Number(env.PUSH_CHALLENGE_TTL_SECONDS ?? 5 * 60); diff --git a/src/App.tsx b/src/App.tsx index 2fcc091..0871b54 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -54,7 +54,6 @@ const defaultConfig: AppConfig = { { url: 'wss://auth.nostr1.com', read: true, write: true }, { url: 'wss://relay.ditto.pub', read: true, write: true }, { url: 'wss://relay.skate-spots.org', read: true, write: true }, - { url: 'wss://goskatespots.nostr1.com', read: true, write: true }, // legacy fallback { url: 'wss://purplepag.es', read: true, write: false }, // Profile aggregator - read only ], updatedAt: 0, diff --git a/src/components/NostrProvider.tsx b/src/components/NostrProvider.tsx index a5d1350..cd451ea 100644 --- a/src/components/NostrProvider.tsx +++ b/src/components/NostrProvider.tsx @@ -16,7 +16,6 @@ const DEFAULT_RELAYS = [ { url: 'wss://auth.nostr1.com', read: true, write: true }, { url: 'wss://relay.ditto.pub', read: true, write: true }, { url: SKATE_RELAY, read: true, write: true }, - { url: 'wss://goskatespots.nostr1.com', read: true, write: true }, // legacy fallback { url: 'wss://purplepag.es', read: true, write: false }, // Profile aggregator ]; diff --git a/src/components/NostrSync.tsx b/src/components/NostrSync.tsx index 4e21768..ef6845c 100644 --- a/src/components/NostrSync.tsx +++ b/src/components/NostrSync.tsx @@ -16,7 +16,6 @@ const NEW_USER_RELAYS = [ { url: 'wss://auth.nostr1.com', read: true, write: true }, { url: 'wss://relay.ditto.pub', read: true, write: true }, { url: 'wss://relay.skate-spots.org', read: true, write: true }, - { url: 'wss://goskatespots.nostr1.com', read: true, write: true }, // legacy fallback { url: 'wss://purplepag.es', read: true, write: false }, ]; diff --git a/src/components/PlatformFeePayment.tsx b/src/components/PlatformFeePayment.tsx index 77b84fa..e34d771 100644 --- a/src/components/PlatformFeePayment.tsx +++ b/src/components/PlatformFeePayment.tsx @@ -43,7 +43,6 @@ interface PlatformFeePaymentProps { // Relays the provider should publish the zap receipt to (so we can verify it). const ZAP_RECEIPT_RELAYS = [ 'wss://relay.skate-spots.org', - 'wss://goskatespots.nostr1.com', 'wss://relay.nostr.band', 'wss://relay.damus.io', ]; diff --git a/src/hooks/useCVMClient.ts b/src/hooks/useCVMClient.ts index d9490ba..113b87e 100644 --- a/src/hooks/useCVMClient.ts +++ b/src/hooks/useCVMClient.ts @@ -30,7 +30,6 @@ import { verifyEvent } from 'nostr-tools'; */ const DATA_RELAYS = [ 'wss://relay.skate-spots.org', - 'wss://goskatespots.nostr1.com', 'wss://relay.ditto.pub', 'wss://relay.damus.io', ]; diff --git a/src/hooks/useDirectMessages.ts b/src/hooks/useDirectMessages.ts index cb8b369..19a83d5 100644 --- a/src/hooks/useDirectMessages.ts +++ b/src/hooks/useDirectMessages.ts @@ -51,7 +51,6 @@ const INBOX_DISCOVERY_RELAYS = [ 'wss://purplepag.es', 'wss://relay.ditto.pub', 'wss://relay.skate-spots.org', - 'wss://goskatespots.nostr1.com', 'wss://nos.lol', ]; diff --git a/src/test/TestApp.tsx b/src/test/TestApp.tsx index 8ccfb13..c63da0d 100644 --- a/src/test/TestApp.tsx +++ b/src/test/TestApp.tsx @@ -30,7 +30,6 @@ export function TestApp({ children }: TestAppProps) { { url: 'wss://auth.nostr1.com', read: true, write: true }, { url: 'wss://relay.ditto.pub', read: true, write: true }, { url: 'wss://relay.skate-spots.org', read: true, write: true }, - { url: 'wss://goskatespots.nostr1.com', read: true, write: true }, // legacy fallback { url: 'wss://purplepag.es', read: true, write: false }, ], updatedAt: 0,