Commit Graph

71 Commits

Author SHA1 Message Date
Jeff Emmett 06181d7b40 ci: retrigger pipeline
CI/CD / deploy (push) Successful in 1m25s Details
2026-04-02 15:11:16 -07:00
Jeff Emmett 964de36f5e ci: retrigger pipeline
CI/CD / deploy (push) Has been cancelled Details
2026-04-02 15:04:45 -07:00
Jeff Emmett ba5224c832 fix(ci): use SSH-based smoke test for reliable DNS resolution
CI/CD / deploy (push) Successful in 1m19s Details
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 14:13:18 -07:00
Jeff Emmett d0e236c3b2 ci: use REPO_READ_TOKEN for cross-repo encryptid-sdk clone
CI/CD / deploy (push) Successful in 1m23s Details
REGISTRY_TOKEN lacks read:repository scope.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 13:04:38 -07:00
Jeff Emmett c3fe57536b ci: use PAT for cross-repo encryptid-sdk clone
CI/CD / deploy (push) Failing after 6s Details
github.token is repo-scoped; use REGISTRY_TOKEN PAT for
sibling repo access.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 12:30:22 -07:00
Jeff Emmett a1bf151748 ci: clone encryptid-sdk for parent context Docker build
CI/CD / deploy (push) Failing after 9s Details
Build uses parent directory as context for encryptid-sdk dependency.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 12:24:09 -07:00
Jeff Emmett c81f089764 ci: use internal registry (bypass Cloudflare upload limit)
CI/CD / deploy (push) Failing after 8s Details
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 10:45:52 -07:00
Jeff Emmett 0e53c98cf3 ci: add Gitea Actions CI/CD pipeline
CI/CD / deploy (push) Has been cancelled Details
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 10:30:31 -07:00
Jeff Emmett 89ad7a1b12 chore: add backlog-notify onStatusChange hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 10:30:31 -07:00
Jeff Emmett 2e821fb2a7 feat: add InfoPopup with landing page content on first visit
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>
2026-03-16 04:51:48 +00:00
Jeff Emmett 8a8399eb74 feat: borrower affordability calculator — reverse-engineer loan from monthly budget
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>
2026-03-14 21:43:23 +00:00
Jeff Emmett 6a59ac6007 feat: Wise-style payment flow with send & request pages
- /pay — step-by-step send flow: amount → recipient → method → review → pay
  Supports card, bank transfer (ACH/SEPA), and crypto wallet
  Auto-fills sender email from EncryptID account
  Tracks recipient email for notification on token receipt
  Prefillable via query params (from payment request links)

- /pay/request — create shareable payment request links
  Generates prefilled /pay URLs with amount, currency, recipient, note
  Copy, email, or native share support

