- Shape drag now accounts for canvas CSS transform scale so elements
track the cursor correctly at all zoom levels
- Collision resolution uses minimum penetration depth algorithm instead
of movement-direction bias, preventing elements from flipping sides
- Replaced all \uD83D surrogate pair escapes and \u00D7/\u276E/\u276F/
\u2022 escapes with actual Unicode characters across 60+ files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- (You)r* becomes the h1 heading, old titles preserved as subtitles
- Standardized section order: Features → How It Works → Built on Open Source → Your Data Protected → CTA
- Each module lists its open source dependencies (Typst, Immich, MapLibre, Discourse, etc.)
- New "Your Data, Protected" section with E2E encryption + zero-knowledge (coming soon)
- Added .rl-subtitle CSS class for subtitle styling
- Module-specific sections preserved between How It Works and Built on Open Source
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add (You)rModuleName tagline to all 22 module hero subtexts
- Move Try Demo button next to rApp dropdown in landing page header
- Add <rstack-mi> bar to landing page header center
- Create rNetwork landing page (was missing)
- Wire rNetwork landingPage into mod.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace broken proxy-based landing pages with inline HTML for every
module. Each gets a landing.ts exporting renderLanding() with hero,
how-it-works, features, and CTA sections using shared .rl-* CSS.
12 ported from standalone repos (rPubs, rWork, rVote, rCal, rCart,
rTrips, rNotes, rMaps, rForum, rInbox, rSocials, rWallet) and 9 new
(rBooks, rChoices, rData, rFiles, rFunds, rPhotos, rSplat, rSwag, rTube).
Infrastructure: RICH_LANDING_CSS in shell.ts, landingPage field on
RSpaceModule, routing checks inline content before proxy fallback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename all 23 module IDs to r-prefixed slugs (canvas→rspace, notes→rnotes, etc.)
- Root rspace.online/ now serves the landing page instead of redirecting to demo
- rStack header in app switcher dropdown is now a clickable link to rstack.online
- Update all internal navigation links, badge maps, and URL helpers
- Space root redirects to /rspace instead of /canvas
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Every module except canvas was using renderIframeShell() to embed standalone
domains (rdata.online, rwork.online, etc.) via iframe. None of these domains
had independent deployments — they routed back to the same container, causing
infinite redirect loops or 404s.
Now all 22 modules render their web components directly inside renderShell(),
eliminating cross-origin failures, iframe loading spinners, and ~820 lines
of dead code. Standalone domain requests are internally rewritten to module
routes instead of 301 redirecting.
- Remove renderIframeShell(), renderStandaloneShell(), IframeShellOptions
- Remove keepStandalone set; rewrite standalone domains internally
- Convert all module GET / handlers to renderShell + <folk-*> components
- Delete 20 standalone.ts entry points (circular/broken)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add the missing tab bar to the canvas page so users can switch between
rApp layers (with full CommunitySync persistence). Add an "rApps"
toolbar group that embeds any of the 18 remaining modules as interactive
iframes directly on the canvas. Switch all module page routes to
renderIframeShell, loading standalone domains inside the unified shell.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Consistent nav headers, button styles, and layout patterns
across calendar, cart, choices, data, forum, funds, inbox,
maps, network, notes, providers, trips, vote, and work modules.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces the full layer/tab architecture for rSpace — each rApp becomes
a layer in a vertical stack with typed flows (economic, trust, data,
attention, governance, resource) connecting them.
New components:
- rstack-tab-bar: tab bar with flat/stack view toggle, drag reorder,
drag-to-connect flow creation with kind/label/strength dialog
- folk-feed: canvas shape that pulls live data from other layers with
bidirectional write-back (edit items inline, push changes to source API)
- layer-types: Layer, LayerFlow, FlowKind types and color palette
Automerge schema extended with layers, flows, activeLayerId, layerViewMode.
CommunitySync gains 11 new methods for layer/flow CRUD.
Feed definitions added to 10 modules (funds, notes, vote, choices, wallet,
data, work, network, trips, canvas) with typed feeds and acceptsFeeds.
RSpaceModule interface extended with FeedDefinition and acceptsFeeds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Header consistency:
- Fix 52px → 56px header height in 7 module CSS files (pubs, funds,
providers, books, swag, choices, cart)
- Remove custom header background overrides in books.css and pubs.css
- All pages now use the same 3-section header layout: left (app/space
switchers), center (mi), right (identity)
- Add <rstack-mi> to all 4 standalone HTML pages (index, admin,
create-space, canvas) and both shell renderers
mi AI assistant:
- New <rstack-mi> web component with search input "Ask mi anything..."
- Dropdown panel with streaming chat UI, typing indicator, markdown
formatting
- POST /api/mi/ask endpoint: streams from Ollama with full rApp context
in system prompt (all 22 modules, current space/module)
- Graceful fallback to keyword-based responses when Ollama unavailable
- Configurable via MI_MODEL and OLLAMA_URL env vars
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The light theme was causing the header bar to render with a white
background, clashing with the dark-themed module content underneath.
All modules and both shell renderers now default to dark theme.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
App switcher:
- Add standaloneDomain to ModuleInfo (exposed via /api/modules)
- Add missing standaloneDomain to 5 modules: funds, files, wallet,
choices, forum (20/21 modules now have standalone domains)
- Show external link arrow on hover for each app's standalone site
Space switcher:
- Pass auth token when fetching /api/spaces so the API returns
private (authenticated/members_only) spaces the user owns or
is a member of
- Group spaces into "Your spaces" (with role badge) and "Public
spaces" sections
- Reload space list on auth-change (sign-in/sign-out)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 5 — Choices: Lightweight module wrapping the canvas-native
folk-choice-vote/rank/spider components. Lists choice shapes from the
space's Automerge doc, links to canvas for creation/interaction.
Phase 6 — Funds: Port of rfunds-online BudgetRiver visualization to
vanilla web component. Includes simulation engine (pure functions),
types (stripped @xyflow), demo presets, and SVG sankey river with
animated waterfalls, overflow branches, and sufficiency badges.
Flow-service API proxy for same-origin frontend calls.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>