feat(relay): retire the legacy hosted relay from the app + servers
Verified the legacy relay held the same 115 events as the new one (0 diff) before removing it, so no data is lost. Drops wss://goskatespots.nostr1.com from the default pools, the DM/CVM/zap relay arrays, and the cvm-server + push-service defaults.
This commit is contained in:
parent
36d87c273f
commit
6efd6b8deb
10 changed files with 10 additions and 13 deletions
12
AGENTS.md
12
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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue