Commit Graph

72 Commits

Author SHA1 Message Date
Jeff Emmett 08c2db2f13 ci: retrigger pipeline
CI/CD / deploy (push) Failing after 8s Details
2026-04-02 15:12:07 -07:00
Jeff Emmett 60a7a4ee26 ci: retrigger pipeline
CI/CD / deploy (push) Has been cancelled Details
2026-04-02 15:05:49 -07:00
Jeff Emmett a9ea1c9c3e fix(ci): use SSH-based container status check for smoke test
CI/CD / deploy (push) Failing after 14s Details
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 15:06:43 -07:00
Jeff Emmett dfe8f498ce ci: use internal registry (bypass Cloudflare upload limit)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 10:46:34 -07:00
Jeff Emmett 8d326dedc0 ci: add Gitea Actions CI/CD pipeline
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 10:32:52 -07:00
Jeff Emmett b54bed9234 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:40 +00:00
Jeff Emmett b4f54da466 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:51 +00:00
Jeff Emmett 62258f60d6 fix: add Traefik priority 130 to override rspace-online routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 14:30:24 -08:00
Jeff Emmett 499974c361 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:16:59 -08:00
Jeff Emmett 98a0adb570 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:20:25 -08:00
Jeff Emmett a49cc72182 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:56:52 -08:00
Jeff Emmett 27d96cc127 fix: add required decaysAt field to Vote seed data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 01:07:07 -08:00
Jeff Emmett d6544cb394 Add internal seed endpoint for demo data
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>
2026-02-25 01:02:31 -08:00
Jeff Emmett 1c6f9c64df fix: remove unmigrated fields from provision endpoint
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>
2026-02-25 00:49:56 -08:00
Jeff Emmett 69599db091 fix: use isPublic instead of visibility in provision endpoint
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>
2026-02-25 00:48:19 -08:00
Jeff Emmett 7fffb9435b Add internal provision endpoint for rSpace Registry
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>
2026-02-25 00:30:07 -08:00
Jeff Emmett d6ac388afe 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 8f41e7dbf0 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:54 -08:00
Jeff Emmett a1aec145e7 fix: nest Sign Out under username dropdown in UserMenu
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:09:14 -08:00
Jeff Emmett bdd08b31b1 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:08 -08:00
Jeff Emmett c50327d400 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:00 -08:00
Jeff Emmett 766f72dd83 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:06 -08:00
Jeff Emmett 1130328549 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:04 -08:00
Jeff Emmett 7a62b9fd58 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:54 -08:00
Jeff Emmett c8bbda5931 Add .dockerignore for optimized Docker builds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:59:53 -07:00
Jeff Emmett 3ec36b52d5 chore: migrate SMTP from mx.jeffemmett.com to mail.rmail.online
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:15:24 +00:00
Jeff Emmett 5d516fb770 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 a9866f4a32 feat: migrate from NextAuth to pure EncryptID auth
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>
2026-02-18 11:04:55 +00:00
Jeff Emmett 8ed22c9caa feat: standardize nav header and add ecosystem footer
Rename "Spaces" to "Create Space", add full 16-app ecosystem footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:43:23 +00:00
Jeff Emmett 6a8fb6b6ec fix: use ownerDid instead of creatorId for Space owner check
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>
2026-02-17 16:20:07 -07:00
Jeff Emmett ca9d54b01b chore: backlog TASK-6 SpaceRole bridge (Done)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:35:06 -07:00
Jeff Emmett b3a860766e feat: add SpaceRole bridge for cross-module membership sync
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>
2026-02-17 14:32:11 -07:00
Jeff Emmett b98f09305b docs: add MODULE_SPEC.md with permission model and capabilities
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 12:30:14 -07:00
Jeff Emmett 2a14925b54 chore: add rInbox to r* Ecosystem footer
Add rinbox.online link to the ecosystem footer navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:31:22 -07:00
Jeff Emmett 5cfbe70791 Replace Resend env vars with SMTP config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:13:19 -07:00
Jeff Emmett b977c26e01 chore: remove unused resend dependency
Email/password auth removed in favor of EncryptID passkeys.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 09:49:04 -07:00
Jeff Emmett 160a556a48 feat: rewrite demo with live rSpace data via useDemoSync
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>
2026-02-15 09:39:11 -07:00
Jeff Emmett 8276dacc24 feat: unify auth with EncryptID SDK, remove email/password
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>
2026-02-15 09:36:01 -07:00
Jeff Emmett 23971b2f0f feat: add r* ecosystem footer to layout
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>
2026-02-15 08:58:42 -07:00
Jeff Emmett 7172306028 Remove Vercel deploy section from README, add backlog tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:40:38 -07:00
Jeff Emmett 11060b0a33 Add did property to next-auth Session type
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>
2026-02-14 19:39:54 -07:00
Jeff Emmett 093062ccc2 Add ambient type declarations for @encryptid/sdk subpath imports
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>
2026-02-14 19:38:24 -07:00
Jeff Emmett 4764686bd0 Fix seed script: use visibility field instead of removed isPublic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:32:29 -07:00
Jeff Emmett 6666cd1182 Fix Docker build: copy SDK into node_modules directly for Turbopack compat
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:31:07 -07:00
Jeff Emmett 0e05f3a5ab Fix Docker build: disable Turbopack for file: linked SDK compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:27:38 -07:00
Jeff Emmett 9d3c8ee5dc Fix Docker build: use parent context for encryptid-sdk
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>
2026-02-14 19:23:08 -07:00
Jeff Emmett a47db17039 Add emoji favicon (🗳️) for browser tab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 19:13:39 -07:00
Jeff Emmett 3cd6ccee6d feat: migrate to configurable space visibility with SDK auth
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>
2026-02-13 11:54:12 -07:00
Jeff Emmett 4c7cc616fe feat: add Prisma migration for EncryptID did column on User
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:45:33 -07:00
Jeff Emmett 36584014ae fix: ArrayBuffer type casts for WebAuthn ceremony in TS 5.x
Uint8Array.buffer returns ArrayBufferLike which is incompatible with
PublicKeyCredentialCreationOptions/RequestOptions in strict mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 07:43:05 -07:00