Commit Graph

65 Commits

Author SHA1 Message Date
Jeff Emmett bf0661fab2 feat(cad): LLM-orchestrated MCP tool-calling for KiCad and FreeCAD
Add Gemini Flash agentic loop that converts natural language prompts
into real MCP tool call sequences for PCB design (KiCad) and parametric
CAD (FreeCAD). Dynamic schema conversion from MCP tools to Gemini
function declarations, 8-turn/60s loop with real execution and result
feedback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 14:07:19 -07:00
Jeff Emmett d99b85046c feat(rswag): full feature parity — POD clients, dithering, AI gen, fulfillment
8-phase implementation bringing rSwag module to parity with standalone rswag.online:
- Printful v2 + Prodigi v4 API clients with sandbox mode
- 11 dithering algorithms + screen-print color separations
- Gemini AI design generation + user artwork upload
- ~15 new API routes (designs, mockups, storefront, fulfillment, admin)
- 4-tab frontend UI (Browse, Create, HitherDither, Orders)
- Interactive revenue Sankey diagram on landing page
- Fulfillment bridge routing orders to nearest POD provider

Also includes: rChats module scaffold, rVote enhancements, crowdsurf removal,
rchoices cleanup, rwallet tweaks, app-switcher updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 23:21:53 -07:00
Jeff Emmett d9b298a56e chore(backlog): add CrowdSurf integration task definitions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 12:00:14 -07:00
Jeff Emmett e42fa5c5d2 feat(canvas): reminder scheduling UX — icon, context menu, drag-to-calendar, email notify
Add four reminder scheduling affordances to the canvas:
- Floating 📅 icon on selected shapes toggles the reminder widget
- Right-click "Schedule a reminder" context menu option
- Drag-to-calendar compact mode (shows after 200ms of shape movement)
- Email notification via EncryptID on reminder creation

Closes TASK-122

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:02:13 -07:00
Jeff Emmett 60ee7930ba fix(rchoices): hide tab labels on mobile, show icons only
Also adds backlog task for rTasks email checklist HMAC flow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 16:50:02 -07:00
Jeff Emmett 8cf069f2b7 chore: add rNetwork task-121 backlog file
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 12:24:45 -07:00
Jeff Emmett fbed19d3c5 feat: add UP integration backlog task-120, remove duplicate task-72
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 02:32:34 +00:00
Jeff Emmett 9bf1aee921 Merge origin/dev + add Universal Profile support
- schema.sql: UP columns (up_address, up_key_manager_address, up_chain_id, up_deployed_at)
- db.ts: getUserUPAddress, setUserUPAddress, getUserByUPAddress
- server.ts: GET/POST /api/profile/:id/up endpoints, UP info in JWT claims

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 02:29:02 +00:00
Jeff Emmett fe128f832e feat: add Universal Profile support — schema, DB ops, server endpoints, JWT claims
- Schema: up_address, up_key_manager_address, up_chain_id, up_deployed_at columns
- DB: getUserUPAddress(), setUserUPAddress(), getUserByUPAddress()
- Server: GET/POST /api/profile/:id/up endpoints
- JWT: eid.up object in session tokens, eid.authTime fix, wallet capability from UP
- Backlog: task-72 for UP × EncryptID integration tracking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 02:24:04 +00:00
Jeff Emmett 039e3c8f8a chore(backlog): mark TASK-118 epic and all sub-tasks as Done
All 14 multiplayer sub-tasks complete. Every rApp module now has
Automerge schemas + local-first-client for real-time sync.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:51:10 -07:00
Jeff Emmett b67f30ac0a feat(rchoices): add multiplayer voting sessions via Automerge CRDT
Create local-first-client.ts and schemas.ts for real-time collaborative
voting. Dashboard now shows live polls with session cards, vote tallies,
and owner controls (close/delete). Votes sync across tabs via WebSocket.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:28:42 -07:00
Jeff Emmett 8cdaf77e9a chore(backlog): add epic TASK-118 — multiplayer everything + pull rApplet to rSpace
Epic with 14 sub-tasks across 5 tiers:
- Tier 1: Pull-to-rSpace for 12 existing multiplayer modules
- Tier 2: Automerge sync for rchoices, rswag, rwallet, rschedule, rnetwork
- Tier 3: Lightweight sync for rdata, rphotos, rtube, rpubs
- Tier 4: Space-scoped linking for rdesign, rdocs, rmeets
- Tier 5: Persistent annotations for rmaps, provision sync for rforum
- Shared folk-applet-catalog.ts component (high priority)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:07:24 -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 cccd0a09f7 chore(backlog): mark TASK-30 and TASK-31 as Done
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:26:56 -07:00
Jeff Emmett 8efe18280c feat: consolidate domains, install deps, fix EncryptID types
- TASK-24: Install h3-js, @xterm/xterm, @xterm/addon-fit
- TASK-51.3: Remove app switcher external link arrows, update
  ridentity.online UI links to /rids paths
