SkateSpots/src/pages
SkateSpots 5a8e3688ee feat(stash): readable offline + export/import backup
The private stash was deny-listed from persistence with no local cache, so an
offline or relay-outage cold start showed an EMPTY stash even though decrypting
needs no network.

- offlineCache v2 adds a 'stash' table storing the encrypted CIPHERTEXT (never
  the decrypted list). useStash caches it on every successful fetch, and both
  the read query and fetchLatestStash (the pre-write re-fetch) fall back to it --
  so the stash loads at the park and an offline edit rebuilds from the real list
  instead of throwing.
- /stash gains a 'Backup & transfer' card (desktop sidebar + mobile) with
  Export (a JSON you control) and Import (one re-encrypt, skipping
  title+category+size duplicates).
2026-09-29 22:20:50 +07:00
..
AboutPage.tsx ui(support): move 'Keep the map free' from /about to /supporters 2026-09-29 11:08:57 +07:00
AdminReviewPage.tsx contents(admin): tidy the review queue + add gallery screenshots 2026-09-28 11:08:31 +07:00
AmberCallbackPage.tsx ux: migrate more empty states + fill in missing page titles (U1/U2) 2026-09-24 18:50:25 +07:00
AppShopPage.tsx contents(app-shop): move the free printables into the 'Sticker packs' entry 2026-09-28 11:21:03 +07:00
BecomeBuilderPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BecomeCoachPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BecomeEditorPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BecomeFilmerPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BecomePhotographerPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BecomeRolePage.tsx refactor: consolidate become-* routes + migrate empty states to shared component 2026-09-24 18:44:53 +07:00
BecomeSkaterPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
BountyLeaderboardPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CoachDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CollectionDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CommunityStatsPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
ContactsPage.tsx fix(dm): read history from the user's real inbox relays, not a stale list 2026-09-28 14:13:51 +07:00
ConversationPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CreateCrewPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CreateEventPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CreateListingPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CreateShopPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CreateSpotPage.tsx feat(spots): make reports act, add a publish floor, stop junk looking endorsed 2026-09-28 19:32:01 +07:00
CreateTourPage.tsx fix(pro): single-source the platform Lightning address + show it to payers 2026-09-27 14:13:37 +07:00
CrewDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
CrewsPage.tsx ui: mint details sheet, crews type filter, smoother directions 2026-09-29 17:47:58 +07:00
DirectMessagesPage.tsx fix(dm): read history from the user's real inbox relays, not a stale list 2026-09-28 14:13:51 +07:00
EditCrewPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EditEventPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EditShopPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EditSpotPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EditTourPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EventDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
EventsPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
FAQPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
FoodPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
GearSwapPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
GlossaryPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
GroupConversationPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
Index.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
LabPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
LicensePage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
ListingDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
MapPage.tsx fix(map): stop the offline banner sticking; feat(trades): notify trade confirmations 2026-09-29 21:06:04 +07:00
MarketplaceHubPage.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
MarketplacePage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
MintsPage.tsx feat(mints): surface MintRadar's community ratings, reliability and audit data 2026-09-29 18:02:57 +07:00
NewsletterPage.tsx feat(newsletter): add Drop #006 to the archive (+cover support), incl. Sasquatch and Mints 2026-09-27 20:26:14 +07:00
NIP19Page.tsx feat(coordinator): profile discovery — publish yours, add theirs in one tap 2026-09-29 16:17:16 +07:00
NotFound.tsx New project created with Shakespeare 2026-06-15 19:49:07 +07:00
OnboardingPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
PrivacyPage.tsx docs(privacy): disclose the BTCMap layer and how zaps identify you 2026-09-28 18:27:53 +07:00
PyramidPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
RiderCardPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
SettingsPage.tsx feat(coordinator): Cordn client slice — pick/add a coordinator + run-your-own hand-off 2026-09-29 15:11:36 +07:00
ShopDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
SignersPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
SkatersPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
SpotCollectionsPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
SpotDetailPage.tsx feat(spots): make reports act, add a publish floor, stop junk looking endorsed 2026-09-28 19:32:01 +07:00
StashPage.tsx feat(stash): readable offline + export/import backup 2026-09-29 22:20:50 +07:00
SupportersPage.tsx ui(support): move 'Keep the map free' from /about to /supporters 2026-09-29 11:08:57 +07:00
TourDetailPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
TradesPage.tsx feat(marketplace): 1-10 deck ratings + seller dashboard 2026-09-27 16:26:24 +07:00
WalletPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00
ZapLeaderboardPage.tsx refactor(layout): hoist Layout into the router so the chrome mounts once 2026-09-27 13:41:42 +07:00