- API proxy for onramp session creation (avoids CORS)
- Transak widget email pre-fill from session

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 19:08:38 +00:00
Jeff Emmett 8772168c01 Merge branch 'dev' of ssh://gitea.jeffemmett.com:223/jeffemmett/rfunds-online into dev 2026-03-14 01:50:21 +00:00
Jeff Emmett f847d914f7 feat: rMortgage simulator — variable-term lending, lender return calculator, partial funding
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>
2026-03-14 01:50:14 +00:00
Jeff Emmett 2766984db7 feat: add rData (Umami) analytics tracking
Self-hosted zero-knowledge analytics via rdata.online/collect.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:24:34 -07:00
Jeff Emmett da6cd6dffd feat: add rData (Umami) analytics tracking
Self-hosted zero-knowledge analytics via rdata.online/collect.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:05:00 -07:00
Jeff Emmett d999695913 merge: dev into main — source nodes + tiered outcome phases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:39:47 -08:00
Jeff Emmett bd77cd9113 feat: add source nodes and tiered outcome phases to TBFF canvas
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>
2026-02-27 13:29:43 -08:00
Jeff Emmett 1d675ba666 Merge branch 'main' of ssh://gitea.jeffemmett.com:223/jeffemmett/rfunds-online 2026-02-27 12:55:07 -08:00
Jeff Emmett 016728bef0 merge: dev into main — TBFF canvas iteration with infinite zoom, trackpad pan, flow indicators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 12:54:04 -08:00
Jeff Emmett cb2dd9c51f feat: iterate TBFF canvas with infinite zoom, trackpad pan, flow indicators, and expandable outcomes
Add infinite scrollable canvas (minZoom 0.005), two-finger trackpad panning,
dynamic connection handle highlighting via ConnectionContext, funnel KPI
indicators (runway months, output count, overflow status), on-canvas funding
source badges, rIdentity/EncryptID funding source type, and double-click
expandable outcome nodes with full detail modal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 12:52:29 -08:00
Jeff Emmett 50fbb7808c brand: add (you)r* prefix to landing page title
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>
2026-02-26 04:28:50 +00:00
Jeff Emmett 8b2282a615 Merge branch 'dev' 2026-02-25 14:31:23 -08:00
Jeff Emmett e6591594ba fix: add Traefik priority 130 to override rspace-online routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:31:20 -08:00
Jeff Emmett c623a6a600 Merge branch 'dev' 2026-02-25 14:22:29 -08:00
Jeff Emmett 8ce24be479 feat: standardize header, categories, cross-app spaces
- 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>
2026-02-25 14:17:13 -08:00
Jeff Emmett 3ca157a588 Merge branch 'dev'
# Conflicts:
#	app/layout.tsx
#	app/page.tsx
#	components/AppSwitcher.tsx
#	docker-compose.yml
2026-02-25 13:37:24 -08:00
Jeff Emmett 6c23811516 feat: add space subdomain routing and ownership support
- 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>
2026-02-25 13:22:49 -08:00
Jeff Emmett 5f04086606 feat: add space subdomain routing and ownership support
- 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>
2026-02-25 13:19:47 -08:00
Jeff Emmett 5b22245076 Standardize emojis across header, favicons, and ecosystem links
Canonical emoji set for consistency:
- 🕸️ rNetwork (was 🌐), ⚖️ rChoices (was 🔀), 📋 rWork (was 💼)
- 🔐 rIdentity (was 🔑), 📖 rPubs (was 📰), 💸 rFunds (was 💰)
- 💰 rWallet (was 💼 in footer), 📬 rInbox (was ✉️)
- 💭 rForum (was 💬, differentiates from rChats)
- 📢 rSocials (was 📱), 🔨 rAuctions (was 🏛️ in footer)
- 🎬 rTube (was 📹 in footer)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 12:57:07 -08:00
Jeff Emmett 07a9d48f71 Add 💰 emoji favicon to rFunds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 12:39:51 -08:00
Jeff Emmett 1c9130aa2a Add internal provision endpoint for rSpace Registry
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>
2026-02-25 00:30:14 -08:00
Jeff Emmett f5df44b7a5 Merge remote-tracking branch 'gitea/main' 2026-02-25 00:06:13 -08:00
Jeff Emmett 63164a00ad feat: add demo space auth bypass in middleware
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>
2026-02-25 00:06:07 -08:00
Jeff Emmett f4629a48c2 feat: standardize Header, EcosystemFooter, and shared components
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>
2026-02-25 00:04:29 -08:00
Jeff Emmett b7308ffabc fix: landing page improvements and SpaceSwitcher domain support
- SpaceSwitcher auto-derives domain from window.location
- Fix landing page issues (redirect bug, duplicate footers,
  broken links, missing content)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:32:47 -08:00
Jeff Emmett 5ff8b8a83f fix: space links use subdomain URLs instead of rspace.online path
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>
2026-02-24 23:18:57 -08:00
Jeff Emmett 3323f7c9bf fix: nest Sign Out under username dropdown in UserMenu
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:09:15 -08:00
Jeff Emmett ce1804298a feat: add wildcard subdomain routing for rSpace spaces
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>
2026-02-25 08:08:31 +01:00
Jeff Emmett c8eaa420fa feat: standardize header with AppSwitcher, SpaceSwitcher, and UserMenu
- 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>
2026-02-24 23:03:11 -08:00
Jeff Emmett 00fc152ed2 feat: standardize AppSwitcher and EcosystemFooter across all rApps
- Update AppSwitcher with all 26 r*Apps in 8 categories
- Add EcosystemFooter component with consistent ecosystem links
- Categories: Creating, Planning, Communicating, Deciding,
  Funding & Commerce, Social & Media, Work & Productivity,
  Identity & Infrastructure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:48:03 -08:00
Jeff Emmett bdebf5cda7 refactor: migrate EncryptID URLs from encryptid.jeffemmett.com to auth.ridentity.online
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>
2026-02-24 22:20:08 -08:00
Jeff Emmett fcc253e7ca fix: dark background + emoji favicon for rStack design consistency
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>
2026-02-24 20:19:07 -08:00
Jeff Emmett d97adce1cd Merge branch 'main' of ssh://gitea.jeffemmett.com:223/jeffemmett/rfunds-online
# Conflicts:
#	app/page.tsx
2026-02-24 19:20:45 -08:00
Jeff Emmett bc4bed611c feat: add rStack AppSwitcher dropdown to header
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>
2026-02-24 19:15:51 -08:00
Jeff Emmett 047d7c3578 Add Docker healthcheck to docker-compose.yml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:49:12 -07:00
Jeff Emmett 4264ac9be2 feat: add dynamic enoughness layer to Budget River
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>
2026-02-20 21:38:23 +00:00
Jeff Emmett 15b9ba62a6 Add rData analytics tracking and ecosystem footer link
- 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>
2026-02-18 18:57:08 +00:00
Jeff Emmett 0afb85e9f7 feat: sankey-proportional waterfalls + multi-chain Safe support
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>
2026-02-18 10:32:07 +00:00
Jeff Emmett e683175c65 feat: add Budget River waterfall visualization view
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>
2026-02-18 10:02:49 +00:00