Commit Graph

1008 Commits

Author SHA1 Message Date
Jeff Emmett 7e430490ba feat(rflows): rename progress bar to Repayment Progress, make it minimizable
- Timeline bar now shows "Repayment Progress" label
- Added minimize button (─/▶) to collapse the bar to a compact toggle
- When minimized, hides the track, label, and tick counter

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 01:19:16 +00:00
Jeff Emmett cbeeac68dc Merge branch 'dev' 2026-03-15 17:51:17 -07: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 338d5d7ae3 Merge branch 'dev' 2026-03-15 17:49:59 -07:00
Jeff Emmett d3a6ad7dda feat: add Automerge schemas + local-first-clients for remaining modules
- rdesign: linked Affine projects per space
- rdocs: linked Docmost documents per space
- rmeets: meeting scheduling and history
- rmaps: persistent annotations, routes, meeting points
- rforum: local-first-client wrapping existing provision schemas

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:49:51 -07:00
Jeff Emmett 43bf8e9367 Merge branch 'dev' 2026-03-15 17:47:45 -07:00
Jeff Emmett a504a24a55 feat: add Automerge schemas + local-first-clients for tier-3 modules
- rdata: shared analytics dashboard config
- rphotos: shared album curation and photo annotations
- rtube: shared playlists and watch party sync
- rpubs: local-first-client wrapping existing draft schemas

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:47:37 -07:00
Jeff Emmett 5023a3525c Merge branch 'dev' 2026-03-15 17:47:25 -07:00
Jeff Emmett d4bb1daa7b fix(build): add wasm() plugin to all vite sub-builds
Wraps all component sub-build() calls with wasmBuild() helper that
injects vite-plugin-wasm and @automerge/automerge alias. Fixes WASM
fallback error when a sub-build transitively imports Automerge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:47:19 -07:00
Jeff Emmett 521ea557f4 Merge branch 'dev' 2026-03-15 17:45:01 -07:00
Jeff Emmett b86af45610 feat(rnetwork): add Automerge schemas + local-first-client for CRM sync
Contact metadata, relationships, and graph layout positions sync
via CRDT. Delegations remain server-authoritative in PostgreSQL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:45:01 -07:00
Jeff Emmett ee54ec219d feat(rnetwork): add Layers mode for multi-rApp 3D visualization
Adds a "Layers" toggle to the graph viewer that lets users select 2-3
rApps and visualize them as labeled planes on user-assignable axes
(XY/XZ/YZ) with hub+feed nodes, cross-layer flow wiring via compatible
FlowKinds, animated particle edges, and unrestricted camera orbit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:44:50 -07:00
Jeff Emmett d5cab1441a Merge branch 'dev' 2026-03-15 17:43:33 -07:00
Jeff Emmett c0d2276d46 feat(rschedule): add local-first-client.ts for standalone sync
Wraps existing Automerge schemas with DocumentManager/DocSyncManager
for direct client-side sync. CRUD methods for jobs, reminders,
workflows, and execution log.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:43:26 -07:00
Jeff Emmett b8b55054c5 Merge branch 'dev' 2026-03-15 17:39:53 -07:00
Jeff Emmett c0ae0e9a53 feat(rwallet): add multiplayer shared watchlist via Automerge CRDT
Shared wallet address watchlist syncs across space members. Click
watched address to load it in the visualizer. Transaction annotations
and dashboard config schema ready for future use.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:39:41 -07:00
Jeff Emmett c1b572ef68 Merge branch 'dev' 2026-03-15 17:39:12 -07:00
Jeff Emmett 20c4a19e06 feat(rnetwork): absolute token weights instead of fractional averages
Weight accounting now uses actual base weights per authority (×100 for
integer tokens). Formula: effective = max(0, base - delegatedAway) + received.
If you have 95 Gov tokens and delegate 48, you retain 47; the recipient
gains 48 on top of their own base.

