Commit Graph

680 Commits

Author SHA1 Message Date
Jeff Emmett e9b2a9314b fix(rflows): bump JS cache versions to bust Cloudflare CDN
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 09:05:56 -04:00
Jeff Emmett 590cb67e02 feat(rflows): improve flow visualization with distinct edge colors and overflow glow
Differentiate spending (blue) and overflow (amber) edges from inflow (green),
increase fill opacity, add approaching-overflow pulse animation and status badge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:03:00 -04:00
Jeff Emmett 53c757e68e fix: comprehensive memory leak and performance fixes across 44 files
Browser-side:
- Fix switchSpace() to LRU-evict idle space WebSocket connections (cap: 3)
- Add runtime.unsubscribe() to disconnectedCallback in 24 components
- Fix DocSyncManager.unsubscribe() to clean up syncStates, timers, listeners
- Fix 14 components leaking RAF loops, ResizeObservers, MutationObservers,
  document/window listeners, setIntervals, MapLibre WebGL contexts, and
  AbortControllers on disconnect
- Deduplicate Automerge WASM: module builds now use global shim from
  shell-offline instead of bundling ~2.5MB each (8 modules affected)

Server-side:
- Add LRU eviction to SyncServer.#docs (cap: 500, evicts idle docs with
  no subscribers, persists to disk before eviction)
- registerWatcher() now returns unsubscribe function

Data:
- Cap unbounded CRDT arrays: rexchange chatMessages (200), rcart events (200)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:26:24 -04:00
Jeff Emmett 76df746e15 feat: cross-browser/cross-device compatibility sweep
Browser compat gate (WASM/ESM check + structuredClone polyfill),
structured WebAuthn error handling with user-facing messages,
email-only login mode when passkeys unavailable, Firefox passphrase
fallback for document encryption (salt storage, modal UI, key
derivation bridge), CSS flex gap fallbacks for Safari <14.1,
MapLibre CDN load error handling, and server-side auth error
improvements with proper HTTP status codes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:57:59 -04:00
Jeff Emmett c6cb875ba4 feat(rcal): add Google Calendar sync integration with connectors menu
- Google Calendar API client (server/google-calendar.ts): token auto-refresh,
  list calendars, fetch events with incremental sync, create events, mapping
- OAuth scopes: added calendar.readonly + calendar.events, returnTo param
- rCal routes: subscribe, sync, sync-all, unsubscribe, push-to-Google endpoints
- Background sync loop: 10-minute interval with incremental sync tokens
- Frontend: calendar picker modal, sync button, per-event Google export
- MCP: source_type filter on rcal_list_events, new rcal_sync_google tool
- Connectors menu: Google shows services (Docs/Drive/Calendar) + calendar count,
  added Obsidian & Logseq as file-based connectors, Notion shows services
- Fix: import-export dialog API base corrected from rnotes to rdocs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:45:52 -04:00
Jeff Emmett 885f0baeb1 feat: add Linea chain support and WalletAdapter abstraction
TASK-120 Phases 1-2: Add Linea mainnet (59144) and Linea Sepolia (59141)
to all chain maps (CHAIN_MAP, RPC, env names, native tokens, popular tokens,
CoinGecko, Zerion, chain colors/names, Safe prefixes). New WalletAdapter
class provides chain-parameterized abstraction over Safe/EOA/UP wallets
with immutable withUniversalProfile() and fromSafe/fromEOA/fromUP factories.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:14:31 -04:00
Jeff Emmett 8d859b87bf feat(rmeets): add Meeting Intelligence page, space-scoped rooms, toolbar buttons
- Add /meeting-intelligence route with aggregate knowledge (action items,
  decisions, topics) and space-scoped meeting cards
