SkateSpots/src/hooks
SkateSpots 124cac74fa fix(pro): stack Pro proofs + owner-grant fallback
#1 Extend now actually extends. useSasquatchPro collected receipts and took the
max of (receipt.created_at + tierDays), so buying again before expiry
under-delivered. It now stacks every valid proof with renewal semantics
(expiry = max(expiry, proofTime) + days), client and server alike.

#2 Owner-grant fallback. Pro can now also be granted by an owner-authored NIP-32
kind-1985 label (org.skatespots.pro, p = user, expiry) — so Pro is not solely
dependent on the Lightning provider publishing zap receipts. New owner-only
GrantProCard (Settings -> Advanced) publishes it to getWriteRelays(); the hook
reads via querySkateContent.

Protocol: the x-sasquatch-pro payload is now {receipts,grants}; BOTH ai-proxy and
the Netlify function accept the new payload and a bare receipt (old APKs). Proxy
was deployed first and verified healthy before this commit.
2026-09-28 18:58:25 +07:00
..
wallet chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
useActivityNotifications.ts chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
useAdminHide.ts feat(moderation): reversible verdicts (undo) + community photos as a signal 2026-09-28 01:06:04 +07:00
useAdminModeration.ts feat(moderation): reversible verdicts (undo) + community photos as a signal 2026-09-28 01:06:04 +07:00
useAppContext.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
useAuthor.ts Fix generic npub names: query profile aggregators in parallel in useAuthor 2026-07-25 14:01:55 +07:00
useBatchTrustScores.ts chore(lint): remove safely-detectable unused locals 2026-09-26 21:58:03 +07:00
useBTCMap.ts chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
useBtcMapPlaces.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useCitrine.ts Citrine audit: endpoint fallback, a11y, reduced-motion, UX polish (1.3.6) 2026-09-09 10:54:22 +07:00
useCoaches.ts #2 Reduce console noise: strip debug logs from relay queries, publish, trust score, weather, coaches, NostrSync 2026-08-27 10:17:01 +07:00
useCollectiveJoinRequests.ts Crew audit: fix member-clobber on rapid roster writes (1.2.37) 2026-09-08 00:02:30 +07:00
useCollectiveMembers.ts Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
useCommentCounts.ts Fix 78 pre-existing TypeScript errors surfaced by npm test 2026-09-03 21:18:02 +07:00
useComments.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useCordnChat.ts fix(amber): stop passive decryption from storming Amber on navigation (1.2.16) 2026-09-07 14:57:35 +07:00
useCrewActivity.ts Crews: proximity discovery, activity/rep signals, treasury, hiring pipeline, crew-hosted events + reverse links; add Contacts page 2026-07-25 12:38:45 +07:00
useCrewAgentChat.ts fix(pro): stack Pro proofs + owner-grant fallback 2026-09-28 18:58:25 +07:00
useCrewChatRead.ts feat: cross-device read-state + preference sync via encrypted NIP-78 2026-09-25 09:49:47 +07:00
useCrewChatUnread.ts Crew chat: unread dot on the Chat tab (cheap, honest, no bell spam) 2026-09-03 18:21:38 +07:00
useCrewDismissals.ts Crew dismissals: merge remote set before sync (close clobber pattern) 2026-09-07 20:46:46 +07:00
useCrewEvents.ts Crews: proximity discovery, activity/rep signals, treasury, hiring pipeline, crew-hosted events + reverse links; add Contacts page 2026-07-25 12:38:45 +07:00
useCrewFeed.ts Step 3: Crews — map-anchored collective feature (kind 35006) 2026-07-24 13:59:50 +07:00
useCrewGoal.ts security: verify invoice amounts + require provider-issued zap receipts (1.2.14) 2026-09-07 11:45:21 +07:00
useCrewInvites.ts Crew audit: fix member-clobber on rapid roster writes (1.2.37) 2026-09-08 00:02:30 +07:00
useCrewmates.ts Crews: proximity discovery, activity/rep signals, treasury, hiring pipeline, crew-hosted events + reverse links; add Contacts page 2026-07-25 12:38:45 +07:00
useCrewModeration.ts Add crew admin moderation + invite actions 2026-07-24 17:01:28 +07:00
useCrewNip05.ts Add soft NIP-05 verification for skaters (open directory + "Verified" filter) 2026-09-02 21:51:11 +07:00
useCrewNotifications.ts Lab collective join-requests → notification bell 2026-09-03 15:41:03 +07:00
useCrewRole.ts Add crew NIP-05 (any-domain, founder-verified) + founder/delegated-admin governance 2026-07-24 16:46:20 +07:00
useCrews.ts feat(moderation): report inbox, bulk undo, crews + Lab in the queue 2026-09-28 10:20:54 +07:00
useCrewsForSpot.ts Crews: proximity discovery, activity/rep signals, treasury, hiring pipeline, crew-hosted events + reverse links; add Contacts page 2026-07-25 12:38:45 +07:00
useCrewZap.ts security: verify invoice amounts + require provider-issued zap receipts (1.2.14) 2026-09-07 11:45:21 +07:00
useCurrentUser.ts Fix Amber native login in APK: reliable Capacitor detection (v1.1.7) 2026-08-27 14:00:39 +07:00
useCVMClient.ts fix(sasquatch): cover the organizer + barber Lab roles 2026-09-27 11:12:14 +07:00
useCVMServerHealth.ts fix(sasquatch): bound AI latency, separate system prompt, verify relay events 2026-09-27 10:32:07 +07:00
useDeleteEntity.ts fix(amber): Amethyst-style foreground-intent signer to end the GrapheneOS sign hang 2026-09-07 12:39:00 +07:00
useDirectMessages.ts fix(dm): read history from the user's real inbox relays, not a stale list 2026-09-28 14:13:51 +07:00
useDMRead.ts feat: cross-device read-state + preference sync via encrypted NIP-78 2026-09-25 09:49:47 +07:00
useDmRelays.ts feat(relays): NIP-17 DM inbox relays (kind 10050) 2026-09-26 21:32:53 +07:00
useEventRsvps.ts Route event notifications to the event, not the actor (1.2.35) 2026-09-07 22:56:20 +07:00
useEventUpdates.ts Give admins moderator control over events + fix a spoofing hole 2026-09-03 14:40:17 +07:00
useExchangeRate.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useFeaturedVerification.ts security: verify invoice amounts + require provider-issued zap receipts (1.2.14) 2026-09-07 11:45:21 +07:00
useFollowing.ts chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
useFollowList.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useFoodSpots.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useGeolocation.ts Crews: proximity discovery, activity/rep signals, treasury, hiring pipeline, crew-hosted events + reverse links; add Contacts page 2026-07-25 12:38:45 +07:00
useGigs.ts Interconnect Music ↔ Events: featured musician on events + gig list on musician profiles; count new Lab crafts in growth stats; document visibility/vouch/gig conventions in NIP.md 2026-08-10 22:02:22 +07:00
useGrowthStats.ts feat(lab): add Barber / Hairstylist profile (kind 35014) 2026-09-27 10:15:30 +07:00
useIsMobile.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useLabProfiles.ts feat(moderation): report inbox, bulk undo, crews + Lab in the queue 2026-09-28 10:20:54 +07:00
useLightningAddress.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useListingReports.ts refactor(relays): route every relay consumer through useRelays() 2026-09-26 22:36:14 +07:00
useListingRestrictions.ts fix(pro): single-source the platform Lightning address + show it to payers 2026-09-27 14:13:37 +07:00
useLocalStorage.ts fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
useLoggedInAccounts.ts chore(lint): remove safely-detectable unused locals 2026-09-26 21:58:03 +07:00
useLoginActions.ts Fix amber login type: use x-amber instead of amber 2026-07-09 14:57:20 +07:00
useMarketplace.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
useMarketplaceOffers.ts feat(offers): structured marketplace offers (kind 30403) with accept/decline 2026-09-26 23:17:51 +07:00
useMarkListingSold.ts chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
useMembershipAttestation.ts Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
useMintDirectory.ts fix(mints): native app fetched /api/mints from the local shell -> HTML/JSON error 2026-09-27 17:25:16 +07:00
useMyLabProfile.ts feat(lab): craft profiles are now editable + add a title/headline field 2026-09-27 00:17:05 +07:00
useNavPreferences.ts feat(app-shop): add the App Shop section (empty on purpose) 2026-09-27 21:40:41 +07:00
useNewsletterIssues.ts Add Nostr-native newsletter: subscribe, mailbox & notifications 2026-09-03 19:16:49 +07:00
useNewsletterRead.ts feat: cross-device read-state + preference sync via encrypted NIP-78 2026-09-25 09:49:47 +07:00
useNewsletterSubscriberCount.ts Newsletter: subscriber count + admin archive backfill to Nostr 2026-09-03 19:21:09 +07:00
useNewsletterSubscription.ts fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
useNostr.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
useNostrPublish.ts chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
useNotASpotReport.ts feat(spots): reports reach the admin, duplicates are caught, contributors are told 2026-09-28 09:45:36 +07:00
useNotificationsRead.ts feat: cross-device read-state + preference sync via encrypted NIP-78 2026-09-25 09:49:47 +07:00
useNutzap.ts chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
useNWC.ts feat(wallet): Lightning wallet over NWC (balance, receive, send) 2026-09-26 20:01:59 +07:00
useNWCContext.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useOfflineCache.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
usePersonalContext.ts fix(amber): stop global SasquatchGuide from decrypting the stash on every page 2026-09-07 19:15:00 +07:00
usePlatformFee.ts Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
usePostComment.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
usePreferences.ts feat: cross-device read-state + preference sync via encrypted NIP-78 2026-09-25 09:49:47 +07:00
usePrivateContacts.ts Private Contacts: fetch-before-write to prevent list clobber 2026-09-07 20:36:01 +07:00
usePurchasePro.ts refactor(relays): route every relay consumer through useRelays() 2026-09-26 22:36:14 +07:00
useQRCodeScanner.ts Add optional CLINK (noffer) self-custodial payments to Lab profiles + shops 2026-07-24 12:34:50 +07:00
useReadState.ts fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
useRecentReports.ts feat(moderation): report inbox, bulk undo, crews + Lab in the queue 2026-09-28 10:20:54 +07:00
useRelatrScore.ts Security hardening (audit F1-F4): secure Cashu seed in native Keychain/KeyStore with mandatory first-time backup; verify event signatures for trust scores (WoT + NIP-85 Relatr); add safeJson guard on config boot parse; delete dead CashuWallet.tsx with raw alert(mnemonic) 2026-09-24 18:13:58 +07:00
useRelayStatus.ts Polish relay list UI: match CitrineCard style, add Local chip, on-brand read/write chips, and live connection dots 2026-09-14 10:14:16 +07:00
useRiderStats.ts feat: SkateSpots Rider Cards — 3 card types, 6 themes, holographic shimmer, print-ready 2026-06-16 14:29:54 +07:00
useSasquatchActions.ts Sasquatch Pro Phase 2: action drafting (draft → you confirm) 2026-07-29 23:41:11 +07:00
useSasquatchAiStatus.ts feat(ai-proxy): run the AI proxy on the CVM host, ready to switch over 2026-09-28 13:32:05 +07:00
useSasquatchGuide.ts Fix Sasquatch "Learn More" landing on home instead of /onboarding 2026-08-27 11:20:53 +07:00
useSasquatchPro.ts fix(pro): stack Pro proofs + owner-grant fallback 2026-09-28 18:58:25 +07:00
useSellerInfo.ts refactor(relays): route every relay consumer through useRelays() 2026-09-26 22:36:14 +07:00
useSellerSales.ts chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
useShakespeare.ts chore: clean up console noise - remove debug logs from NostrProvider, NostrSync, useShakespeare 2026-06-16 22:23:00 +07:00
useShops.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
useSkateEvents.ts feat(quality): review queue for every kind, soft photo gate, empty-map nudge 2026-09-28 09:59:09 +07:00
useSkateNip05.ts feat(nip05): free name@skate-spots.org handles, claimed at signup 2026-09-28 12:13:34 +07:00
useSkateRelays.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
useSkaters.ts Add Skater profiles (kind 35000) + /skaters directory 2026-09-02 20:58:51 +07:00
useSkaterVerifications.ts Add soft NIP-05 verification for skaters (open directory + "Verified" filter) 2026-09-02 21:51:11 +07:00
useSkateShops.ts feat(quality): review queue for every kind, soft photo gate, empty-map nudge 2026-09-28 09:59:09 +07:00
useSkateSpots.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
useSpotChat.ts Add Spot Chat: ephemeral geohash-anchored local chat channels 2026-07-24 14:52:48 +07:00
useSpotCollections.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useSpotContributions.ts feat(moderation): reversible verdicts (undo) + community photos as a signal 2026-09-28 01:06:04 +07:00
useSpotReports.ts feat(spots): reports reach the admin, duplicates are caught, contributors are told 2026-09-28 09:45:36 +07:00
useSpotServices.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useSpotStatus.ts Add community Spot Status Reports (kind 2259) 2026-07-24 23:06:10 +07:00
useSpotWeather.ts #2 Reduce console noise: strip debug logs from relay queries, publish, trust score, weather, coaches, NostrSync 2026-08-27 10:17:01 +07:00
useStash.ts fix(amber): stop re-decrypting on every navigation 2026-09-27 13:28:36 +07:00
useStashShowcase.ts Rename "The Quiver" to "Stash" for brand consistency 2026-09-02 19:41:45 +07:00
useSyncedAppData.ts fix(amber,routing): scope Amber prompts to real actions; real per-mode routes + steps 2026-09-27 18:35:17 +07:00
useTheme.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
useToast.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
useTours.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
useTradeAttestations.test.ts feat(marketplace): mutual trade attestations + reputation (kind 31871) 2026-09-26 20:17:38 +07:00
useTradeAttestations.ts fix(nav,amber,reputation,routing): header crowding, no read-state popups, anti-collusion rep, instant directions 2026-09-27 16:42:39 +07:00
useTraderRecommendations.ts feat(trades): trusted-trader recommendations (31873) + offer DM nudges 2026-09-26 23:24:23 +07:00
useTrustScore.ts Security hardening (audit F1-F4): secure Cashu seed in native Keychain/KeyStore with mandatory first-time backup; verify event signatures for trust scores (WoT + NIP-85 Relatr); add safeJson guard on config boot parse; delete dead CashuWallet.tsx with raw alert(mnemonic) 2026-09-24 18:13:58 +07:00
useUploadFile.ts feat(offline): cache map tiles on-device + photo mirror fallback 2026-09-28 13:01:27 +07:00
useUserStatus.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useVouches.ts Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
useWallet.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
useZapLeaderboard.ts feat(leaderboards): zap leaderboards page (top spots + top supporters) 2026-09-26 17:17:21 +07:00
useZaps.ts refactor(relays): route every relay consumer through useRelays() 2026-09-26 22:36:14 +07:00
useZapTotals.test.ts test: cover zap helpers and newsletter data 2026-09-26 19:45:48 +07:00
useZapTotals.ts feat(leaderboards): zap leaderboards page (top spots + top supporters) 2026-09-26 17:17:21 +07:00