Commit Graph

1108 Commits

Author SHA1 Message Date
Jeff Emmett c83656d74b Merge branch 'dev' 2026-03-21 14:49:39 -07:00
Jeff Emmett 57e03f3049 feat(rsocials): add Campaign Wizard button to campaigns dashboard
Prominent teal gradient button in header and empty state of the
campaigns tab, linking to the AI-guided wizard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:49:28 -07:00
Jeff Emmett 112fd29d9c Merge branch 'dev' 2026-03-21 14:42:00 -07:00
Jeff Emmett 5ad6c6ff77 feat(rsocials): add Campaign Wizard with 5-step AI-guided creation flow
Progressive approval workflow: paste brief → AI extracts structure →
AI generates per-platform posts → review with per-post regen →
commit (saves campaign, creates threads, drafts newsletters, builds workflow DAG).

Includes MI integration for Cmd+K campaign creation and vite build entry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:41:45 -07:00
Jeff Emmett f7c41594e4 Merge branch 'dev' 2026-03-21 14:23:33 -07:00
Jeff Emmett f8ab716722 feat(x402): bridge on-chain USDC payments with CRDT token ledger
Connects x402 (on-chain USDC via Base) and CRDT token system (Automerge cUSDC)
in both directions: on-chain payments auto-mint cUSDC to payer's DID, and users
can pay with cUSDC balance via new "crdt" payment scheme. 402 responses now
return both exact and crdt payment options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:23:24 -07:00
Jeff Emmett 68ea2fe548 Merge branch 'dev' 2026-03-21 14:13:41 -07:00
Jeff Emmett aca0e6b353 feat(rsocials): connect drafted threads to campaign flows via picker dropdowns
Replace manual thread ID entry with select dropdowns in both campaign planner
and workflow components. Server-side publish-thread handler now resolves
linked threadId from Automerge doc when inline content is empty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:13:31 -07:00
Jeff Emmett 55cd1743c2 Merge branch 'dev' 2026-03-21 13:59:44 -07:00
Jeff Emmett d31e8fdca4 feat(spaces): blank canvas init + team inbox provisioning
New spaces start with an empty canvas instead of 25+ template shapes.
Each space gets a {slug}@rspace.online team inbox (multi-sig ready)
via the rinbox onSpaceCreate hook. Fix EncryptID auto-provision passing
raw string instead of SpaceLifecycleContext to module hooks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 13:59:35 -07:00
Jeff Emmett 041f7423de Merge branch 'dev' 2026-03-21 13:52:24 -07:00
Jeff Emmett 97bf2d7987 feat(rwallet): integrate CRDT token flows into wallet visualizations
- Add transferTokens() and getAllTransfers() to token service
- Seed DAO ecosystem: cUSDC + BFT tokens, 3 treasuries, 6 participants,
  ~30 transactions spread over 60 days
- Add /api/crdt-tokens/transfers endpoint for ledger history
- Wire CRDT transfers into loadTransfers() with DID→pseudo-address mapping
- Update data transforms (timeline, sankey, multichain) to support
  _fromLabel/_toLabel for human-readable CRDT participant names