- Add Meeting Intelligence link to hub page and in-room MI dropdown
- Prefix Jitsi room names with space slug for conference_id scoping
- Add shareaudio and meetingintelligence to embed toolbar buttons
- Recordings route now filters by conference_prefix

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:37:35 -04:00
Jeff Emmett 18b61fa5e6 feat: rebuild rNotes as vault browser, editor code now in rDocs
Phase 2-3 of the rNotes/rDocs split. Rewrites rNotes from a full TipTap
editor (~1800 lines) into a lightweight Obsidian/Logseq vault sync and
browse module (~560 lines). Rich editing features remain in rDocs.

rNotes vault browser:
- VaultDoc schema: metadata-only in Automerge (title, tags, hash, wikilinks)
- ZIP vault uploads stored on disk at /data/files/uploads/vaults/
- File tree browser, search, read-only markdown preview
- Wikilink graph data endpoint for visualization
- 5 MCP tools: list_vaults, browse_vault, search_vault, get_vault_note, sync_status
- Browser extension compat shim redirects old API calls to rDocs

Cleanup:
- Removed dead editor files from rnotes (converters, components, local-first-client)
- Updated MI integration to use getRecentVaultNotesForMI
- Updated ONTOLOGY.md with new module descriptions
- Bumped JS cache versions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:05:35 -04:00
Jeff Emmett 99492cc532 feat: extend browser back button support to all rApp modules with view navigation
Adds ViewHistory integration to 9 additional modules (rtime, rswag, rwallet,
rbnb, rvnb, rnetwork, crowdsurf, rtube, rflows-mortgage), bringing the total
to 17 modules. Browser back now navigates within the current rApp tab before
falling through to tab switching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:48:31 -04:00
Jeff Emmett de9cc21301 feat(rmeets): require username on join, fix settings/background, add MI toolbar
- Enable prejoin page so users must enter a display name before joining
- Add requireDisplayName, SETTINGS_SECTIONS, disableVirtualBackground config
- Add floating Meeting Intelligence button with recordings/search links
- Add chat, settings, participants-pane to folk-jitsi-room toolbar
- Also includes: rDocs module expansion, tab-cache/view-history updates,
  converter rewrites, MCP tool additions, OAuth fixes, backlog tasks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 14:06:47 -04:00
Jeff Emmett 8887e18dda fix: rename rsheet module to rsheets (fixes missing module crash)
The rsheet→rsheets rename was partially applied - server/index.ts
imported rsheets/mod but the files still lived at rsheet/. This
caused a crash on startup: "Cannot find module '../modules/rsheets/mod'".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 11:19:32 -04:00
Jeff Emmett 1de038eeab feat(comments): spatial comment pins on all rApp module pages
Adds Figma-style threaded comment markers anchored to data-collab-id
elements across all module pages. Comments stored in per-space Automerge
doc, synced via existing local-first stack. Bell is now context-aware
(canvas pins on canvas, module pins on module pages). Notifications
route through existing WS/push/email system with new module_comment
and module_mention event types.

New files: module-comment-types, module-comment-schemas,
rstack-module-comments component. Updated: shell, comment bell,
notification routes. Added data-collab-id to crowdsurf, rtime, rmeets.
Fixed pre-existing SKILL_LABELS import error in rtime/mod.ts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 11:15:05 -04:00
Jeff Emmett f0039bcb7c fix(mcp): add untracked rchats + rsheet schema files
These schemas are imported by the MCP tool files and module mod.ts
but were never committed, causing a crash on deploy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 10:34:12 -04:00
Jeff Emmett 2e8e702d75 feat(mcp): 101 MCP tools across all 35 rApps + security hardening + MI integration
- Add centralized auth helper (_auth.ts) with resolveAccess() enforcing
  space visibility (public/permissioned/private) and role-based access
- Retrofit 5 existing tool groups (rcal, rnotes, rtasks, rwallet, spaces)
  with resolveAccess gates
- Add 30 new MCP tool files covering all remaining rApps:
  rsocials, rnetwork, rinbox, rtime, rfiles, rschedule, rvote, rchoices,
  rtrips, rcart, rexchange, rbnb, rvnb, crowdsurf, rbooks, rpubs, rmeets,
  rtube, rswag, rdesign, rsplat, rphotos, rflows, rdocs, rdata, rforum,
  rchats, rmaps, rsheet, rgov
