From 677ccb8a82eb0a20a6ac3a2b0b9fead0c15d9e9c Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 27 Aug 2026 14:54:00 +0700 Subject: [PATCH] v1.2.0: Spedn label, multi-relay community stats, GrapheneOS Near-Me fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Map filter: renamed the "Bitcoin" toggle to "Spedn" (matches the toolbar button); tooltip now says "Spedn your sats". 2. Community stats (/stats): useGrowthStats now queries the same relay set as the rest of the app (community relay + user relays) via useSkateRelays instead of only the single hardcoded SKATE_RELAY. Lab profiles / spots / etc. that live on a user's own relay are now counted, so the numbers match what /lab shows. 3. Near Me on GrapheneOS: even after granting the OS location permission, the WebView's navigator.geolocation stays blocked → "permission denied". Fixed by fetching the position from the native Capacitor Geolocation plugin first (LocationManager, honours the granted permission), falling back to navigator.geolocation only if that fails. Also auto-inject ACCESS_FINE/COARSE_LOCATION into AndroidManifest via the manifest script. Bump version to 1.2.0 (versionCode 10200). Co-authored-by: shakespeare.diy --- package.json | 2 +- scripts/inject-amber-queries.mjs | 45 ++++++++++++++++++++-------- src/hooks/useGrowthStats.ts | 34 ++++++++++++---------- src/lib/geolocation.ts | 50 ++++++++++++++++++++++++++------ src/pages/MapPage.tsx | 6 ++-- 5 files changed, 96 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 97dd13e..6eedbf8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "skate-spots", "private": true, - "version": "1.1.9", + "version": "1.2.0", "type": "module", "homepage": "https://skate-spots.com", "scripts": { diff --git a/scripts/inject-amber-queries.mjs b/scripts/inject-amber-queries.mjs index bfdbef6..a5e9c66 100644 --- a/scripts/inject-amber-queries.mjs +++ b/scripts/inject-amber-queries.mjs @@ -29,13 +29,17 @@ if (!existsSync(manifestPath)) { } let manifest = readFileSync(manifestPath, 'utf8'); +let changed = false; -if (manifest.includes('android:scheme="nostrsigner"')) { - console.log('[inject-amber-queries] already present — nothing to do.'); - process.exit(0); +// Insert right before the closing tag. +if (!manifest.includes('')) { + console.error('[inject-amber-queries] No closing tag found — aborting.'); + process.exit(1); } -const queriesBlock = ` @@ -46,14 +50,31 @@ const queriesBlock = `