- TASK-51.4: Prune allowedOrigins (~30 → 16), simplify JWT aud
  to 'rspace.online', remove standalone domains from webauthn,
  update EncryptID HTML template links. Keep ridentity.online as
  canonical EncryptID/OIDC domain.
- Fix EncryptIDClaims type: add username, did fields; update aud
  type to string | string[] — resolves pre-existing TS error
- TASK-12: Update backlog status (80% code-complete, blocked on
  security audit)
- Backlog task updates for TASK-25/37/40/44, new TASK-110

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 21:55:39 -07:00
Jeff Emmett 751a2c8e7b fix(infra): consolidate external service URLs to rspace.online (TASK-51.1)
- Replace rdata.online/collect.js with /collect.js proxy route (7 files)
- Update MAPS_SYNC_URL to wss://maps-sync.rspace.online
- Fix legacy TWENTY_API_URL to crm.rspace.online
- Add Traefik host exclusions for maps-sync, crm, analytics, newsletter
- Close TASK-23 (feature parity audit) and TASK-51.2 (301 redirects)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:12:51 -07:00
Jeff Emmett 1460d2b579 feat(ecosystem): implement cross-app embedding protocol (TASK-46)
Add ecosystem manifest protocol, EcosystemBridge class, server proxy
routes, port/event integration for folk-rapp, sandboxed iframe mode
with origin-validated postMessage, and SW caching for ecosystem modules.

Security: no allow-same-origin on sandboxed iframes, redirect: error
on proxy fetches, origin validation on all postMessage handlers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 18:32:28 -07:00
Jeff Emmett 602544ecdf feat(seo): add OG/Twitter meta tags + generated OG banner image
- Add og:title, og:description, og:image, twitter:card meta tags to landing page
- Add default OG tags to renderShell for all module pages
- Generate 1024x576 OG banner image via fal.ai Flux Pro (dark indigo + network pattern)
- Update meta description: "rSpace is a local-first platform where communities own their tools, data, and governance"
- Update page title to "rSpace — Own Your Community Infrastructure"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:51:25 -07:00
Jeff Emmett fee72573ba feat: system clock heartbeat + ephemeral clock delivery (TASK-47)
Server-side SystemClock broadcasts tick/5min/hourly/daily events via
WebSocket to all connected clients. Events are ephemeral (not persisted
in CRDT). Client-side fallback clock activates when server connection
is lost.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:20:04 -07:00
Jeff Emmett efb5810b31 feat: canvas event broadcasting pub/sub system (TASK-43)
Add CanvasEventBus with emit/subscribe/unsubscribe for cross-shape
communication. Events persisted in Automerge CRDT eventLog (ring buffer
100 entries), synced via WebSocket, with re-entrancy guard at depth 10.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:14:30 -07:00
Jeff Emmett c049d7e8df feat(rcart): QR code payment requests with self-service generator
Add shareable QR payment system to rCart:
- PaymentRequestDoc schema with amountEditable support
- Payment API routes (create, list, get, update, QR SVG, Transak session)
- folk-payment-page: 3-tab payer view (Card/Wallet/EncryptID passkey)
- folk-payment-request: self-service QR generator with passkey auth
- Payments tab in folk-cart-shop for managing requests
- Extract Transak utils to shared/transak.ts (used by rFlows + rCart)