- Add ForMI data exports to all module mod.ts files
- Wire 6 core modules into MI context (mi-data-queries.ts, mi-routes.ts)
- forceAuth for sensitive modules (rinbox, rchats)
- Omit sensitive fields (storagePath, fileHash, bodyHtml) from responses

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 10:25:17 -04:00
Jeff Emmett 69da9b0ee7 feat(rdata): add data membrane visualization to landing page
Add interactive concentric zone visualization showing Personal (encrypted/local),
Permissioned, and Public data membranes. Drag-and-drop objects between zones
triggers permission change confirmations. Mobile-optimized with tap-to-select,
responsive node sizing, and scroll prevention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:02:04 +00:00
Jeff Emmett de698a2aa3 feat(comments): notify all space members on new comments and replies
Broadcasts in-app, push, and email notifications to all space members
when a comment pin is created or replied to. @mentioned users get their
specific mention notification instead (no double-notify). Fixes pre-existing
TS error in rtasks local-first-client (missing dueDate default).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 14:12:09 -04:00
Jeff Emmett 5ddde13b0d feat: magic link responses for polls and RSVPs
HMAC-signed stateless tokens let external respondents vote on rChoices
polls or RSVP to rCal events via a single tap — no account required.
Routes mounted at /respond/:token bypass space auth. Typed EventAttendee
schema replaces unknown[] on CalendarEvent.attendees. Invite endpoints
on both modules generate tokens and optionally send email invitations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 13:41:17 -04:00
Jeff Emmett 17a5922a44 feat(rcal): semantic zoom on overlapping day cell events
When 3+ events land on the same day in month view, individual event
labels collapse into spatial summary chips showing where the user
needs to be (e.g. "Berlin 3", "Amsterdam 2"). Chip granularity
auto-adapts: city → country → continent as location diversity grows.
Virtual events shown separately. ≤2 events still show full labels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 12:44:01 -04:00
Jeff Emmett 65b72ed7ac feat(rcal): map shows routes with booking status, calendar keeps semantic zoom
Map always shows individual event markers (no clustering). Transit
lines now colored by booking status: green solid = booked, red dashed
= not yet booked. New bookingStatus field on CalendarEvent as
placeholder for the forthcoming booking pipeline. Calendar views
retain semantic zoom (country/city chips at year/season/month levels).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 13:28:08 -04:00
Jeff Emmett 883f4b5f2c feat(rtasks): assignee dropdown from space members + drag guard
- Load space members via /api/spaces/:slug/members for assignee dropdown
- Detail panel shows <select> with space members when available, falls
  back to text input when unauthenticated or no members loaded
- Assignee badge shown on task cards with resolved display names
- Assignee selectable on task creation form
- Server accepts assignee_id on POST /api/spaces/:slug/tasks
- Add _justDragged guard to prevent column click-to-create from
  firing after a drag operation ends (100ms debounce)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 22:32:20 -04:00
Jeff Emmett 64ba4c1f1f feat(rmeets): enable shared video & music toolbar buttons
Add sharedvideo and sharedmusic to Jitsi toolbar config in both
the full-screen view and folk-jitsi-room component. Also set
disableThirdPartyRequests to false so the features aren't blocked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 15:29:13 -04:00
Jeff Emmett a4a800a498 fix(rmeets): remove loading spinner after Jitsi iframe injection
The "Connecting to meeting..." loading div remained visible on top of
the Jitsi iframe in the minimal view. The iframe is created by the
JitsiMeetExternalAPI constructor, so remove the spinner immediately after.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 14:55:11 -04:00
Jeff Emmett a3ec58a4c5 fix(rmeets): correct Jitsi external API script path
The Jitsi server at jeffsi.localvibe.live serves the external API at
/libs/external_api.min.js, not /external_api.min.js (which returns HTML
due to SPA routing). Fixed in both the inline minimal view and the
folk-jitsi-room component's dynamic script loader.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 14:50:44 -04:00
Jeff Emmett 4918787bb5 fix(rtasks): enable public writes + click-to-create in any column
- Add publicWrite to rtasks module so unauthenticated task creation works
  (was blocked by space auth middleware returning 403)
