SkateSpots/src/components
SkateSpots dc0ae9bc32 feat(stats): admin backfill for legacy untagged spots/shops
Spots created before reverse geocoding have coordinates but no city/country
tag, so the map draws them while /stats can only show "Uncategorised". Counted
on the canonical relay: 54 raw -> 43 after admin-hide -> 13 tagged / 30
uncategorised, and 21 of the 30 are the two admin accounts' own pins.

useRegionBackfill finds the logged-in user's own untagged spots/shops, decodes
each pin's coords (lat/lon else geohash), reverse-geocodes via the shared
reverseGeocodeRegions(), and republishes the addressable event with the region
tags added - preserving every existing tag. Publishes to getWriteRelays()
(community + author) so the canonical stats see it, spaced 1.1s for Nominatim's
1 req/s policy. Surfaced as an admin-only RegionBackfillCard in Settings ->
Advanced.
2026-10-01 13:58:21 +07:00
..
auth feat(auth): NIP-49 encrypted keys + NIP-46 nostrconnect QR login 2026-10-01 12:00:08 +07:00
comments fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
crew fix(crew): stop overclaiming about public relays in the coordinator copy 2026-09-29 16:48:17 +07:00
onboarding #5 Reframe 'permanent/can't delete' copy around user data ownership & relay choice (onboarding, relay education, about) 2026-08-27 09:59:43 +07:00
ui fix(map): one close button on the spot sheet 2026-09-29 17:56:01 +07:00
wallet chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
ActivityNotificationCard.tsx Route event notifications to the event, not the actor (1.2.35) 2026-09-07 22:56:20 +07:00
AddPhotoToSpot.tsx feat(lab,spots): validate contact details + drag & drop photo upload 2026-09-27 09:46:37 +07:00
AddTagsToSpot.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
AddToCalendar.tsx Improve Create Tour: consistent schedules, calendar export & punk redesign 2026-09-09 22:16:16 +07:00
AddToCollectionDialog.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
AdminReviewCard.tsx feat(moderation): positive 'verified' verdict + trust/community signals in the review queue 2026-09-28 00:25:12 +07:00
AmberApprovalHint.tsx Amber UX: honest multi-approval hint for encrypted chat/DM sends 2026-09-07 20:08:39 +07:00
AppProvider.tsx fix(dms): DM inbox relays were wiped on every load, so DMs went nowhere 2026-09-27 19:58:54 +07:00
AttendeeList.tsx Host tools: attendee list w/ trust, event updates, edit-alerts, Hosting tab 2026-09-03 11:25:57 +07:00
AttendeeStack.tsx Events Phase 1: NIP-52 RSVPs, attendee stacks, date filter, host notifications 2026-09-03 10:47:57 +07:00
BackupReminder.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
BetaDisclaimerDialog.tsx Add first-launch beta disclaimer dialog + footer BETA badge 2026-08-01 12:14:42 +07:00
CameraCapture.tsx Fix Quick Snap opening gallery instead of camera on native (v1.0.70) 2026-07-24 19:47:36 +07:00
ClinkPayButton.tsx fix(ux): Batch D part 2 — Marketplace in the nav; Clink fallback copy 2026-09-26 18:05:15 +07:00
CollectiveJoinRequestCard.tsx Collective join-requests: one-tap approve from the bell 2026-09-03 15:49:49 +07:00
CollectiveMembers.tsx Add skate roles to the crew roster (filmer, photographer, etc.) 2026-09-03 00:07:30 +07:00
ConfirmMembershipCard.tsx Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
CoordinatorSettingsCard.tsx feat(transit): real itineraries — alternatives, leg-by-leg, mode badges 2026-10-01 10:58:27 +07:00
CraftProfileForm.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CrewAgentPanel.tsx feat(ux): graceful image fallbacks for broken content images (1.2.18) 2026-09-07 19:46:40 +07:00
CrewBadge.tsx 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
CrewChat.tsx chore(lint): clear all react-hooks/exhaustive-deps warnings 2026-09-26 22:09:43 +07:00
CrewForm.tsx fix(crew): stop overclaiming about public relays in the coordinator copy 2026-09-29 16:48:17 +07:00
CrewInviteCard.tsx fix(a11y): Batch E part 1 — labels, valid nesting, touch targets 2026-09-26 18:46:51 +07:00
CrewInviteDialog.tsx fix(ux): Batch A part 2 — stash, crew invites, map marker 2026-09-26 17:47:38 +07:00
CrewLinkField.tsx Mutual crew<->Lab link verification (trust badge) + polish 2026-09-03 15:29:57 +07:00
CrewLookingFor.tsx 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
CrewNip05Badge.tsx Add crew NIP-05 (any-domain, founder-verified) + founder/delegated-admin governance 2026-07-24 16:46:20 +07:00
CrewRequestToJoin.tsx Add sponsor picker + notifiable crew join-requests 2026-09-03 00:23:55 +07:00
CrewsForSpotCard.tsx 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
CrewTreasuryCard.tsx 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
CrossLinkCards.tsx feat(ux): graceful image fallbacks for broken content images (1.2.18) 2026-09-07 19:46:40 +07:00
CustomizeNavSheet.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
CVMHealthCheck.tsx Make Sasquatch tell the truth: direct relay queries, not a CVM server 2026-09-10 00:16:59 +07:00
DeckRating.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
DeepLinkHandler.tsx fix(amber): call setPackageName before signing so the plugin opens Amber (1.2.9) 2026-09-04 21:44:27 +07:00
DeleteEntityDialog.tsx Marketplace: give sellers real listing management (mark sold / relist / delete) (1.2.30) 2026-09-07 22:24:47 +07:00
DesktopNavManager.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
DestinationSearch.tsx feat(routing): destination search inside the directions dialog 2026-09-29 18:10:40 +07:00
EditProfileForm.tsx feat(coordinator): profile discovery — publish yours, add theirs in one tap 2026-09-29 16:17:16 +07:00
EmptyState.tsx fix(a11y): Batch E part 1 — labels, valid nesting, touch targets 2026-09-26 18:46:51 +07:00
EntityTypeField.tsx Add individual/collective entity type + NIP-32 membership attestation to The Lab 2026-07-24 13:18:18 +07:00
ErrorBoundary.tsx Hardening: https-only URLs, route-level crash resilience, cleaner errors (1.4.3) 2026-09-09 12:40:43 +07:00
ErrorState.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EscrowPanel.tsx feat(marketplace): wire Cashu escrow into the trade flow (native) 2026-09-26 21:08:36 +07:00
EscrowRequestDialog.tsx feat(marketplace): wire Cashu escrow into the trade flow (native) 2026-09-26 21:08:36 +07:00
EventCard.tsx Events discovery polish + real bug/perf fixes across the grid 2026-09-03 14:47:02 +07:00
EventCountdown.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
EventsCalendar.tsx fix(ux): calendar 'Past' opens on the newest month with events 2026-09-26 19:09:21 +07:00
EventSponsors.tsx Event detail hero redesign + live countdown + sponsors 2026-09-03 12:04:07 +07:00
EventUpdates.tsx Give admins moderator control over events + fix a spoofing hole 2026-09-03 14:40:17 +07:00
FeaturedEventUpgrade.tsx Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
FollowListManager.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
FounderFollow.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
FundingGoalCard.tsx feat(events): crowdfunding funding goals via zaps 2026-09-26 17:24:42 +07:00
GearSwapItemCard.tsx perf(marketplace): lazy-mount grid cards + open the detail page on click 2026-09-26 23:08:01 +07:00
GrantProCard.tsx fix(pro): stack Pro proofs + owner-grant fallback 2026-09-28 18:58:25 +07:00
HostingDashboard.tsx Host tools: attendee list w/ trust, event updates, edit-alerts, Hosting tab 2026-09-03 11:25:57 +07:00
ImageLightbox.tsx feat(spot): full-screen photo lightbox for spot galleries 2026-09-26 17:03:30 +07:00
ImageWithFallback.tsx feat(offline): cache map tiles on-device + photo mirror fallback 2026-09-28 13:01:27 +07:00
JoinRequestCard.tsx Admins can endorse join-requests; founder ratifies (kind 9087) 2026-09-03 01:40:04 +07:00
LabCrewsStrip.tsx feat(lab): add Barber / Hairstylist profile (kind 35014) 2026-09-27 10:15:30 +07:00
LabLinkField.tsx feat(lab): add Barber / Hairstylist profile (kind 35014) 2026-09-27 10:15:30 +07:00
LabProUpgrade.tsx Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
LanguageToggle.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
Layout.tsx ui(map): float the mobile toolbar so the map fills the screen 2026-09-29 17:05:20 +07:00
LazyMount.tsx perf(marketplace): lazy-mount grid cards + open the detail page on click 2026-09-26 23:08:01 +07:00
ListingOffersPanel.tsx feat(market): first-class barter in offers (item tag) 2026-09-29 18:50:40 +07:00
ListingTradeActions.tsx feat(mints,escrow): MintRadar polish + escrow status in shared actions 2026-09-26 22:39:58 +07:00
MapSkeletonPins.tsx Map Pass 1: crisp pins, spot-type & shelter glyphs, floating loading, micro-interactions 2026-09-10 18:46:15 +07:00
MarketplaceItemCard.tsx feat(marketplace): listing detail page + shared trade/escrow actions 2026-09-26 22:30:43 +07:00
MarkSoldDialog.tsx feat(marketplace): mutual trade attestations + reputation (kind 31871) 2026-09-26 20:17:38 +07:00
MemberVisibilityControl.tsx Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
MyDataTab.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
NewMessageDialog.tsx feat(dm): create group DMs from the New Message picker 2026-09-26 19:55:03 +07:00
NewsletterBackfillPanel.tsx fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
NewsletterComposer.tsx fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
NewsletterIssueView.tsx fix(newsletter): render _underscore italics_ in issue bodies 2026-09-27 20:34:31 +07:00
NewsletterOverlay.tsx fix(newsletter): infinite render loop + issues published to the wrong relays 2026-09-27 17:40:02 +07:00
NewsletterSubscribeButton.tsx Add Nostr-native newsletter: subscribe, mailbox & notifications 2026-09-03 19:16:49 +07:00
Nip05Required.tsx Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
NofferField.tsx Add clinkme.dev specs and apps page links across the app 2026-08-19 15:13:32 +07:00
NostrProvider.tsx chore(relays): drop the dead wotr.relatr.xyz from default relay lists 2026-09-28 18:13:19 +07:00
NostrSync.tsx chore(relays): drop the dead wotr.relatr.xyz from default relay lists 2026-09-28 18:13:19 +07:00
NoteContent.test.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
NoteContent.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
NotificationBell.tsx feat(bell): dedicated Trades tab 2026-09-29 18:42:24 +07:00
NotificationSettingsCard.tsx feat(notify): opt-in on-device OS notifications (Phase 1) 2026-09-29 12:59:13 +07:00
OfferDialog.tsx feat(market): first-class barter in offers (item tag) 2026-09-29 18:50:40 +07:00
OfficialBadge.tsx security: implement all 8 protection measures 2026-06-18 14:03:15 +07:00
OfflineIndicator.tsx feat(offline): actually wire up the offline write queue 2026-09-29 21:42:50 +07:00
OsNotificationBridge.tsx fix(map): stop the offline banner sticking; feat(trades): notify trade confirmations 2026-09-29 21:06:04 +07:00
PageHeader.tsx feat(ui): adopt the shared PageHeader on Wallet, CreateListing, GearSwap, Messages 2026-09-26 19:23:01 +07:00
PaymentReadinessNote.tsx Lab: payment-readiness prompt on every provider form + drop downhill/longboard from judge 2026-09-03 15:21:34 +07:00
PhotoDropzone.tsx feat(lab,spots): validate contact details + drag & drop photo upload 2026-09-27 09:46:37 +07:00
PlatformFeePayment.tsx Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
ProBadge.tsx Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
ProfileBadges.tsx feat(profile): badges — clickable chips + a SkateSpots member badge 2026-09-28 19:40:19 +07:00
ProfilePreviewCard.tsx ui(settings): give Edit Profile a real preview, honest reload, and a finish checklist 2026-09-29 14:27:20 +07:00
PWAInstallPrompt.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
QualityMeter.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
RegionBackfillCard.tsx feat(stats): admin backfill for legacy untagged spots/shops 2026-10-01 13:58:21 +07:00
RelatrSettings.tsx chore(lint): remove safely-detectable unused locals 2026-09-26 21:58:03 +07:00
RelayListManager.tsx feat(settings,map,docs): polish Relays UI, drop desktop Near Me, remove NoGood Radio 2026-09-26 23:37:32 +07:00
ReportDialog.tsx feat(spots): honest quality signals, photo required, off-topic reports, admin review queue 2026-09-27 23:41:49 +07:00
ReportsInbox.tsx feat(moderation): report inbox, bulk undo, crews + Lab in the queue 2026-09-28 10:20:54 +07:00
ReportSpotStatusDialog.tsx Add community Spot Status Reports (kind 2259) 2026-07-24 23:06:10 +07:00
RequestToJoinCollective.tsx Collective join-requests: one-tap approve from the bell 2026-09-03 15:49:49 +07:00
RouteDialog.tsx feat(routes): give the map less of the screen; move the handoff note to /privacy 2026-10-01 11:21:30 +07:00
RouteErrorBoundary.tsx Hardening: https-only URLs, route-level crash resilience, cleaner errors (1.4.3) 2026-09-09 12:40:43 +07:00
RsvpButtons.tsx Events Phase 1: NIP-52 RSVPs, attendee stacks, date filter, host notifications 2026-09-03 10:47:57 +07:00
SasquatchActionCard.tsx Sasquatch Pro Phase 2: action drafting (draft → you confirm) 2026-07-29 23:41:11 +07:00
SasquatchAiStatusCard.tsx feat(sasquatch): align client models with the node + owner AI-balance nudge 2026-09-27 15:27:32 +07:00
SasquatchGuide.tsx fix(ui): unblock the zoom control, tidy Go Pro, and make the route map bigger 2026-09-29 17:30:25 +07:00
SasquatchProDialog.tsx feat(pro): honest personal context, wanted-ads draft, days-left, live USD, copy 2026-09-28 19:05:54 +07:00
ScrollToTop.tsx New project created with Shakespeare 2026-06-15 19:49:07 +07:00
SecuritySettings.tsx Make backup gently unavoidable, not skippable-forever (1.3.13) 2026-09-09 11:23:44 +07:00
SellerDashboard.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
SetStatusDialog.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
ShareProfileDialog.tsx ShareProfileDialog: no horizontal scroll + canonical share URL 2026-09-02 22:16:09 +07:00
ShopBountyCard.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
SkateGlobe.tsx Fix ESLint gate: scope ignores to app source (exclude android/.agents/cvm-server/public html/scripts), add index.html title, downgrade unused-vars & no-explicit-any to warnings, fix real lint errors (SkateGlobe unused-expr, EventsPage prefer-const, LicensePage Infinity shadow, useless-escape in SasquatchGuide/RiderCardPage, stale eslint-disable directives) 2026-09-03 21:30:56 +07:00
SkateNip05Input.tsx feat(nip05): free name@skate-spots.org handles, claimed at signup 2026-09-28 12:13:34 +07:00
SkaterDirectoryCard.tsx refactor: consolidate become-* routes + migrate empty states to shared component 2026-09-24 18:44:53 +07:00
SortDropdown.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
SpamFeePayment.tsx chore(lint): clear all react-hooks/exhaustive-deps warnings 2026-09-26 22:09:43 +07:00
SplashScreen.tsx Elevate splash to premium, choreographed launch (1.4.2) 2026-09-09 12:19:17 +07:00
SponsorSlot.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
SpotCard.tsx Add spot "Shelter" (weather protection) field 2026-09-10 11:38:43 +07:00
SpotChat.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
SpotMap.tsx perf(map): batch + de-dupe marker rendering so pins appear faster 2026-09-29 12:45:59 +07:00
SpotOwnership.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
SpotPicker.tsx fix(ux): Batch F part 1 — false 'no spots' while loading; calendar filter leak 2026-09-26 18:49:14 +07:00
SpotStatusBadge.tsx Add community Spot Status Reports (kind 2259) 2026-07-24 23:06:10 +07:00
StopDepartures.tsx feat(transit): depart/arrive time picker, mode filters, and stop boards 2026-10-01 11:14:34 +07:00
SupportSkateSpots.tsx feat(support): reusable 'Keep the map free' element on About 2026-09-28 21:54:30 +07:00
TagInput.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
ThemeToggle.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
TourCard.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
TradeConfirmRow.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
TradeNotificationCard.tsx feat(transit): real itineraries — alternatives, leg-by-leg, mode badges 2026-10-01 10:58:27 +07:00
TradeRecommendationsCard.tsx feat(trades): trusted-trader recommendations (31873) + offer DM nudges 2026-09-26 23:24:23 +07:00
TradeReputationCard.tsx fix(nav,amber,reputation,routing): header crowding, no read-state popups, anti-collusion rep, instant directions 2026-09-27 16:42:39 +07:00
TradeReputationPanel.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
TripItineraryCard.tsx feat(sasquatch): add Trip Planner + tougher free-tier fallback + new joke book 2026-07-30 00:04:28 +07:00
TrustBadge.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
TrustFilter.tsx refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
UserStatusIndicator.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
VouchCard.tsx Crews: opt-in member visibility + Lab vouch/web-of-trust anti-fraud + CrewDetail redesign 2026-08-10 21:01:57 +07:00
WalletModal.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
WeatherToggle.tsx fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
WhosSkating.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
ZapBadgesCard.tsx feat(profile): zap badges (achievements) card 2026-09-26 17:22:06 +07:00
ZapButton.tsx feat(zaps): show zap totals to everyone, not just logged-in users 2026-09-26 17:06:25 +07:00
ZapCrewDialog.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
ZapDialog.tsx Fix Cashu zap: pay in one click + honor custom-amount balance guard 2026-09-07 20:15:10 +07:00