- Fix: add publicWrite to cartModule so payment routes aren't blocked
by space-level write auth (routes have their own auth checks)
- Add paymentType field: 'single' (one-time) or 'subscription' (reusable QR)
- Add maxPayments inventory limit: QR codes auto-fill when limit reached
- Add paymentCount to track how many payments received
- Add enabledMethods: toggle card/wallet/encryptid per payment request
- Payment page only shows enabled tabs, shows inventory progress bar
- Subscriptions reset to 'pending' after each payment until filled
- New 'filled' status for inventory-limited payments that are full
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
folk-calendar subscribes to clock:tick/daily to refresh today marker.
folk-reminders-widget auto-refreshes every 5 minutes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
TASK-13: rApp frontends now inject EncryptID bearer tokens via authFetch()
and gate mutations behind requireAuth() — rvote, rfiles, rmaps all protected.
Demo mode unaffected.
TASK-41: Dynamic shape registry replaces 300-line switch in canvas.html and
165-line if-chain in community-sync.ts. All 41 shape classes now co-locate
fromData()/applyData() with their existing toJSON(), making shape creation
and sync fully data-driven.
TASK-42: Data pipes between shapes via typed ports. Shapes declare
input/output PortDescriptors, arrows connect ports with type checking,
100ms debounce, and color tinting. AI shapes (prompt, image-gen, video-gen,
transcription) have initial port descriptors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace TBFF preset with 19-node BCRG Community Flow (2 sources →
central funnel → 5 person funnels → 11 outcomes). Seed matching
BCRG Outcomes board in rTasks (4 DONE, 5 IN_PROGRESS, 2 TODO).
Add SyncServer.registerWatcher() for cross-module doc change hooks.
When an rFlows outcome is marked "completed", auto-create a DONE task
in rTasks with ref:rflows:outcome:{id} deduplication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace fake demo data with real HuggingFace CDN Gaussian splats (train,
truck, garden) that open in an inline 3D viewer without server round-trips.
Add "Generate from Image" tab that sends images to fal.ai Trellis for
AI-powered 3D model generation. Add gallery header and progress UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the Graph tab's external link with an interactive SVG graph
rendered directly from CRM data (people, companies, opportunities).
Companies appear as colored clusters with people orbiting around them,
and cross-org opportunity links shown as dashed purple edges.
Includes pan/zoom/drag interactions and auto fit-to-view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add shared ViewHistory<V> utility class that provides a proper navigation
stack for rApps with hierarchical views. Replaces hardcoded data-back
targets with stack-based back navigation across 10 rApps: rtrips, rmaps,
rtasks, rforum, rphotos, rvote, rnotes, rinbox, rschedule, rcart.
Rename rWork module to rTasks — directory, component (folk-tasks-board),
CSS, exports, domains, and all cross-module references updated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add segment-based live transcription to voice recorder and in-editor
dictation, wire AUDIO note recording, and add send-to-notebook endpoint
for RAG indexing via open-notebook service.
- Add openNotebookSourceId field to NoteItem schema
- Add POST /api/notes/send-to-notebook proxy route to open-notebook
- Add dictation preview bar with interim speech below editor toolbar
- Rewrite voice recorder with TranscriptSegment-based live rendering
- Convert transcript segments to Tiptap JSON with timestamps on save
- Wire Record button in AUDIO note view with full MediaRecorder flow
- Add Send to Notebook button + Indexed badge in note meta panel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded dark-mode colors with --rs-* CSS custom properties
for automatic light/dark theming. Add inbox header bar with unread
count, sender avatar circles, and rich thread status indicators
(replied, forwarded, needs-attention badges with visual hierarchy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire rPubs editor to the shared local-first runtime so multiple users
can co-author publications in real time. Drafts persist to IndexedDB
and sync via WebSocket automatically.
- New schemas.ts with PubsDoc schema and pubsDocId helper
- Editor connects to runtime, discovers/creates drafts
- Debounced content sync (800ms) with cursor preservation
- Title/author/format metadata sync between collaborators
- Draft list sidebar with create/switch functionality
- Sync status badge in toolbar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix tab duplication by syncing tabBar state after layer-add, deduplicating
Automerge layers, and syncing app-switcher tabs to CommunitySync. Add info
icon popover that lazy-loads module landing page content with auto-show on
first visit. Add 5-step guided tour for rFlows with spotlight overlay,
auto-advance on click, and toolbar restart button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Transak deprecated direct query-parameter URLs. The new flow uses
their Create Widget URL API with a Partner Access Token to generate
one-time sessionId-based URLs server-side. Also stops exposing the
API key in config endpoints and adds referrerpolicy to the iframe.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The sandbox attribute was blocking Transak's internal redirects,
causing T-INF-101 access denied errors. Transak needs full iframe
capabilities for its payment flow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Infisical has BASE_CHAIN_ID=84532 (Base Sepolia testnet) which
conflicts with the live Openfort API key. Hardcode 8453 to prevent
testnet/mainnet mismatch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Openfort rejects ':' in player name query param. Changed label from
'user:email@example.com' to just 'email@example.com'. Also improved
error serialization for Openfort's non-standard APIError objects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move zoom bars between calendar and map panes when docked (3-column grid layout)
- Add likelihood/pencil-in feature: tentative events render with dashed borders, lower opacity, percentage badges across all 7 view paths + modal + map markers
- Expand demo data from ~47 to 105 events spanning months -1 to +8 with periodic (yoga, standups), episodic (workshop series, book club), and tentative (25-80% likelihood) events
- Add Community and Health source categories
- Remove floating map option — map is now docked or minimized only
- Decouple zoom bars by default (spatialGranularity=Country, zoomCoupled=false)
- Preserve effective spatial index when decoupling via 'c' key or button
- Extend lunar computation range to month+9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add <rstack-module-setup> component for inline module configuration
(replaces static "Not Configured" instructions). Enhance settings
gear panel to show the current module's settingsSchema at the top.
Pass module-id through shell rendering and tab-cache switching.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all hardcoded dark colors with --rs-* CSS variables in both
demo and room modes. Add LIGHT_STYLE (CARTO voyager) tiles and
MutationObserver to swap MapLibre styles on theme toggle. Make SVG
demo map theme-aware (ocean, continents, graticule, pins). Fix mobile
layout with calc(100vh) sizing instead of fixed heights. Remove
hardcoded theme: "dark" from mod.ts renderShell calls.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- rCal: default map to docked (side-by-side) layout instead of floating overlay
- rCal: switch map tiles between Voyager (light) and dark_all (dark) based on theme
- rCal: boost dark mode map brightness/contrast for readability
- rCal: watch for theme changes via MutationObserver for live tile swapping
- Tab bar: replace text badges with emoji icons, fix badge colors for light themes
- App switcher: fix badge text color to dark for gradient backgrounds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move toolbar from horizontal top-right strip to vertical left-side panel
with larger, more prominent buttons and emoji icons. Replace basic +/-
zoom buttons with a pill-shaped widget showing live zoom percentage and a
fit-to-view button. Remove the "0% Enough" sufficiency badge overlay.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Notification routes: wrap GET / and GET /count in try-catch, return
graceful fallbacks instead of 500s when DB table is missing/unavailable
- getUnreadCount: add null safety (row?.count ?? 0) and catch DB errors
- Service worker: add .catch(() => {}) to all cache.put() calls to
suppress NetworkError on quota-exceeded or corrupted cache entries
- On-ramp error display: coerce err.error to string so alerts show the
actual message instead of [object Object]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
Add three alternative views to the campaign planner canvas:
- Timeline: horizontal chronological layout with day columns and phase bars
- Platform: kanban columns grouped by platform with post cards
- Table: compact sortable table with status, platform, content, dates
View switcher in toolbar preserves canvas state when switching. Clicking
any post in alt views navigates back to canvas with that node selected
and centered. Keyboard shortcuts guarded to canvas-only view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extension gets Clipper/Cart mode tabs, space/cart picker with persistence,
JSON-LD product detection, "Add to rCart" context menu, and badge count.
Web UI shows a dismissible indigo banner prompting extension install when
not detected. Content script sets detection marker on rspace.online pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously the planner restored a stale zoomed-out viewport from
localStorage, and fitView() could fail silently if the SVG had zero
dimensions during shadow DOM layout. Now: skip viewport restore on
initial load, retry fitView up to 3 rAFs, and clamp min zoom to 50%.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace flat source cards with pipe/valve/spigot faucet SVG. Click opens a
centered purchase modal (label, amount, payment method) instead of the cramped
side panel. Adds MetaMask as a new payment option alongside Card and rIdentity.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds "Automation Canvas" CTA button in hero and "Your Automations" section
that fetches workflows from API and displays as grid cards or compact list.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add /demo route, Vite build entry for trips-demo.ts, and demo page
CSS (hero, toolbar, 2×3 card grid, calendar, polls, funds, cart).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add reply, reply-all, and forward endpoints with proper RFC 5322 threading
headers (In-Reply-To, References). SMTP send executes automatically when
approval threshold is met via nodemailer. Personal inbox CRUD lets users
connect their own IMAP accounts. Agent inbox system with regex-based rules
for auto-classify/auto-reply (drafts go through approval workflow).
Multi-sig email canvas shape (folk-multisig-email) with draft/pending/sent
states and 5s polling. Per-space auto-provisioning via onSpaceCreate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The /campaigns route was serving folk-campaign-manager (simple list view)
instead of folk-campaign-planner (the drag-and-drop flow canvas). The
planner was fully built but had no route.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 3 interactive D3 visualizations (Balance River Timeline, Multi-Chain
Flow Map, Single-Chain Sankey) as tabbed views alongside the existing
balance table. D3 loaded lazily from CDN on first viz tab click. Demo
mode shows all visualizations with mock TEC Commons Fund data.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rsocials had defaultScope: "global" but client components passed the raw
space slug, creating threads in space-specific docs (e.g. commonshub).
Server routes then looked in the non-existent "global" doc → 404.
Changed to defaultScope: "space" to match how client actually works.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reddit-style vote column: prominent up/down chevrons flanking the score
on each ranking proposal card, with x² cost indicator
- Quadratic weight picker: compact inline buttons for +2/+3/+5 and -2
below the proposal description (supplements chevron ±1)
- Priority Trends chart: SVG line chart showing how proposal scores
evolve over time, with color-coded lines per proposal, end dots,
grid lines, time labels, and a toggleable legend
- Score history tracking: records snapshots on each vote, seeds 7 days
of simulated history for demo mode
- Orange for upvotes, blue for downvotes (matching rvote.online palette)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the map room placeholder with a real MapLibre GL dark map (CartoDB
dark_all tiles). Port RoomSync from rmaps-online for WebSocket-based
participant/waypoint sync. Add localStorage room history with thumbnail
capture, participant sidebar with ping buttons, continuous GPS sharing
via watchPosition, and waypoint drop. Demo mode unchanged.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Links on subdomain routing (e.g. jeff.rspace.online) were including
the space in the path (/demo/rsocials/campaigns) instead of just
/rsocials/campaigns. Added basePath getter to all components and
detect subdomain in the server-rendered hub page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a visible spatial zoom slider (teal) below the existing temporal slider
(indigo) with a coupling toggle between them. When coupled, dragging either
track moves both; when decoupled, spatial slider controls map zoom independently.
Fix T_TO_S mapping gaps (Season→Region, Decade→Planet).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously the map rendered ALL events regardless of which time period
the calendar was displaying. Now markers, transit lines, and map bounds
are filtered to the visible date range (day/week/month/season/year).
The map auto-fits to the bounds of visible located events when zoom
coupling is active.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rich landing page for rspace.online/rmeets with sections on self-hosted
infrastructure, data sovereignty, ecosystem integrations, and roadmap
(local transcription, BYOS, data integrations).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds rMeets module with hub page (Quick Meet, Join Room, Jitsi Lobby)
and room pages that embed jeffsi.localvibe.live via renderExternalAppShell.
Jitsi URL configurable via JITSI_URL env var.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix rFlows light/dark theme: change CSS selectors from :root /
[data-theme] to :host / :host([data-theme]) so they work inside
shadow DOM. Mirror data-theme attribute from <html> onto the
folk-flows-app host element via MutationObserver.
- Canvas toolbar: icons only (no text labels), hover opens group
name header + submenu flyout. Minimize button moved to top with
chevron icon, collapses to wrench icon. Mobile gets emoji + text
via ::after pseudo-element for touch accessibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>