- Click empty column space or "+ Add task" to open create form in that column
- Tasks created in clicked column get that column's status automatically
- Show error message when task creation fails instead of silent failure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 21:26:18 -04:00
Jeff Emmett ab5129d7dc refactor(rtasks): remove workspace list, single board per space
Load kanban board directly on page load instead of showing a workspace
picker first. ClickUp connect button moved into board nav.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 20:27:44 -04:00
Jeff Emmett ac332468ba fix(rflows): mortgage simulator perf + basic/advanced toggle
Fix event listener accumulation (duplicate handlers on every render),
add partial DOM updates for playback/scrubbing/interactions, debounce
config slider recompute via rAF, and add Basic/Advanced mode toggle
that hides advanced controls (tranches, interest, terms, overpayment,
reinvestment) by default. Also fix pre-existing TS Map iteration errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 18:31:04 -04:00
Jeff Emmett 1dc6de7759 fix(rtasks): make all endpoints auth-optional, handle stale tokens
- POST /api/spaces, POST /api/spaces/:slug/tasks, PATCH /api/spaces/:slug
  now work without auth (like PATCH /api/tasks/:id already does)
- Frontend retries without auth headers on 401 (stale token recovery)
- Bump JS cache to v6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 18:05:34 -04:00
Jeff Emmett c00221c1e5 fix(rtasks): replace browser prompt/confirm with inline forms
- Workspace creation uses inline text input instead of prompt()
- Task deletion uses inline confirmation bar instead of confirm()
- Better error display when workspace creation fails (shows server error)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 17:21:52 -04:00
Jeff Emmett 4822f0858a fix(rtasks): bump JS cache version to v5 for new frontend features
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:53:25 -04:00
Jeff Emmett eeab84e588 feat(rtasks): add detail panel, column management, search/filter, drag polish
- Task detail slide-out panel with inline editing of all fields
- Column/status management via gear icon (add, remove, rename, reorder)
- Search & filter bar with text search, priority dropdown, label click filter
- Enhanced task cards with description preview, due date badge, delete hover
- Drag polish with rotation/scale transform on dragging cards
- Empty drop zones always visible with green highlight on drag-over
- Escape key closes detail panel and column editor
- Individual field saves on blur/change (no full re-render flicker)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:49:58 -04:00
Jeff Emmett c590bacc40 fix(rtasks): add auth headers to all API calls + canvas toolbar to bottom-right
rtasks fetch calls were missing Authorization Bearer headers, causing 401s
on private/permissioned spaces. Added authHeaders() helper using encryptid-token
from localStorage (matching pattern in folk-feed, folk-multisig-email, etc.).

Also includes: due date field, task detail panel, search/filter, column editor,
board PATCH endpoint, and canvas toolbar repositioned to bottom-right corner
(collapsed wrench icon on all screen sizes, panel opens leftward).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:42:16 -04:00
Jeff Emmett a76a6a9f6e feat(rcal): add semantic zoom for map and calendar views
Map markers now aggregate by continent/country/city based on spatial
zoom level instead of always showing individual dots. Calendar views
(year, season, multi-year, month) show zoom-aware spatial labels.
New geo-hierarchy.ts provides offline continent/country lookup from
coordinates with breadcrumb generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:40:08 -04:00
Jeff Emmett 75c230eabe fix(rmeets): correct Jitsi API config and auto-join room from URL slug
Fix configOverwrite/interfaceConfigOverwrite property names (were
configOverrides/interfaceConfigOverrides — silently ignored by Jitsi).
Disable pre-join lobby so rooms render immediately. Add error handling
for script load failures. Use external_api.min.js to match component.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:24:15 -04:00
Jeff Emmett 13410dd3e7 fix(rmeets): default room view to clean full-screen Jitsi without shell
Swap default /:room route to serve minimal full-screen Jitsi (previously
required ?minimal=1). Shell mode now opt-in via ?shell=1 or director mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:11:05 -04:00
Jeff Emmett 391d3a0cb6 feat(rflows): port distributed mortgage simulator from rfunds-online
Replaces the simple lending pool dashboard at /mortgage with the full
rfunds-online mortgage simulator. Models community-funded mortgages with
80+ tranches, variable terms, reinvestment loops, secondary markets,
and 5 visualization modes (Network, Flow, Grid, Lender calc, Borrower calc).

