Shows an informational popup with rich landing page content on first
visit, re-openable via a fixed info button (bottom-right corner).
Dismissible via X button, overlay click, or Escape key. Uses
localStorage to track first-visit state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Given a monthly payment budget, shows max borrowable amount across different tier
mixes (blended, all-single-tier, short-heavy, long-heavy). Expandable breakdown
with per-tier allocation table, stacked bar, and interest comparison. Also fixes
pre-existing PaymentFlow.tsx type error from merge.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add full mortgage simulation engine with distributed tranches across 5 lending tiers
(2yr/5yr/10yr/15yr/30yr), reinvestment mechanics, secondary market transfers, and
overpayment routing. Includes four visualization modes: mycelial network, Sankey flow,
lender grid, and lender return calculator comparing monthly liquidity vs reinvest-to-term
strategies. Tranches can be partially funded (open slots visible in all views).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Source nodes represent funding origins (Card/Safe/rIdentity) with
configurable flow rates and allocation edges to funnels. Outcome
nodes now support phased funding tiers with progressive task
unlocking as funding thresholds are reached.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reinforces the r-suite "your tools" philosophy across all rApp landing pages.
Also normalizes title separators to em-dash (—) for consistency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- AppSwitcher: rTube/rSwag → Creating, rSocials → Sharing, rData → Observing
- EcosystemFooter: updated link order to match new categories
- UserMenu: 🔑 Sign In button, 🔐 lock when logged in
- SpaceSwitcher: reads EncryptID token, sends Bearer header
- /api/spaces proxy: forwards to rspace.online (canonical spaces)
- /api/me: verifies EncryptID token for auth status
- Header.tsx: standardized bg-slate-900/85 across all apps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Traefik wildcard HostRegexp for <space>.rfunds.online subdomains
- Middleware subdomain extraction and path rewriting
- Provision endpoint with owner_did acknowledgement
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Traefik wildcard HostRegexp for <space>.r*.online subdomains
- Middleware subdomain extraction and path rewriting
- Provision endpoint with owner_did acknowledgement
- Registry enforces space ownership via EncryptID JWT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Simple acknowledge endpoint — no DB to provision. Returns ok status
when called by the registry during space activation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Skip EncryptID token check for demo subdomains when
ENCRYPTID_DEMO_SPACES env var is set. Uses isDemoRequest()
from @encryptid/sdk v0.2.0.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move nav to shared Header in layout.tsx, remove inline header/footer
from page.tsx. Add UserMenu, SpaceSwitcher, and updated AppSwitcher.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Space links now go to <space>.<app-domain> (e.g., myspace.rfunds.online)
instead of rspace.online/<space>. Domain derived from window.location
when not explicitly provided.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All registered spaces (e.g. demo.rfunds-online.online) now route to this
app at Traefik priority 100. Bare domain stays at priority 120.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace inline nav/Navbar with shared Header component
- Header pattern: AppSwitcher dropdown / SpaceSwitcher / actions / Sign In
- SpaceSwitcher and UserMenu work without SDK dependency
- Consistent across all r*Apps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Part of the ridentity.online branding migration. The EncryptID auth
server is now accessible at auth.ridentity.online (with the legacy
encryptid.jeffemmett.com kept as a backward-compatible alias).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standardize to dark background (#0f172a / slate-900) and add emoji
data URI favicon matching the rStack ecosystem.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds the unified rStack app switcher with pastel badges, emoji icons,
and categorized navigation across all 17 rStack apps.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Funnels can now declare a sufficientThreshold and dynamicOverflow.
When dynamicOverflow is true, surplus routes to the most underfunded
targets by need-weight instead of fixed percentages. Visual layer adds
golden glow on sufficient funnels, sufficiency progress bar, ENOUGH
status pill, and a system-wide Enoughness Score badge.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Inject rdata.online/collect.js tracking script in layout
- Add rData link to ecosystem footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite budget river waterfalls with bezier-curved tapered shapes where
width encodes flow magnitude (inflows flare into river, outflows taper
out). Add Ethereum, Base, Polygon, Arbitrum to Safe chain detection.
Fetch real transaction history for live inflow rates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New /river page showing funding flows as an animated river with waterfalls
cascading in (inflows) and out (spending). SVG-based with CSS animations
for water effects, ripples, and current lines. Supports demo mode with
simulated data and live mode via Safe Global API for real on-chain balances.
Also includes source node type and landing page nav links.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>