- Default voice en-US-AvaMultilingualNeural -> en-US-AndrewMultilingualNeural
(smoother, less feminine timbre).
- Volume 0.55 -> 0.3, rate -8% -> -10%, pitch -2Hz -> -6Hz.
- Browser fallback matches: pitch 0.85, volume 0.3.
- Client passes voiceMode flag to /api/mi/ask; server appends a VOICE
MODE section to the system prompt demanding ≤1-2 short sentences,
no lists/markdown/emoji/preamble — because listening to long replies
is tedious.
Suspended contexts silently queued audio that never played. Await resume,
split connect() chain to avoid undefined-return on older browsers, and
re-check state after source setup in case first resume lost the gesture.
- epub-gen.ts: reflowable (markdown → styled xhtml) and fixed-layout
(Typst per-page PNGs wrapped as pre-paginated EPUB3). No new deps.
- typst-compile.ts: compileDocumentToPages() rasterizes Typst directly
to PNG via the CLI (no poppler/mupdf needed).
- Persistent publications store at /data/rpubs-publications/{space}/{slug}
with public reader page, PDF + EPUB downloads at /{space}/rpubs/publications/{slug}.
- Preview/Press step now has quick EPUB download buttons next to PDF.
- Publish panel: "Publish to {space}" is now the primary action, showing
hosted URL + copy-link after publishing. EPUB variants remain in downloads.
- Dockerfile: new PUBS_DIR volume for persistence.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Deduplicate cursor rendering using #uniquePeers() (was showing
multiple cursors per user from different tabs/sessions)
- Strict same-page filtering: cursors only visible when peers share
the same effectiveViewId (viewId ?? moduleId)
- Users on different rApps no longer see each other's cursors
- Applied same fixes to focus rings and panel "different view" badge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dockerfile.encryptid was missing COPY for server/welcome-email.ts,
causing container crash on startup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Banzhaf & Shapley-Shubik power index computation via DP, integrated
into trust engine 5-min cycle. Power tab in rNetwork 3D graph viewer
with animated bar chart, Gini/HHI gauges, and Banzhaf-scaled node
sizes. On-demand computation when DB empty. Left-drag now rotates.
New files:
- src/encryptid/power-indices.ts (pure math: Banzhaf DP, SS DP, Gini, HHI)
- modules/rnetwork/components/folk-power-indices.ts (standalone component)
API: GET /api/power-indices, GET /api/power-indices/:did,
POST /api/power-indices/simulate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restructured rTime from pool+weaving side-by-side to commitment entry
form (left 50%) and pool orb visualization (right 50%). Inline form
replaces modal for pledging time. Commitments list shows below form.
Weaving SVG moved to separate toggled view via "Weave" button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Enable chat notifications (brief popup for all participants)
- Move chat panel to right side via CHAT_PANEL_POSITION
- Applied to both clean room mode and folk-jitsi-room shell mode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add "recording" to Jitsi toolbarButtons in both clean room mode
and folk-jitsi-room shell mode so users can trigger Jibri recording
- Add "View Transcript & Summary" link on meeting-ended screen
- Jibri network connectivity fixed on Netcup (was on wrong Docker
network, couldn't reach Prosody XMPP)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add saveDocImmediate() for synchronous awaitable saves (no debounce)
- Add SyncServer.flushAll() to iterate all in-memory docs
- Fix eviction race: onDocEvict now uses saveDocImmediate instead of
debounced saveDoc (which could fire after doc deleted from memory)
- Add SIGTERM/SIGINT handlers with 10s timeout safety net
- Add visibilitychange flush on client (reliable on mobile/bfcache)
- Flush pending IDB saves in DocSyncManager.disconnect()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only redirect to personal dashboard when on demo landing page.
Logging in from any module page now reloads in place.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove readonly and auto-focus the username webauthn input so mobile
browsers show passkey suggestions immediately when the sign-in modal
opens, matching the desktop experience.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add conditional mediation to sign-in modal so mobile browsers show
saved passkeys with usernames in the autofill area (desktop parity)
- Add publicWrite to rcred module so recompute route's own auth runs
instead of being blocked by the global write-access middleware
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Filter restored tabs against valid moduleIds from moduleList, deduplicate
on every restore path (localStorage, server sync, BroadcastChannel).
Add closed-module tracking to renderExternalAppShell to prevent server
sync from resurrecting tabs closed in the current session.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add shell tabs: Commitment Pool, Fulfillment, Open in Cyclos
- Move stats (hours, contributors, skill breakdown) into pool legend
- Remove internal tab-bar and stats-bar from component
- Listen for rapp-tab-change shell events for view switching
- Legacy routes redirect to new tab paths
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add app.notFound() handler with themed 404 page instead of Hono's
plain "404 Not Found". Restrict canvas.html SPA fallback to /rspace
sub-paths only — was serving index.html for all unmatched routes,
causing stale "Activated" page to appear on navigation errors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add pool-out port to folk-commitment-pool, two new applets (weaving-coverage
for rTime, resource-coverage for rTasks), fetchLiveData polling in FolkApplet,
and canvas AI tool declarations for both new applets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reduce tabs to Members (default), Trust, CRM
- Remove empty outputPaths (Connections, Groups placeholders)
- Hide subnav when tabbar is present (avoid double menu)
- CRM tab redirects to the CRM sub-app
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
serveStatic resolves relative to dist/, so /dist/modules/ doubled the
prefix and 404'd. All other modules use /modules/rcred/file.js.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline filter buttons with standard shell sub-tabs (Members,
People, Companies, Trust, Layers). Default view now renders the 3D graph
on the Members tab with proper shell navigation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dashboard was empty because folk-cred-dashboard.ts had no Vite build
entry — the JS never got compiled. Add build step to vite.config.ts,
fix script src to /dist/modules/rcred/folk-cred-dashboard.js, and
darken badge background from #fbbf24 to #d97706 so it doesn't blend
with the ⭐ emoji.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add r⭐ badge for rcred in favicon, app-switcher, and tab-bar badge
maps. Render 'r' with #dc8300 orange in badge pills across all three
components (favicon SVG tspan, app-switcher HTML spans, tab-bar HTML
spans). App names (e.g. "rDocs") intentionally left uncolored.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Triggers recomputeSpace('demo') 10s after init if no scores exist.
Allows unauthenticated recompute on demo space so visitors can click
the Recompute button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rcred.rspace.online was being treated as a space slug, triggering
auto-provision + redirect to /rspace. Now any subdomain matching a
known module ID (rcred, rvote, etc.) redirects to demo.rspace.online/{moduleId}.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1 integration: fetch Drips account state via GraphQL API (eth_call fallback),
map streams → Source nodes and splits → Outcome nodes with auto-layout, import into
canvas flows with dedup and resync tracking. Schema v5→v6 adds dripsSyncs to CanvasFlow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Week view: replace calc()-based absolute positioning with a mirror grid
overlay (grid-template-columns: 44px repeat(7,1fr)) so event columns
align pixel-perfectly with the underlying CSS grid at any browser zoom.
Fix min-interval padding to match min display size in week view
(20→23 min for 18px height) and day-horizontal view (30→45 min for
60px width), preventing visual bleed between adjacent short events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove authenticatorAttachment:'platform' constraint so Firefox (and all
browsers) show security keys, phone-as-authenticator, and PIN options
alongside biometrics when registering a new passkey.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Simulation now has a 🔁 button that auto-replays the flow visualization.
Detects steady state, pauses briefly, resets to initial snapshot, repeats.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Demo space now seeds a clean welcome card explaining rSpace plus organized
feature cards for all 32+ rApps grouped by category, instead of 75 random
scenario objects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Single-click module to zoom into cluster with smooth camera animation,
revealing doc labels. Double-click to open in new tab. Breadcrumb bar
for back-navigation. Non-focused nodes dim to 15% for context.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Send branded welcome email when user first adds profileEmail
- Reframe landing page around group coordination, not app listing
- Wordmark: orange r + teal Space matching favicon branding
- (you)rSpace wordplay in tagline, final CTA, meta tags, email
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
One-click extraction of generated artifacts (images, videos, SVGs) from
generator tools into standalone canvas objects visible to all collaborators.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaced dual-bar layout (subnav + tabbar) with standard outputPaths
so rData views (Content Tree, Cloud, Analytics) render in the unified
subnav pill bar like all other modules.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bare-domain rspace.online/{moduleId} now rewrites directly to demo
space instead of rendering marketing landing pages. Also removed
auto-show info panel on first visit — info panel now only opens
via the info button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
localStorage is per-subdomain so dismissing on demo.rspace.online didn't
persist to jeff.rspace.online. Now uses a .rspace.online cookie (10yr
max-age) so one dismiss covers all subdomains.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Persistent chat panel accessible from any page via header icon.
Sliding right panel (360px) with channel selector, message feed,
composer, and unread badge. REST polling with localStorage state
persistence. Includes unread-count API endpoint for badge updates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tours were demoing stale features and auto-triggering annoyingly.
TourEngine.start() now returns immediately (no-ops). Shell welcome
tour JS/CSS/HTML removed. "Start Guided Tour" links stripped from
all 27 landing pages. Tour CSS selectors removed from info panel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>