Routes: /:space/rcart/request (generator), /:space/rcart/pay/:id (payer)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:11:20 -07:00
Jeff Emmett d668ca287c chore(backlog): add tasks 106-108 (ViewHistory, Wallets, CRM graph)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:38:34 -07:00
Jeff Emmett bb432a6af1 chore: add backlog-notify onStatusChange hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:30:41 -07:00
Jeff Emmett 97da6c729f chore(backlog): add task-105 listmonk newsletter integration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 12:28:22 -07:00
Jeff Emmett c92ca0fe05 feat(rsocials): newsletter manager + listmonk proxy + backlog tasks
Add Listmonk newsletter management proxy API with role-based auth,
newsletter manager component, password setting type support, and
new backlog task files. Update newsletter subscribe URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 12:24:02 -07:00
Jeff Emmett 0e9d00d2ac feat(rsocials): add Listmonk newsletter page + legacy domain redirect
- Add /newsletter-list route embedding Listmonk via iframe
- Add LISTMONK_URL env var to docker-compose
- Add Traefik redirect: social.jeffemmett.com → demo.rspace.online/rsocials
- Add backlog task for linked wallets security hardening (TASK-HIGH.5)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 18:15:05 -07:00
Jeff Emmett a90e339323 feat: inline config panel for rFlows elements with tabbed Config/Analytics/Alloc
Double-clicking a flow element now opens a rich tabbed panel below the node:
- Config tab: form inputs (label, thresholds with range sliders, source type, status)
- Analytics tab: live-updating fill bars, conic-gradient outflow/overflow donut, stats
- Allocations tab: read-only allocation breakdowns with colored dots
- Simulation overlay preserved during ticks, analytics accumulate per-node metrics

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:03:09 -08:00
Jeff Emmett 7a34239071 chore: backlog tasks 87-101 for recent untracked work
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:03:40 -08:00
Jeff Emmett 06f7d67cd3 chore: slash-command refinements, server import fixes, misc cleanup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 13:21:04 -08:00
Jeff Emmett dfa09a39f6 feat: email invite endpoint, canvas share panel, backlog task-77 done
- Add POST /:slug/invite email endpoint (nodemailer via Mailcow SMTP)
- Add share badge + panel UI to canvas whiteboard
- Mark task-77 (encrypted VPS backup) as Done with updated references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:39:43 -08:00
Jeff Emmett 0ef5aad3ad chore: add backlog tasks 79-81
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:25:12 -08:00
Jeff Emmett 9ffd5de10a chore: add backlog task files (task-77, task-78)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:05:24 -08:00
Jeff Emmett 384ef23ae1 chore: add backlog tasks 74-76
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 15:04:39 -08:00
Jeff Emmett b0eebc4cbc chore: add backlog task files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 18:13:40 -08:00
Jeff Emmett dfb0325147 feat: gradual zoom, toolbar reorg, pinch-to-zoom
- Zoom buttons 1.25x→1.1x, wheel 0.9/1.1→0.95/1.05
- Wheel + pinch zoom now center on cursor/pinch midpoint
- Rename "Create" → "Note", remove quick-add "+" button
- Redistribute 16 rApp embeds into thematic toolbar groups
- Remove standalone "rApps" dropdown
- Add pinch-to-zoom alongside two-finger pan on touch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 16:53:30 -08:00
Jeff Emmett 6fe02697a0 chore: add backlog TASK-70 — selector tool with marquee multi-select (done)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 16:36:33 -08:00
Jeff Emmett 3faf44865e chore: update backlog — TASK-39 done, TASK-65 AC checked, TASK-69 created+done
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 16:30:01 -08:00
Jeff Emmett 7698e32774 feat: per-module landing pages on bare domain rspace.online/{moduleId}
Bare domain now serves a dedicated landing page for each rApp instead
of directly loading the demo. "Try Demo" links to demo.rspace.online
which loads the live app. Sub-paths still rewrite to demo for API compat.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:02:39 -08:00
Jeff Emmett 034e3b308a chore: update TASK-46 progress — postMessage bridge + module switcher
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:50:28 -08:00
Jeff Emmett 69cb105758 chore: add backlog task TASK-HIGH.1 (bare-domain module routing)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:34:52 -08:00
Jeff Emmett 03c843254b feat: add "Try Demo" button to all headers + revert landing page copy
- Add teal "Try Demo" button to rstack-header (right side, before identity)
- Button links to demo.rspace.online/{currentModule} for context-aware demo entry
- Hidden when already on the demo space (server-side conditional)
- Revert website/index.html to original copy, only updating CTA link + adding demo button
- Add demo button CSS to shell.css

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:10:04 -08:00
Jeff Emmett ae9bbebb4a chore: add backlog tasks for canvas tab bar and persistence features
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 18:51:59 -08:00
Jeff Emmett abca93757b chore: add backlog task TASK-63 (remove iframe shell)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 18:46:37 -08:00
Jeff Emmett fcf350d40a chore: add backlog tasks TASK-59 and TASK-60
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:45:04 -08:00
Jeff Emmett ddd5f957b4 feat: add rPhotos module + finish header standardization across all rApps
- Create modules/photos/ with Immich API proxy, gallery component,
  shared albums, lightbox viewer, and standard rapp-nav header
- Register photosModule in server/index.ts and add vite build step
- Fix remaining module headers: books (shelf + reader), splat, swag, tube
- All 23 modules now use consistent rapp-nav pattern — no branding headers
- Immich running at demo.rphotos.online, landing page at rphotos.online
- Add backlog tasks 53-58 for recent feature work

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:06:17 -08:00
Jeff Emmett b872e8e053 feat: update rstack-app-switcher categories
- rTube → Creating, rSwag stays in Creating
- Rename Social & Media → Sharing, split rData → Observing
- Add tube to Creating in MODULE_CATEGORIES and badge comments

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:17:30 -08:00
Jeff Emmett 346b406b80 fix: switch all module shell themes from light to dark
The light theme was causing the header bar to render with a white
background, clashing with the dark-themed module content underneath.
All modules and both shell renderers now default to dark theme.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:42:33 -08:00
Jeff Emmett 533ce89cea backlog: add system clock heartbeat service task (TASK-47)
Server-side clock broadcasting time signals via Event Bus for shapes
to subscribe to periodic events (tick, hourly, daily).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 14:19:42 -07:00
Jeff Emmett 2b2f054c65 chore: backlog TASK-20 membership endpoints + shape sync (Done)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:35:26 -07:00
Jeff Emmett 5d517dbdf1 chore: update TASK-13 with cross-space auth progress
SSO token relay, membership endpoints, SpaceRole bridges, and
bidirectional sync all implemented. AC #6 and #7 checked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:33:16 -07:00