New files:
- mortgage-types.ts & mortgage-engine.ts (pure TS, copied verbatim)
- folk-mortgage-simulator.ts (1639-line web component, all views)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 14:10:59 -04:00
Jeff Emmett c037e13423 feat(rmeets): minimal mode for clean meeting links without rSpace shell
Add ?minimal=1 query param that renders a full-screen Jitsi meeting
page without the rSpace header, tab bar, or module chrome. Used by
scheduled meeting links so guests get a clean, direct video call
experience. Includes prejoin screen, all standard Jitsi controls,
and auto-closes the tab when the meeting ends.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 01:24:31 +00:00
Jeff Emmett 15ca1868b0 fix(rcal): fix calendar view layout bugs — uneven day widths, event overlap, duplicate detail
- Change grid-template-columns from repeat(7, 1fr) to repeat(7, minmax(0, 1fr)) to prevent
  content from stretching day cells unevenly
- Add computeEventColumns() helper using greedy interval-coloring algorithm with per-cluster
  column counts for tiling overlapping events side-by-side
- Apply sub-column layout to day view, week view, and horizontal day view so concurrent events
  no longer render on top of each other
- Guard duplicate day detail rendering when expanded day is at end-of-row or last day of month

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 15:24:30 -04:00
Jeff Emmett e4a0ccd80b feat(rtime): add gas tank fuel gauge and mycelial auto-connect suggestion
Replace thin 4px progress bar on task nodes with a prominent 12px fuel
gauge showing committed (green) + proposed (amber) hours vs total needed.
When an orb is dropped on open canvas, auto-find nearest unfulfilled task
and show a pulsing preview wire with confirm/dismiss buttons — human
approval required before creating the connection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 15:13:54 -04:00
Jeff Emmett 9897bf6517 fix(rcal): revert standaloneDomain to rcal.online — rspace.online hijacked all traffic
Setting standaloneDomain to "rspace.online" caused the domain→module redirect
system to treat ALL rspace.online traffic as rcal, redirecting / to /rcal.
The correct value is "rcal.online" which redirects old rcal.online → rspace.online/rcal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 19:25:14 -04:00
Jeff Emmett b1c54a6e66 fix: update rCal landing, de-spam info popups, fix stale URLs & banner persistence
- rCal landing: strip inline style overrides, use standard rl-* CSS classes
- rCal mod: update standaloneDomain from rcal.online to rspace.online
- Info popup: change from per-rApp auto-show to global one-time auto-show
- Update banner: track dismissal in sessionStorage so it stops re-showing
  on every page load within the same session (likely the "persistent banner")