- Detail panel shows breakdown: base − delegated + received = effective
- Badge shows integer token count per authority
- Member list sidebar shows per-authority G/E/T weights (color-coded)
- Sorted by total effective weight (sum across all authorities)
- No more averages — absolute weight of voice

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:39:05 -07:00
Jeff Emmett 21884fb71b Merge branch 'dev' 2026-03-15 17:34:12 -07:00
Jeff Emmett 0db93695d8 feat(rswag): add multiplayer design sync via Automerge CRDT
Shared design metadata syncs across space members in real-time.
"Space Designs" gallery shows all designs with download links.
Artifact generation auto-publishes design metadata to peers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:34:06 -07:00
Jeff Emmett eef0e9f7de Merge branch 'dev' 2026-03-15 17:28:51 -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 b5a7fd0ac0 Merge branch 'dev' 2026-03-15 17:21:33 -07:00
Jeff Emmett 7cab8d6187 feat(rnetwork): responsive zoom, larger nodes/labels, member list sidebar
- Zoom: 2x/0.5x steps (was 1.33x/0.75x), 200ms animation, scroll speed 2.5x
- Node sizing: range 6-56px in trust mode (was 4-30px) for dramatic differentiation
- Text labels: 512x96 canvas with 36px font, 14x3.5 sprite scale (was 256x64, 24px, 8x2)
- Member list sidebar: toggled via "List" button, shows admins/members/viewers grouped
  with effective weight, click to fly camera to node, responsive mobile stack layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:21:23 -07:00
Jeff Emmett e4ea11a91f Merge branch 'dev' 2026-03-15 17:20:38 -07:00
Jeff Emmett 668c239cf3 feat(shell): add "Manage rApps" catalog to app switcher sidebar
Extends <rstack-app-switcher> with an expandable "Manage rApps" panel
at the bottom of the sidebar. Space owners can:
- See all available modules (enabled + disabled) in one place
- Toggle modules on/off with + / − buttons
- Changes persist via PATCH /api/spaces/:slug/modules
- Local toggle fallback for demo mode
- Busy state disables buttons during API calls

Shell changes:
- renderShell() now builds allModulesJSON with `enabled` flags
- Calls setAllModules() on the app switcher alongside setModules()
- Dispatches 'modules-changed' event for shell reactivity

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:20:31 -07:00
Jeff Emmett c233f1338b fix(rsplat): use three/addons/ import path to match importmap
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:18:19 -07:00
Jeff Emmett de4803023c Merge branch 'dev' 2026-03-15 17:07:32 -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 bd46df0721 Merge branch 'dev' 2026-03-15 17:05:33 -07:00
Jeff Emmett 03de21ddd5 feat(rnetwork): concentric spheres layout with Fibonacci distribution
Replace flat ring layout with 3D sphere distribution using Fibonacci
spiral for even node placement. Wireframe sphere guides replace flat
ring guides — visible from every camera angle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:05:30 -07:00
Jeff Emmett 51fcf93df7 Merge branch 'dev' 2026-03-15 17:04:15 -07:00
Jeff Emmett 246b51b2e0 feat(rbudgets): multiplayer sync, interactive pie chart, flow integration
- Add budget CRUD methods to FlowsLocalFirstClient (saveBudgetAllocation,
  addBudgetSegment, removeBudgetSegment, setBudgetTotalAmount)
- Init local-first client in budget view with real-time onChange sync
- extractBudgetState() recomputes collective averages from Automerge doc
- Debounced auto-save (1s) via scheduleBudgetSave() on slider/pie changes
- Interactive pie chart: click wedges to select, drag boundaries between
  segments to adjust allocation percentages with angle-to-pct geometry
- Selected segment highlighting (scaled wedge, white border, detail panel,
  slider row highlight, legend/table row click-to-select)
- "Apply to Flow" button pushes collective budget into canvas flow as
  funnel node with spending allocations mapped to outcome nodes
