- 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>