- rpubs landing: fix stale rcart.online URLs → demo.rspace.online/rcart

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 19:14:27 -04:00
Jeff Emmett efb7ee5600 fix(rexchange): add demo seeding and server-rendered order book page
Replace missing folk-exchange-app.js with server-rendered HTML order book.
Seed 8 demo intents, 2 trades, and 5 reputation records on startup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 18:57:59 -04:00
Jeff Emmett bf8e11d426 feat(rexchange): add P2P crypto/fiat exchange module with escrow & reputation
Community members post buy/sell intents for CRDT tokens (cUSDC, $MYCO, fUSDC)
against 8 fiat currencies. Bipartite solver matches intents every 60s. Escrow
via token-service burn/mint trio. Reputation scoring with badges. 14 API routes,
canvas shape with physics orbs, and landing page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 18:32:16 -04:00
Jeff Emmett df8901c975 feat(rgov): clickable signoff gates with authority check + project recalc
Binary signoff nodes now have a clickable checkbox that toggles
satisfied state. Checks EncryptID JWT for authority (assignee match),
falls back to allowing anyone in demo mode. Toggling a signoff
auto-recalculates connected project aggregator gate counts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 02:07:13 +00:00
Jeff Emmett ba7a5733b8 fix(rgov): mobile-friendly canvas with collapsible sidebars and touch support
- Collapsible palette sidebar (hamburger toggle, hidden by default on mobile)
- Pinch-to-zoom and two-finger pan for touch/pen
- Larger touch targets for ports and zoom controls
- Responsive text sizing and compact toolbar on small screens
- Detail panel goes full-width on very small screens
- touch-action: none on SVG to prevent browser gesture conflicts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 02:04:52 +00:00
Jeff Emmett 2e2fbae8bf feat(rgov): standalone n8n-style GovMod circuit canvas
Add <folk-gov-circuit> component with interactive SVG canvas pre-loaded
with 3 demo governance circuits. 8 node types (signoff, threshold, knob,
project, quadratic, conviction, multisig, sankey) with pan/zoom, node
dragging, Bezier wiring, palette sidebar, and detail panel. Compatible
with rspace canvas shape types for rapplet integration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 01:55:52 +00:00
Jeff Emmett 5b4ab00a2d fix(rgov): render canvas directly instead of redirecting to /rspace
The rgov module page was showing a static description with a link to
/rspace. Now it renders the actual canvas (same as rspace module) with
moduleId="rgov" so GovMod shapes display inline at /rgov.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 01:41:08 +00:00
Jeff Emmett d1a9fc338d feat(rtime): add external time logs API and fulfillment dashboard
Add ExternalTimeLog schema and REST endpoints for ingesting time entries
from backlog-md CLI. Auto-creates commitments, links to existing tasks,
and supports solo settlement with reputation/skill curve updates.

New Fulfillment dashboard tab shows time logs, skill totals with progress
bars, and inline settle buttons. Export-to-backlog endpoint enables
importing rTime tasks into local backlog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 17:38:08 -07:00
Jeff Emmett b3d6f2eba8 feat(rgov): add quadratic, conviction, multisig & sankey GovMods
Four new governance circuit shapes for delegated democracy:
- folk-gov-quadratic: weight transformer (sqrt/log/linear dampening)
- folk-gov-conviction: time-weighted conviction accumulator (gate/tuner modes)
- folk-gov-multisig: M-of-N multiplexor gate with signer management
- folk-gov-sankey: auto-discovered governance flow visualizer with animated SVG

Registered in canvas-tools (4 AI tool declarations), index exports,
mod.ts (shapes, tools, types, seed Circuit 3), folk-gov-project
(recognizes new types), and landing page (Advanced GovMods section).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 17:03:39 -07:00
Jeff Emmett 5f2b3fd8d1 fix(rcart): streamline Transak widget — skip exchange screen, auto-fill user data
Added hideExchangeScreen, isAutoFillUserData, and paymentMethod params
to both Transak endpoints. This skips the initial exchange screen (we
already provide all required fields) and auto-fills email for Lite KYC,
reducing friction for small transactions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 16:04:59 -07:00
Jeff Emmett 42546c9a63 fix: use internal mailcow relay (port 25) for all SMTP transports
SMTP auth on port 587 was broken across all modules due to stale
credentials. Since rspace is on the mailcow Docker network, all 6
SMTP transports now use unauthenticated relay on port 25 when the
host is the internal postfix container. Fixes emails for: payment
receipts, space invitations, inbox approvals, agent notifications,
scheduled emails, and publication sharing.

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