- LIVE indicator when WebSocket connected
- Falls back to API for demo/unauthenticated users

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:04:02 -07:00
Jeff Emmett 2cce369b7b chore(rsplat): bump JS/CSS cache version to v=2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:03:22 -07:00
Jeff Emmett c5f757d050 fix(rsplat): resize images client-side before 3D generation, pass through fal.ai errors
Mobile photos (12MP+) were causing generation failures due to large base64 payloads.
Now resizes to max 1024px before sending. Server now returns actual fal.ai error
messages instead of generic "3D generation failed".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:56:35 -07:00
Jeff Emmett 340e1ee05b Merge branch 'dev' 2026-03-15 16:54:52 -07:00
Jeff Emmett e5b5c551b1 feat(rnetwork): multi-select delegation with per-node sliders and fuzzy search
- Click any person/member node to add them to delegation selection
- Each selected node gets 3 inline sliders (Gov/Econ/Tech) for weight assignment
- Fuzzy search input in delegation panel to find and add members by name
- Remaining weight display per authority
- "Confirm All Delegations" commits all at once, recomputes weights live
- Replaces old two-step popup with single-panel multi-select UX

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:54:45 -07:00
Jeff Emmett af8a268447 Merge branch 'dev' 2026-03-15 16:49:58 -07:00
Jeff Emmett 48cbf22492 fix(rnetwork): check URL space slug not effectiveSpace for demo detection
effectiveSpace resolves to 'global' for rnetwork (global-scoped module),
so check the URL space param instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:49:55 -07:00
Jeff Emmett 6ced747574 Merge branch 'dev' 2026-03-15 16:48:03 -07:00
Jeff Emmett 33721819db fix(rnetwork): show demo members in demo space even when CRM token exists
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:47:56 -07:00
Jeff Emmett 66de66c2a3 Merge branch 'dev' 2026-03-15 16:35:26 -07:00
Jeff Emmett 98cd239418 feat(rnetwork): weight accounting, ring layout, inline delegation UI
- Per-authority effective weight computation (delegated/received/retained)
- Concentric ring layout (admin/member/viewer) with visual guides
- Inline delegation popup with total + domain split sliders
- Authority labels renamed: Gov/Econ/Tech with consistent colors
- Authority-filtered edge view in trust mode
- Demo delegation preview with live graph updates
- Trust API endpoints for delegation CRUD and score queries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:34:54 -07:00
Jeff Emmett f1094e1a8b Merge branch 'dev' 2026-03-15 16:11:41 -07:00
Jeff Emmett af43e98812 feat(rflows): add rBudgets collective budget allocation sub-view
Adds a new "rBudgets" sub-tab to rFlows where participants allocate
budgets across departments via sliders, with a collective SVG pie chart
showing aggregated results. Includes schema v4 migration, budget CRUD
API routes, demo seed data (5 segments, 4 participants, $500k pool),
and slider auto-normalization to 100%. Removes redundant "Flows" and
"Flow Viewer" entries from outputPaths/subPageInfos.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:11:32 -07:00
Jeff Emmett 4b47cc8340 Merge branch 'dev' 2026-03-15 15:52:17 -07:00
Jeff Emmett cab80f30e7 refactor(rnetwork): move Open CRM to sub-nav header
Remove standalone "Open CRM" button from graph view body and add
"Open Twenty CRM" as an external link in the module sub-nav bar,
next to Community CRM. Dashed border + margin-left:auto pushes it
to the right edge for visual distinction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 15:52:10 -07:00
Jeff Emmett 1765204d0d Merge branch 'dev' 2026-03-15 15:44:24 -07:00
Jeff Emmett e6f78a67e8 feat(rflows): Sankey-consistent edge widths, split controls, vessel path fixes
- Add computeFlowWidths() pre-pass for per-node proportional edge widths
  (outgoing edges sum to node pipe width, 8-80px range)
- Replace +/- buttons on edges with draggable split controls on nodes
  (source, funnel spending, funnel overflow — min 5% clamp, 60fps updates)
- Fix vessel wall path discontinuities by interpolating at pipe boundaries
- Stabilize overflow pipe sizing (fixed height, CSS opacity transitions)
- Tighten funnel foreignObject bounds to eliminate pointer-events overlap
- Replace foreignObject zone/overflow labels with SVG <text> elements
- Add inflow pipe indicator bars on funnels showing flow fill ratio

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 15:44:14 -07:00
Jeff Emmett 4cdba2e7de fix(rwallet): align yield rates table columns with fixed-width layout
Use table-layout:fixed with colgroup for consistent APY/30d Avg/TVL
column alignment. Dedicated yield-rates-table class with right-aligned
monospace numeric columns. Bump JS cache v=12.

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