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>
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>.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>
Creates 3 proposals (ranking/voting/passed) with votes and final
votes from 3 demo users showing governance lifecycle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Skip visibility/isPublic and ownerDid - the Prisma schema has columns
that don't exist in the production DB yet. Let DB defaults handle it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The DB schema has isPublic (boolean) not visibility (string).
The Prisma schema was updated but never migrated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auth-free POST /api/internal/provision creates Space + system User + ADMIN
membership with starting credits when called by the registry.
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>
- 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>
- 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>
Replace the NextAuth Credentials provider wrapper with direct EncryptID
SDK integration. The auth() function now reads the encryptid_token cookie
directly, keeping the same interface so all API routes and server
components work unchanged.
- Replace SessionProvider with EncryptIDProvider
- Add /api/auth/session endpoint for cookie management
- Update signin/signup pages to use SDK login/register + cookie sync
- Update Navbar to use useEncryptID() hook
- Remove next-auth, @auth/prisma-adapter, bcryptjs dependencies
- Drop Account, Session, VerificationToken Prisma models + DB tables
- Remove legacy email/password register route
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Prisma Space model uses ownerDid (DID string) not creatorId.
Also hoists user lookup to avoid duplicate query.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolves user's effective SpaceRole by checking local rVote membership
first, then falling back to EncryptID server for cross-space membership.
Includes 5-minute in-memory cache and hasCapability helper.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace local state InteractiveDemo with real-time WebSocket connection
to the shared demo community. Votes sync across the r* ecosystem in
real-time. Updated home page section header to match.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace inline WebAuthn ceremony with SDK EncryptIDClient.
Remove email/password credentials provider from NextAuth config.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ecosystem footer with all 10 r* app links to the root layout,
visible on every page including the interactive demo.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The spaces route accesses session.user.did for space ownership.
Adding the optional property to the type augmentation fixes the
TypeScript compilation error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The SDK's dist/ directory may not include .d.ts files in all build
environments (server builds without TypeScript). These ambient
declarations prevent "Could not find a declaration file" errors.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The @encryptid/sdk dependency uses file:../encryptid-sdk which
requires the build context to include the sibling SDK directory.
Also regenerated lock file to include the SDK.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace isPublic boolean with visibility string field (public/public_read/
authenticated/members_only). Use encryptid-sdk for token verification.
Enforce space access in API routes via checkSpaceAccess.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uint8Array.buffer returns ArrayBufferLike which is incompatible with
PublicKeyCredentialCreationOptions/RequestOptions in strict mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add passkey-based sign-in alongside existing email/password auth:
- Add encryptid credentials provider to NextAuth config
- Add DID field to User model (Prisma schema)
- Add passkey sign-in button to signin page (WebAuthn ceremony)
- Add passkey registration to signup page
- Server-side token verification via EncryptID server
- Auto-creates user from DID on first passkey login
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Sheet UI component for mobile navigation drawer
- SpaceNav: hamburger menu on mobile, horizontal tabs on desktop
- Join page: specific error messages (expired/maxed/invalid), inline success
state with credits info, already-member handling, skeleton loading
- InviteDialog: add expiry hours input, helper text for email field
- InviteList: new component for admin invite management (revoke, copy link)
- Mobile responsiveness sweep across all space pages, proposals, voting
buttons, member list, settings, demo page, and final vote panel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>