Commit Graph

1008 Commits

Author SHA1 Message Date
Jeff Emmett a0723e261a fix(rbooks): use imported randomUUID() instead of crypto.randomUUID()
crypto.randomUUID() crashes in the server context during demo space
initialization, causing 502 Bad Gateway on /rbooks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 14:29:13 -07:00
Jeff Emmett fdf2a429f5 fix(rwallet): populate yield APY stats, hide top tabs on yield view
- Fix DeFi Llama field mapping: use apyMean30d + apyPct7D (apyMean7d
  doesn't exist in their API)
- Add apyBase, apy30d fields to YieldOpportunity type
- Deduplicate rates table (best APY per protocol+chain+asset)
- Hide "My Wallets / Wallet Visualizer" top tab bar on yield page
- Color-code APY values, better TVL formatting (B/M)
- Bump JS cache to v=11

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 12:41:11 -07:00
Jeff Emmett f9d4164f28 chore(rwallet): bump JS cache version to v=10
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 12:35:34 -07:00
Jeff Emmett 6d40904fa7 fix(rwallet): yield page renders standalone without wallet detection
Force topTab=visualizer and skip hero/address/features/examples when
activeView is yield. Works for both authenticated and anonymous users.
Yield rates auto-load on page init without requiring a wallet address.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 12:33:40 -07:00
Jeff Emmett 36d36b97ce Merge branch 'dev' 2026-03-15 12:15:33 -07:00
Jeff Emmett 374f4adccb chore(backlog): add tasks 111-117 — rMortgage, yield, Braid, payment-infra open items
- TASK-111: rMortgage sub-tab (Done)
- TASK-112: Auto-yield Aave V3 + Morpho Blue (Done)
- TASK-113: Braid transport + SimpletonClient (Done)
- TASK-114: Get Transak API credentials (To Do, signup required)
- TASK-115: Get Basescan API key (To Do, signup required)
- TASK-116: Test CRDT escrow on Base Sepolia (To Do, signup required)
- TASK-117: Deploy escrow to Base mainnet (To Do, blocked by 114-116)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 12:15:25 -07:00
Jeff Emmett dda7df99ad Merge branch 'dev' 2026-03-15 12:13:25 -07:00
Jeff Emmett 8da42095c6 fix(rwallet): show yield rates standalone on /yield page
Yield tab now auto-loads rates on page init and renders independently
of wallet detection — no longer gated behind hasData(). Shows rates
comparison table, header with description, and back button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 11:58:02 -07:00
Jeff Emmett 3436393bfb feat(rwallet): add Aave V3 + Morpho Blue auto-yield for idle treasury
Adds yield-generating capability for idle stablecoins (USDC/USDT/DAI)
on Ethereum and Base via Aave V3 and Morpho Blue vaults, using the
existing Safe multisig proposal flow for governance.

New lib files: yield-protocols (constants/ABIs), yield-rates (DeFi Llama
+ Morpho GraphQL with 5min cache), yield-positions (on-chain queries),
yield-tx-builder (MultiSend calldata for Safe proposals),
yield-strategy (idle detection + allocation suggestions).

5 API routes, "Yield" view tab with rates table, position cards, and
advisory strategy suggestions. Zero new dependencies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 10:17:54 -07:00
Jeff Emmett 2264267ded feat(rflows): floating play button, auto-start demo, minimizable panels
- Add prominent floating Play/Pause FAB button (bottom center)
  with glow effect and pulse animation while running
- Auto-start simulation for demo and sim-demo flows on load
- Analytics panel now has a minimize button (◀/▶) to collapse
  to a narrow strip, preserving screen space
- Keep existing toolbar Play button for discoverability

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:15:21 +00:00
Jeff Emmett 99131df914 fix(rMortgage): use 5/10/15yr borrower term options
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:18:57 -07:00
Jeff Emmett a1f8702988 feat(rMortgage): aggregate pool viz, earnings comparison, fewer tranches
- Pool summary cards clickable → aggregate breakdown vessel showing
  total outstanding/repaid/reinvested with earnings comparison bar
- Lender detail: earnings bar (interest vs reinvestment), advantage
  callout showing % gain from reinvesting returns
- Borrower options reduced from 6 to 3 tranches (10yr, 20yr, 30yr)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:14:39 -07:00
Jeff Emmett d955d18af4 fix(build): use regex pattern for three.js externalization in rsplat
The string pattern "three/addons/" didn't match "three/examples/jsm/..."
imports, causing vite build to fail on a clean Docker build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:28:31 -07:00
Jeff Emmett 600e9080d0 feat(rflows): add rMortgage sub-tab with trust-backed lending & DeFi reinvestment
Social mortgage lending tracker at /mortgage with pool overview, active
positions table, lender detail vessel visualization, borrower options
panel (monthly-budget-constrained with lender fill bars), live Aave v3
rates on Base, reinvestment tracker, and yield projection calculator.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:23:14 -07:00
Jeff Emmett d642b856a9 feat(rflows): animated flow effects on waterfalls and connections
- 5-layer animated flow strips inside waterfall paths (denser, more visible)
- Glowing edge lines along waterfall boundaries
- Animated white dashes flowing along center spine of each waterfall
- Pulsing entry glow where flow meets a funnel or outcome node
- Exit glow where flow leaves a source or funnel
- Flow amount labels ($X.Xk/mo) on each waterfall
- Overflow branches now have animated flow strips and entry pulse
- New entryPulse CSS animation for connection point emphasis

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 05:56:30 +00:00
Jeff Emmett 35eadc8a34 feat(rflows): smaller funnels for faster simulation, all outcomes start at $0
- Shrink all funnel thresholds/capacities by ~5x so they fill and drain
  visibly within a few simulation ticks
- Zero out all outcome fundingReceived and reset statuses to not-started
- Same treatment for both BCRG Demo and Simulation Demo presets
- Funnels now cycle through fill/overflow/spend much more dynamically

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 05:17:02 +00:00
Jeff Emmett d7c1aaae9c feat(rflows): pipe size = desiredOutflow, flow = inflowRate
River visualization now shows:
- Pipe width = monthly desiredOutflow (what the funnel needs)
- Inner flow height = inflowRate (what it actually receives)
- Underfunded funnels (<95%) shown in red with funding percentage
- Label shows "$inflow → $outflow/mo" for at-a-glance funding health
- Fully funded funnels get sufficiency sparkle

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 04:52:55 +00:00
Jeff Emmett 3d4d2112dd feat(rflows): add simulation demo preset and dual pipe/flow visualization
- Add simDemoNodes preset: 1 source → treasury → 3 domain funnels → 6 outcomes
  All values start at zero so users can watch flow propagate through the system
- River visualization now shows pipe capacity (outer width) separately from
  active flow (inner fill height), making the two dimensions visually distinct
- Pipe width based on funnel capacity, inner flow based on current fill ratio
- Add "Simulation Demo" as a loadable flow alongside the BCRG Demo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 04:10:13 +00:00
Jeff Emmett ccca8318a3 feat: payment email notifications, GLB viewer, and EncryptID email lookup
- Add EncryptID internal endpoint for email lookup by userId
- rcart: send "Payment Sent" to payer and "Payment Received" to recipient
- rcart: resolve emails via EncryptID when not provided in request
- rsplat: add GLB/GLTF 3D viewer using Three.js GLTFLoader
- rsplat: enable publicWrite for photo uploads without space membership
- docker-compose: add SITE_URL and SPLAT_NOTIFY_EMAIL env vars

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 04:02:07 +00:00
Jeff Emmett a2cebbddfa Merge branch 'dev' 2026-03-14 12:24:57 -07:00
Jeff Emmett 44e7639124 fix(rnetwork): switch to unpkg CDN with dynamic fallback for 3d-force-graph
jsdelivr was returning 503. Switch primary CDN to unpkg and add a dynamic
fallback loader that tries both CDNs if the initial script tag fails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 12:24:54 -07:00
Jeff Emmett 778dfa90e5 Merge branch 'dev' 2026-03-12 23:34:57 -07:00
Jeff Emmett 28922da39f feat: typed ports, flow bridging, governance gates & data transforms
Unify arrow data pipes, LayerFlows, and governance shapes into a
coherent workflow substrate for collaborative rApp pipelines.

- Module-specific typed ports for 10 rApp modules (rcal, rtasks, etc.)
- Port picker UI when connecting shapes with port descriptors
- Flow-typed arrow coloring (economic=green, governance=purple, etc.)
- Arrow ↔ LayerFlow bridge: auto-create/remove Automerge flows
- Governance gates: vote/choice shapes can gate arrow data flow
- Safe data transforms on arrows (filter, map, pick, count, first, last)
- Transform editor UI (double-click or right-click pipe arrows)
- folk-feed auto-creation when dragging arrow to empty canvas

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 23:34:45 -07:00
Jeff Emmett ceb3d70495 Merge branch 'dev' 2026-03-12 22:45:22 -07:00
Jeff Emmett a1f8103237 fix(rnetwork): remove header and stats bar to maximize canvas space
Remove the "Network Graph" title and People/Organizations/Members/Cross-org
stats bar. Reduce toolbar margin for minimal chrome above the canvas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:45:19 -07:00
Jeff Emmett 6cd1066e57 Merge branch 'dev' 2026-03-12 22:44:43 -07:00
Jeff Emmett 2532efd6cc fix(shell): align subnav/tabbar directly below tab row (top: 92px)
The subnav and tabbar had top: 128px which left a 36px gap below the
tab row. Changed to 92px (56px header + 36px tab row) and removed
extra margin-bottom. Added sibling rule so tabbar stacks below subnav
when both are present.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:44:36 -07:00
Jeff Emmett e1af7c785b Merge branch 'dev' 2026-03-12 22:42:37 -07:00
Jeff Emmett 40be1c63b3 feat(rmaps): add collaborative room sync to canvas folk-map shape
Integrate RoomSync, participant markers, location sharing, waypoints,
emoji avatars, and participant panel into the canvas map shape. Users
can now create collaborative map rooms directly from the canvas toolbar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 22:42:34 -07:00
Jeff Emmett ddaada7598 Merge branch 'dev' 2026-03-12 21:25:56 -07:00
Jeff Emmett 1b2842fc4a fix(rwallet): remove all gap between top tabs and content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 21:25:53 -07:00
Jeff Emmett 13e7f75f0b Merge branch 'dev' 2026-03-12 21:20:10 -07:00
Jeff Emmett 8957dd8ea7 chore(rwallet): bump cache version to v=9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 21:20:07 -07:00
Jeff Emmett fb249a8853 Merge branch 'dev' 2026-03-12 21:18:32 -07:00
Jeff Emmett 4d72ba164e feat(rmaps): decompose modals into sub-components + SW offline pinging
Extract meeting point, share, import, and privacy modals from
folk-map-viewer.ts (2504→2147 lines) into standalone web components
that communicate via CustomEvent dispatch. Add OSM tile caching
(cache-first, LRU at 500), IndexedDB room state persistence for
offline location pinging, and auto-persist room state on every sync
update so last-known positions survive tab close.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 21:18:16 -07:00
Jeff Emmett bae633c8df Merge branch 'dev' 2026-03-12 21:13:18 -07:00
Jeff Emmett 7c363dbae9 fix(rwallet): reduce gap between top tabs and content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 21:13:10 -07:00
Jeff Emmett b0d918274d fix(rmaps): commit all pending rmaps changes and missing files
Add map-privacy.ts and updated folk-map-viewer.ts, map-push.ts, mod.ts
that were modified locally but never committed, breaking Docker builds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:38:26 -07:00
Jeff Emmett 21a9a0f7e3 fix(rmaps): add missing map-import.ts to repo
File was created locally but never committed, breaking Docker builds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:37:42 -07:00
Jeff Emmett e37fefe8a4 fix(rnetwork): treat TWENTY_API_TOKEN=disabled as unset
Infisical injects secrets at startup when the env var is empty/falsy,
so setting it to "disabled" blocks injection while this change ensures
the demo data fallback still triggers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:36:51 -07:00
Jeff Emmett 6e5ddaface Merge branch 'dev' 2026-03-12 20:25:40 -07:00
Jeff Emmett aa6f04e45e fix: resolve all 127 TypeScript errors with Hono type augmentation
Add types/hono.d.ts declaring effectiveSpace, spaceRole, and isOwner
on Hono's ContextVariableMap. Remove 127 "as any" casts across 18
files. Fix ParticipantStatus type in rmaps SyncMessage union.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:25:29 -07:00
Jeff Emmett 2a10277ec8 feat(rcart): add real payment flow for cart contributions
Contribute button now offers "Pay Now" (creates a PaymentRequest linked
to the cart, navigates to the existing payment page) alongside "Record
Manual". When the payment completes, the server auto-records a
contribution on the cart with amount, method, and txHash.

- Add recipientAddress to ShoppingCartDoc, linkedCartId to PaymentRequestMeta
- New POST /api/shopping-carts/:cartId/contribute-pay route
- Payment status handler propagates paid → cart contribution
- Payment page shows "Return to Cart" link for linked payments

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:25:17 -07:00
Jeff Emmett e2d26d506c feat(rwallet): add 5 more testnet chains for EVM balance scanning
Adds Arbitrum Sepolia, Optimism Sepolia, Polygon Amoy, Avalanche Fuji,
and BSC Testnet with RPC URLs, native tokens, popular ERC-20s, and
Alchemy slug mappings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:19:56 -07:00
Jeff Emmett 6ed4cba4ac Merge branch 'main' of ssh://gitea.jeffemmett.com:223/jeffemmett/rspace-online 2026-03-12 20:13:12 -07:00
Jeff Emmett fcea37b91b feat(rcart): clickable demo orders with detail view
Enrich 5 demo orders with items, buyer, payment, provider, and timeline.
Order cards show thumbnails and item counts; clicking opens a detail view
with payment info, buyer, provider, and timeline using the existing
catalog-detail 2-column layout. Demo payments expanded to 5 (3 linked).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:12:45 -07:00
Jeff Emmett cc9a58b702 Move rforum, rtube, rtrips, rbooks to bottom of app switcher
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 03:08:33 +00:00
Jeff Emmett 073a64fe56 feat(rnetwork): expand demo CRM to 48 members with delegation-only flows
Remove Demo DAO and space hub placeholder nodes — members now connect
only via trust delegation edges. Add 24 new members (m25–m48) with
ops-vertical specializations and expand delegation arrays to 141 edges
(47 per authority) with proper hierarchical flow patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:08:05 -07:00
Jeff Emmett 9343dc13ab fix(routing): proxy /encryptid/* to encryptid container
The encryptid API routes live on the separate encryptid container, not
rspace. Clients on space subdomains (jeff.rspace.online) fetch
/encryptid/* relative to the rspace server. Add a catch-all proxy that
forwards these requests to the internal encryptid service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 19:47:39 -07:00
Jeff Emmett 058592f5e3 fix(rwallet): fix stuck loading, auth, and add Sepolia ERC20 tokens
- Add /encryptid/ to subdomain routing passthrough (was 404 on demo.rspace.online)
- Replace rwallet's custom JWT verify with SDK's verifyEncryptIDToken (supports
  remote fallback when JWT_SECRET unavailable in rspace container)
- Fix CRDT balance loading stuck spinner (early return skipped crdtLoading=false)
- Add Sepolia testnet ERC20 tokens (USDC, WETH, LINK)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 19:40:02 -07:00