SkateSpots/src/lib
SkateSpots ec06a63b01 feat(ai-proxy): run the AI proxy on the CVM host, ready to switch over
Same proxy as netlify/functions/ai.mjs, rebuilt as a standalone Bun service on
the CVM host so AI calls stop spending Netlify compute/bandwidth credits and
the sats-paid Routstr key lives on our box.

- ai-proxy/server.ts: Bun.serve on 127.0.0.1:8787 — NIP-98 + Pro gate, model
  allowlist, per-IP throttle, /api/ai + /api/ai/status. Own tsconfig
  (typecheck:ai in npm test); eslint-ignored like cvm-server.
- ai-proxy/{package.json,.env.example,skatespots-ai.service,Caddyfile,DEPLOY.md}.
- scripts/deploy-ai-proxy.sh (npm run deploy:ai): scp + bun install + unit +
  restart, mirroring deploy-cvm.sh.
- Client: one place decides the AI base, src/lib/sasquatchAi.ts (also the NIP-98
  u tag). Defaults unchanged (/api/ai on Netlify); set VITE_SASQUATCH_AI_BASE to
  move it. Fully reversible.

Deployed and verified on the host: /api/ai/status returns the live Routstr
balance. Public TLS (DNS + Caddy) is the remaining step before switching the app
over, so no client behaviour changes yet.
2026-09-28 13:32:05 +07:00
..
cordn Cordn crew chat: ephemeral envelopes (coordinator can't see the sender) 2026-09-03 18:14:58 +07:00
stubs feat: map as homepage, 3D globe, camera fix, Sasquatch upgrades, UI/UX polish 2026-07-22 22:47:39 +07:00
wallet fix: remove orphaned canvas code from RiderCardPage causing ctx/Printer is not defined crash 2026-06-16 17:02:59 +07:00
admins.ts Spot detail: make mapper clickable + add Message Mapper button 2026-08-15 10:03:58 +07:00
amber.ts chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
becomeRoles.tsx feat(lab): add Barber / Hairstylist profile (kind 35014) 2026-09-27 10:15:30 +07:00
bolt11.test.ts test: fix incorrect bolt11 fixtures (210n = 21 sats, not 2100n) 2026-09-24 20:12:20 +07:00
bolt11.ts Add dependency-free BOLT11 amount decoder; drop removed nip57 helper 2026-09-03 22:20:27 +07:00
cachedTileLayer.ts feat(offline): cache map tiles on-device + photo mirror fallback 2026-09-28 13:01:27 +07:00
calendar.ts Improve Create Tour: consistent schedules, calendar export & punk redesign 2026-09-09 22:16:16 +07:00
capacitorAmberSigner.ts fix(amber): Amethyst-style foreground-intent signer to end the GrapheneOS sign hang 2026-09-07 12:39:00 +07:00
cashuEscrow.test.ts feat(marketplace): Cashu escrow core (time-locked P2PK) + design 2026-09-26 21:01:31 +07:00
cashuEscrow.ts feat(marketplace): Cashu escrow core (time-locked P2PK) + design 2026-09-26 21:01:31 +07:00
citrine.ts fix: make relay-probe timers and effect hooks lint-clean across ESLint versions 2026-09-24 19:55:38 +07:00
crewAgent.ts Update Sasquatch avatar to the correct mascot image 2026-09-03 18:59:05 +07:00
crewHelpers.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
exchangeRateService.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
genUserName.test.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
genUserName.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
geolocation.ts feat(directions): follow mode, choose-your-start, offline route cache 2026-09-27 19:11:14 +07:00
glossary.ts Glossary: drop difficulty levels, expand & correct tricks 2026-07-29 23:08:37 +07:00
imageFallback.ts feat(offline): cache map tiles on-device + photo mirror fallback 2026-09-28 13:01:27 +07:00
lastLocation.ts Instant cold-start: query persistence, optimistic geolocation, skeleton pins 2026-09-09 21:58:22 +07:00
lazyWithRetry.ts fix(routes): self-healing lazy routes; document dev dep-cache crash 2026-09-26 20:36:14 +07:00
lightningAddress.ts Add duration tiers + layered NIP-57 zap verification, extend featured/Pro to tours 2026-07-24 16:18:15 +07:00
localModeration.ts feat(moderation): reversible verdicts (undo) + community photos as a signal 2026-09-28 01:06:04 +07:00
mintReachability.ts Platform-aware wallet mints (Option C: native + browser scoping) 2026-07-24 17:22:41 +07:00
newsletterArticle.ts feat(newsletter): add Drop #006 to the archive (+cover support), incl. Sasquatch and Mints 2026-09-27 20:26:14 +07:00
newsletterIssues.test.ts test: cover zap helpers and newsletter data 2026-09-26 19:45:48 +07:00
newsletterIssues.ts feat(newsletter): add Drop #006 to the archive (+cover support), incl. Sasquatch and Mints 2026-09-27 20:26:14 +07:00
nip05.ts Add soft NIP-05 verification for skaters (open directory + "Verified" filter) 2026-09-02 21:51:11 +07:00
nip05Providers.ts Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
nip06.test.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
nip06.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
offlineCache.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
platform.ts fix(pro): single-source the platform Lightning address + show it to payers 2026-09-27 14:13:37 +07:00
polyfills.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
proAuth.ts feat(ai-proxy): run the AI proxy on the CVM host, ready to switch over 2026-09-28 13:32:05 +07:00
queryPersister.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
quickCapture.ts Fix Quick Snap opening gallery instead of camera on native (v1.0.70) 2026-07-24 19:47:36 +07:00
relatr.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
relayAdmin.ts Add real relay-level takedown (NIP-86 banevent) for admin deletes 2026-09-03 23:07:14 +07:00
relayProbe.ts fix: make relay-probe timers and effect hooks lint-clean across ESLint versions 2026-09-24 19:55:38 +07:00
relays.ts feat(relays): Local + Blocked relay categories 2026-09-26 21:26:13 +07:00
routeCache.ts feat(directions): follow mode, choose-your-start, offline route cache 2026-09-27 19:11:14 +07:00
routing.ts fix(amber,routing): scope Amber prompts to real actions; real per-mode routes + steps 2026-09-27 18:35:17 +07:00
safeJson.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
sanitizeUrl.test.ts test: add unit tests for bolt11, verifyInvoice, and sanitizeUrl (audit 5.5) 2026-09-24 19:41:42 +07:00
sanitizeUrl.ts feat(lab,spots): validate contact details + drag & drop photo upload 2026-09-27 09:46:37 +07:00
sasquatchAi.ts feat(ai-proxy): run the AI proxy on the CVM host, ready to switch over 2026-09-28 13:32:05 +07:00
sasquatchBrain.ts feat(ai-proxy): run the AI proxy on the CVM host, ready to switch over 2026-09-28 13:32:05 +07:00
sasquatchPro.ts fix(pro): single-source the platform Lightning address + show it to payers 2026-09-27 14:13:37 +07:00
secureStorage.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
signerCapabilities.ts fix(amber): stop passive decryption from storming Amber on navigation (1.2.16) 2026-09-07 14:57:35 +07:00
skateboardRating.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00
skateNip05.ts feat(offline): the map survives a dead relay (and says so) + skater@skate-spots.org 2026-09-28 12:48:54 +07:00
skateTags.ts Add spot "Shelter" (weather protection) field 2026-09-10 11:38:43 +07:00
sortOptions.ts refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
spotQuality.ts feat(quality): review queue for every kind, soft photo gate, empty-map nudge 2026-09-28 09:59:09 +07:00
spotStatus.ts Add community Spot Status Reports (kind 2259) 2026-07-24 23:06:10 +07:00
tileCache.ts feat(offline): cache map tiles on-device + photo mirror fallback 2026-09-28 13:01:27 +07:00
tripPlanner.ts feat(sasquatch): add Trip Planner + tougher free-tier fallback + new joke book 2026-07-30 00:04:28 +07:00
trustFilter.ts refactor: split non-component exports (react-refresh) into their own modules 2026-09-26 23:29:42 +07:00
types.ts feat(moderation): reversible verdicts (undo) + community photos as a signal 2026-09-28 01:06:04 +07:00
utils.ts New project created with Shakespeare 2026-06-15 19:49:07 +07:00
verifyEvents.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
verifyInvoice.test.ts test: fix incorrect bolt11 fixtures (210n = 21 sats, not 2100n) 2026-09-24 20:12:20 +07:00
verifyInvoice.ts security: verify invoice amounts + require provider-issued zap receipts (1.2.14) 2026-09-07 11:45:21 +07:00
videoEmbed.ts Add "The Part" — crew video/montage (YouTube + Instagram) 2026-09-02 23:59:50 +07:00
weather.ts fix: restore full skate-spots source tree from misplaced src/src/ copy 2026-06-15 22:18:28 +07:00