- Show viz tabs (Timeline, Flow Map, Sankey) when CRDT tokens exist
- Add "local"/"CRDT" chain to color and name maps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 13:47:14 -07:00
Jeff Emmett 76eb197241 Merge branch 'dev' 2026-03-21 13:18:19 -07:00
Jeff Emmett ac9bd302d1 fix(rsocials): replace hardcoded dark-mode colors with CSS variables for light/dark theme support
Buttons, badges, focus states, avatars, links, inputs, and surfaces across
all rSocials components now use --rs-primary, --rs-error, --rs-success,
--rs-accent, --rs-bg-surface, --rs-input-bg, etc. with dark-mode fallbacks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 13:18:13 -07:00
Jeff Emmett 7778656fcd Merge branch 'dev' 2026-03-21 12:27:13 -07:00
Jeff Emmett e879f5e2f0 fix(rwallet): remove My Wallets / Wallet Visualizer top tab bar
Show the visualizer view directly without the top-level tab switcher,
keeping the sub-tab header (Balances, Yield, Timeline, etc.) intact.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:27:03 -07:00
Jeff Emmett dfd116feb7 Merge branch 'dev' 2026-03-21 12:26:46 -07:00
Jeff Emmett 031ffbbbfa feat(rpubs): replace sidebar with 3-step wizard flow (Create → Preview → Publish)
Restructures the editor from a cramped sidebar layout to a full-width stepped wizard,
matching the rpubs.online/press UX. Format and drafts moved to toolbar dropdowns,
auto-advances to preview after PDF generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:26:38 -07:00
Jeff Emmett 4b8fd2fed0 Merge branch 'dev' 2026-03-20 23:51:37 -07:00
Jeff Emmett 4793f9c117 feat(crowdsurf): restore module and add Elo pairwise ranking layer
Restore CrowdSurf as standalone module with full integration (server,
app-switcher, shell favicon, rchoices tab, vite build). Add sortition-
based pairwise Elo ranking: users compare two activities head-to-head,
updating Elo ratings. Includes API endpoints (/api/crowdsurf/pair,
/api/crowdsurf/compare), Rank tab with leaderboard, and Elo badges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 23:51:24 -07:00
Jeff Emmett 64aef258d1 Merge branch 'dev' 2026-03-20 23:22:05 -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 fea7e09c04 Merge branch 'dev' 2026-03-20 23:16:58 -07:00
Jeff Emmett e09ae1d8d2 fix(rnetwork): prevent TubeGeometry NaN errors in 3D graph
Links with curved curvature create TubeGeometry that crashes with NaN
positions when force simulation hasn't converged yet. Add linkVisibility
guard to hide links until both endpoints have valid coordinates, and
bump warmupTicks from 50 to 100 for more settling time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 23:16:45 -07:00
Jeff Emmett d3cad4dc1c Merge branch 'dev' 2026-03-20 23:01:32 -07:00
Jeff Emmett 31fe552755 feat(rflows): add organic/mycorrhizal view mode toggle
Adds a toggleable alternative rendering mode for the rFlows canvas.
Sources become sporangia, funnels become mycorrhizal junctions,
outcomes become fruiting bodies, and edges become branching hyphae
with earth-tone aesthetics. Same data, same interactions, same ports.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 23:01:20 -07:00
Jeff Emmett 05646eeb4e Merge branch 'dev' 2026-03-20 22:55:22 -07:00
Jeff Emmett f5b455f83c feat(rpubs): port full feature parity from rpubs-online
Flipbook preview (pdf.js + StPageFlip), saddle-stitch imposition
(pdf-lib), DIY print guides, email PDF, printer discovery (curated
+ OSM Overpass), rCart order/batch integration, publish panel with
Share/DIY/Order tabs. 5 new API routes, 6 new files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:55:10 -07:00
Jeff Emmett 77f2e9ae56 fix(rpubs): allow public PDF generation + fix zine auto-spawn
- Add publicWrite to rpubs module (PDF gen is computational, not a write)
- Fix zine auto-spawn: wait for community-sync-ready event instead of
  fragile 800ms timeout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:20:08 -07:00
Jeff Emmett d39c24c61b fix(rpubs): fix shadow root double-attach and PDF generate route
- Guard attachShadow with existing check to prevent crash on reconnect
- Fix API path: /pubs/api/generate → /rpubs/api/generate (module ID is rpubs)
- The "Unexpected non-whitespace character" error was HTML 404 parsed as JSON

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:14:16 -07:00
Jeff Emmett c23d7eb65b fix(canvas): reminder widget expands from schedule icon position
Instead of popping up at fixed top-right, the reminder mini-calendar
now appears at the 📅 icon's location and scales out from it.
Icon hides while widget is open, reappears on close.
Viewport-clamped to prevent off-screen overflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 21:54:50 -07:00
Jeff Emmett ae73e20c28 fix(rcal): fix Invalid Date crash + add reminder button to day detail
- folk-calendar: fix data-date format for prev/next month padding days
  (month=0 produced "2026--1-28" which split into NaN month → Invalid Date)
- folk-calendar: guard toJSON against invalid dates to prevent toISOString crash
- folk-calendar-view: add "+" button to expanded day detail panel
  with inline title input + time picker for creating reminders
