Adds dedicated /crm sub-route to rNetwork module embedding Twenty CRM
via ExternalAppShell iframe. Updates TWENTY_API_URL to use internal Docker
networking (http://twenty-server:3000). Includes full Twenty CRM Docker
stack (server, worker, postgres, redis) with Traefik routing for
crm.rspace.online and deployment instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update remaining references from legacy 4-value visibility model
(public/public_read/authenticated/members_only) to simplified 3-value
model (public/permissioned/private) in rInbox, rVote, identity component,
admin panel, and create-space page. Add tab trackRecent calls in shell.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align visibility values across server and UI to the canonical set:
public, permissioned, private (replacing public_read, authenticated,
members_only). Add inline space creation form to the space switcher
dropdown and tab bar instead of navigating to /new.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The folk-graph-viewer component was never calling /api/graph — it only
fetched /api/workspaces and /api/info, leaving nodes/edges empty for
non-demo spaces. Now loadData() fetches the graph endpoint and maps
server field names (label→name, works_at→work_at) to match the client
interface. Force layout and org colors are now dynamic instead of
hardcoded for 3 demo orgs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add conviction component to canvas toolbar, SHAPE_DEFAULTS,
newShapeElement switch, CSS position selectors, and connect-mode
selectors. Complete the wiring for folk-choice-conviction alongside
existing spider/rank/vote drawer enhancements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add folk-choice-conviction library and register in lib/index
- Refactor rNotes app layout and interaction
- Space visibility normalization in server/spaces
- Minor canvas.html tweaks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Pre-populated 4-node workflow template (trigger→action→condition→output) with blue arrows
- Add folk-choice-vote, folk-choice-rank, folk-choice-spider component libraries
- New rstack-space-settings component
- EncryptID encrypted vault schema and server endpoints
- Space management and community store enhancements
- Shell, landing, and module CSS refinements
- Tab bar, app switcher, identity, and MI component updates
- rNotes app improvements
- rFunds diagram adjustments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shapes are now grabbable/draggable/resizable on first click (body or
handles), editable on double-click, but clicking directly on a text
input (textarea, contenteditable, text input) immediately enters edit
mode and focuses the input — no double-click required.
Works by hit-testing text inputs at pointer coordinates before
initiating drag, checking both light DOM and shadow DOM of slotted
content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Blocking <head> script restores canvas-theme from localStorage
with prefers-color-scheme fallback (no FOUC)
- New theme.css with CSS custom properties for dark/light
- Removed data-theme from body/header/tab-row (now on <html>)
- Theme toggle writes to documentElement instead of body
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restore canvas-theme from localStorage on page load with a blocking
script before first paint (body) and a fixup for header/tab-row.
Applied to all three shell renderers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show sample data with an info banner instead of blank empty states
when Immich isn't configured or no mailboxes exist.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Break Automerge proxy chain in #shapeToData() and #updateShapeInDoc()
to fix "Cannot create a reference to an existing document object" on
canvas load and WS sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Break Automerge proxy chain in #shapeToData() and #updateShapeInDoc()
to fix "Cannot create a reference to an existing document object" on
canvas load and WS sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Zero-knowledge vault stores account data (profile, emails, devices,
wallets, preferences) as AES-256-GCM encrypted blob via backup API.
Key derived from WebAuthn PRF — server never sees plaintext. Dashboard
UI with save/restore buttons triggers passkey re-auth for encryption.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Convert cursor positions to canvas world coordinates (screen→world on
send, world→screen on render) so remote cursors appear at correct
canvas locations regardless of pan/zoom
- Add PresenceManager.setCamera() to reproject cursors on pan/zoom
- Add loading spinner overlay dismissed on first cache hit or sync
- Guard WebSocket open handler with readyState check after async load
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- folk-wrapper: createRenderRoot crashed because innerHTML="" removed the
slot from DOM, making parentElement null on the next line. Save parent
ref before clearing.
- sw.ts: module API paths (/space/module/api/...) weren't excluded from
caching. Changed startsWith("/api/") to includes("/api/"). Also fixed
catch handler returning undefined instead of a Response.
- image-gen: changed queue.fal.run to fal.run for synchronous responses.
The queue endpoint returns request_id, not the actual image data.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
createRenderRoot() was unconditionally reading x/y/width/height from HTML
attributes, overwriting values already set via JS properties before DOM
insertion. This caused all shapes to stack at (0,0) with auto dimensions
on page reload. Now only reads from attributes when they exist.
Also fixed eraser: hardDeleteShape() was only in the click handler which
never fired because pointerdown already removed the target element.
Moved Automerge deletion into the pointerdown handler.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The tab cache's extractContent() only collected <link> stylesheets, missing
inline <style> blocks. The canvas toolbar CSS is entirely inline, causing
unstyled toolbar when switching to the rSpace tab via tab cache.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each module now seeds starter content when a new space is created,
giving users something to interact with immediately rather than
an empty state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-in users can now browse the demo space without being
automatically redirected to their personal space.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rinbox: visual multisig approval cards with signer avatars, progress bars,
email previews, status-colored borders, and compose-for-approval form
- Rinbox: help/guide popout with feature cards, how-it-works steps, use cases
- Rinbox: rich demo data with threaded comments, signer lists, multiple mailboxes
- Module landing pages: improved UX descriptions for rBooks, rCal, rNotes,
rTrips, rVote, rWork with proper feature descriptions
- Added landingPage support to RSpaceModule interface and server routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gemini-2.0-flash-exp was removed from the API. Updated to:
- gemini-2.5-flash for text generation
- gemini-2.5-pro for outline/reasoning
- gemini-2.5-flash-image for image generation with responseModalities
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Edge widths now reflect actual dollar flow (source rates, overflow excess,
spending drain) instead of just allocation percentages. Zero-flow paths
render as ghost edges. Edge labels show dollar amounts alongside percentages.
Funnel nodes display an inflow satisfaction bar showing how much of their
expected inflow is actually arriving. Outcome progress bars enhanced to 8px
with dollar labels.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously only double-click opened the editor/modal. Now single click
(without dragging) opens the side editor panel. Double-click still
opens rich modals for outcome/source nodes. Added drag threshold (5px)
so clicks don't accidentally start dragging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>