- Styles for the add-reminder form matching existing dark theme

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 19:28:12 -07:00
Jeff Emmett 90b4426484 Merge branch 'dev' 2026-03-20 17:46:51 -07:00
Jeff Emmett 8ff3e83a12 feat(rcal): full-width spectrum bars + draggable map resize
Move temporal/spatial zoom bars to always-visible full-width position
above the calendar+map area. Replace fixed 400px map panel with
draggable resize handle (200-800px range). Responsive: handle hidden
and layout collapses to single column at ≤900px.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:45:33 -07:00
Jeff Emmett 22092ef6c8 Merge branch 'dev' 2026-03-20 17:23:49 -07:00
Jeff Emmett 02b9feb760 feat(rflows): overhaul river view with tap/faucet sources and trapezoid vessel funnels
Replace plain rectangles with tap/faucet SVG graphics for source nodes
(draggable valve handle, metallic gradients, animated water stream) and
trapezoid vessel shapes for funnel nodes (water fill, wave surface,
threshold markers, overflow lips with pour animations). Overflow pipes
now render as 3-layer bezier connections from vessel lips. Add amount
popover with date scheduling, event delegation for interactivity, and
rAF-throttled valve dragging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:23:33 -07:00
Jeff Emmett 29548dad30 Merge branch 'dev' 2026-03-20 17:19:37 -07:00
Jeff Emmett befd70c72b feat(rdata): add content tree view with search, tags, and sort
Adds a new Content Tree tab (default) to rData that indexes all Automerge
docs in a space. Includes /api/content-tree endpoint, folk-content-tree
web component with search, tag filtering, sort modes, expand/collapse,
and demo data fallback. Analytics moves to second tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:19:16 -07:00
Jeff Emmett 451801d12c Merge branch 'dev' 2026-03-20 17:14:28 -07:00
Jeff Emmett 1827b34f6b fix(rcal): seed sample data for all spaces, not just demo
Auto-seed calendar sources and events on first visit to any space's
rcal page, and during space creation via seedTemplate hooks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:14:17 -07:00
Jeff Emmett dfcb2333e3 Merge branch 'dev' 2026-03-20 16:45:43 -07:00
Jeff Emmett 4f1eab3104 fix(spaces): redirect to subdomain URL after space creation
Create-space form redirected to /{slug}/rspace which 404s on subdomain
hosts (jeff.rspace.online/mycofi/rspace → rewritten to /jeff/mycofi/rspace).
Now redirects to https://{slug}.rspace.online/rspace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:45:35 -07:00
Jeff Emmett 2a1e8d784e Merge branch 'dev' 2026-03-20 16:31:37 -07:00
Jeff Emmett 93b7251054 fix(rvote): remove /demo route, use subdomain links consistently
Spaces are always subdomains — no path-based space routing or redirects.
Landing page demo links now point to demo.rspace.online/rvote.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:31:34 -07:00
Jeff Emmett 3233f5057c Merge branch 'dev' 2026-03-20 16:29:37 -07:00
Jeff Emmett 8d8ae7e351 fix(rvote): serve demo at demo.rspace.online/rvote instead of /rvote/demo
Extract demo body into renderDemoBody(), serve it from the / route when
space=demo (which is what demo.rspace.online/rvote resolves to via
subdomain routing). Legacy /demo path now 301-redirects to the canonical
demo.rspace.online/rvote URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:29:26 -07:00
Jeff Emmett 7ee0be7718 Merge branch 'dev' 2026-03-20 16:27:20 -07:00
Jeff Emmett 05459ec8a9 feat(rwallet): pagination, transaction tables, and reset view buttons
Paginated transfers endpoint (up to 3000 txs with exponential backoff),
collapsible incoming/outgoing transaction tables below visualizations,
and Reset View buttons on all three D3 charts (Timeline, Flow, Sankey).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:27:06 -07:00
Jeff Emmett 88e108950a Merge branch 'dev' 2026-03-20 16:21:58 -07:00
Jeff Emmett f9fc0ca6ec feat(rvote): add QPR explanations and conviction voting simulator to demo
Add ELI5 cards (quadratic, reddit-style ranking, vote decay) and an
interactive conviction voting simulator with credit budget, quadratic
costs, proposal ranking, and promotion threshold progress bars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:21:50 -07:00