Commit Graph

700 Commits

Author SHA1 Message Date
Jeff Emmett fc65bec9dc feat(app-switcher): emoji badges + recently used section
Replace text abbreviation badges (rN, rPh, etc.) with r+emoji format
(r📝, r📸, etc.), remove duplicate emoji from item rows, and add a
"Recently Used" section at the top of the sidebar persisted via
localStorage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 12:10:42 -07:00
Jeff Emmett c8e95ed506 feat(rcart): add cart tab to browser extension + install banner in web UI
Extension gets Clipper/Cart mode tabs, space/cart picker with persistence,
JSON-LD product detection, "Add to rCart" context menu, and badge count.
Web UI shows a dismissible indigo banner prompting extension install when
not detected. Content script sets detection marker on rspace.online pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 12:07:13 -07:00
Jeff Emmett 932151aa88 fix(rsocials): campaign planner loads with fit-to-view on initial visit
Previously the planner restored a stale zoomed-out viewport from
localStorage, and fitView() could fail silently if the SVG had zero
dimensions during shadow DOM layout. Now: skip viewport restore on
initial load, retry fitView up to 3 rAFs, and clamp min zoom to 50%.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:58:27 -07:00
Jeff Emmett 9a7548e5ca feat(rflows): faucet-shaped source nodes with purchase modal + MetaMask
Replace flat source cards with pipe/valve/spigot faucet SVG. Click opens a
centered purchase modal (label, amount, payment method) instead of the cramped
side panel. Adds MetaMask as a new payment option alongside Card and rIdentity.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:56:13 -07:00
Jeff Emmett 5ded81046c feat(rschedule): add automation canvas link and workflow gallery to landing page
Adds "Automation Canvas" CTA button in hero and "Your Automations" section
that fetches workflows from API and displays as grid cards or compact list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:54:33 -07:00
Jeff Emmett b3f335c7d4 Merge branch 'main' into dev 2026-03-10 11:43:25 -07:00
Jeff Emmett f22bc4781c feat(rtrips): wire up demo dashboard with 6-card live grid
Add /demo route, Vite build entry for trips-demo.ts, and demo page
CSS (hero, toolbar, 2×3 card grid, calendar, polls, funds, cart).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:42:35 -07:00
Jeff Emmett 8bc7787d37 feat(rschedule): n8n-style automation canvas at /:space/rschedule/reminders
Visual workflow builder with drag-and-drop node palette (15 node types across
triggers, conditions, and actions), SVG canvas with Bezier wiring, config panel,
REST-persisted CRUD, topological execution engine, cron tick loop integration,
webhook trigger endpoint, and two demo workflows (proximity notification +
document sign-off pipeline).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:42:34 -07:00
Jeff Emmett cc6b5a946d feat(rschedule): n8n-style automation canvas at /:space/rschedule/reminders
Visual workflow builder with drag-and-drop node palette (15 node types across
triggers, conditions, and actions), SVG canvas with Bezier wiring, config panel,
REST-persisted CRUD, topological execution engine, cron tick loop integration,
webhook trigger endpoint, and two demo workflows (proximity notification +
document sign-off pipeline).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 11:42:05 -07:00
Jeff Emmett 61b25e299f feat(rinbox): reply/forward, SMTP send, personal/agent inboxes, canvas shape
Add reply, reply-all, and forward endpoints with proper RFC 5322 threading
headers (In-Reply-To, References). SMTP send executes automatically when
approval threshold is met via nodemailer. Personal inbox CRUD lets users
connect their own IMAP accounts. Agent inbox system with regex-based rules
for auto-classify/auto-reply (drafts go through approval workflow).
Multi-sig email canvas shape (folk-multisig-email) with draft/pending/sent
states and 5s polling. Per-space auto-provisioning via onSpaceCreate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 09:51:47 +00:00
Jeff Emmett de2a1baf84 fix(rsocials): serve campaign planner (n8n flow builder) at /campaigns
The /campaigns route was serving folk-campaign-manager (simple list view)
instead of folk-campaign-planner (the drag-and-drop flow canvas). The
planner was fully built but had no route.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:37:18 -07:00
Jeff Emmett 5ddc345341 feat(rwallet): port D3 visualizations from rwallet-online
Add 3 interactive D3 visualizations (Balance River Timeline, Multi-Chain
Flow Map, Single-Chain Sankey) as tabbed views alongside the existing
balance table. D3 loaded lazily from CDN on first viz tab click. Demo
mode shows all visualizations with mock TEC Commons Fund data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:47:18 -07:00
Jeff Emmett aad08c2eec fix(rsocials): use space-scoped data instead of global scope
rsocials had defaultScope: "global" but client components passed the raw
space slug, creating threads in space-specific docs (e.g. commonshub).
Server routes then looked in the non-existent "global" doc → 404.
Changed to defaultScope: "space" to match how client actually works.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:27:00 -07:00
Jeff Emmett 12d3e86e13 feat(rcart): merge group shopping into rCart module
Add shared shopping carts with URL product extraction, pooled funding,
and extension support alongside existing cosmolocal catalog/orders.

- Shopping cart schemas (ShoppingCartDoc, ShoppingCartIndexDoc)
- Server-side product extraction (JSON-LD, meta tags, Amazon/Shopify)
- 13 new API routes (cart CRUD, items, contributions, extension endpoints)
- 3-tab UI (Carts/Catalog/Orders) with cart detail, funding progress
- Local-first client subscriptions for real-time cart sync
- Updated landing page to reflect group shopping workflow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:21:38 -07:00
Jeff Emmett 62a96c164a feat(rvote): Reddit-style vote column + priority trend chart
- Reddit-style vote column: prominent up/down chevrons flanking the score
  on each ranking proposal card, with x² cost indicator
- Quadratic weight picker: compact inline buttons for +2/+3/+5 and -2
  below the proposal description (supplements chevron ±1)
- Priority Trends chart: SVG line chart showing how proposal scores
  evolve over time, with color-coded lines per proposal, end dots,
  grid lines, time labels, and a toggleable legend
- Score history tracking: records snapshots on each vote, seeds 7 days
  of simulated history for demo mode
- Orange for upvotes, blue for downvotes (matching rvote.online palette)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:52:47 -07:00
Jeff Emmett 35dd1c3d77 feat(rmaps): MapLibre GL map, WebSocket room sync, room history + ping friends
Replace the map room placeholder with a real MapLibre GL dark map (CartoDB
dark_all tiles). Port RoomSync from rmaps-online for WebSocket-based
participant/waypoint sync. Add localStorage room history with thumbnail
capture, participant sidebar with ping buttons, continuous GPS sharing
via watchPosition, and waypoint drop. Demo mode unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:44:28 -07:00
Jeff Emmett 192659b49c feat(rvote): enhanced landing, demo page, and dashboard to match rvote.online quality
- Add /demo route with interactive poll page (connection status, reset, live sync)
- Full rd-* CSS system for demo poll cards, badges, loading states
- Fix landing page links: demo.rspace.online/rvote → /rvote/demo
- Enhanced folk-vote-dashboard: inline voting on proposal cards, grouped by
  status (voting/ranking/decided), create-proposal form, tally bars,
  downvote support, richer visual design with progress indicators
- Add vote-demo.ts build step in vite.config.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:42:57 -07:00
Jeff Emmett a5c7bb784e fix(rsocials): subdomain-aware link generation
Links on subdomain routing (e.g. jeff.rspace.online) were including
the space in the path (/demo/rsocials/campaigns) instead of just
/rsocials/campaigns. Added basePath getter to all components and
detect subdomain in the server-rendered hub page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:31:45 -07:00
Jeff Emmett eedf2cf189 feat(canvas): enhanced feed view with cards, sections, and scroll navigation
Replaces minimal feed mode with a polished scroll-through view: shapes wrapped
in card containers with icon/title/type headers, grouped by section (type, date,
position, alpha) with dividers, sticky scroll summary bar with item counter and
clickable section chips for quick navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:20:05 -07:00
Jeff Emmett c19142791e feat(rnotes): type-specific notes, voice recording, web clipper, module settings
Phase 1: All 7 note types (NOTE, CODE, BOOKMARK, CLIP, IMAGE, AUDIO, FILE)
with type-specific editors, filter bar, new-note dropdown, and demo notes.
Phase 1.5: Code Snippet and Voice Note slash commands.
Phase 2: Voice recording with 3-tier transcription cascade (server Whisper,
Web Speech API, offline Parakeet TDT), mic button in toolbar, standalone
voice recorder component, upload/transcribe/diarize server routes.
Phase 3: Manifest V3 browser extension (web clipper) retargeted to
rspace.online with slug-based routing, article unlock via Wayback/Google
Cache/archive.ph strategies.
Phase 4: Per-module settings framework — settingsSchema on modules,
moduleSettings in CommunityMeta, gear icon in space settings Modules tab,
rNotes declares defaultNotebookId setting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:39:10 -07:00
Jeff Emmett 63b4294c9c fix: use [rS] favicon.png across all server-rendered pages
Replace inline SVG emoji (🌌) favicons with /favicon.png in all four
shell renderers and both landing page renderers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:25:25 -07:00
Jeff Emmett 981acc5b59 feat(canvas): arrow tool button + 4 arrow style variants
Add arrow button to bottom toolbar with style submenu (smooth, straight,
curved, sketchy). Click toggles connect mode, long-press/right-click opens
style picker. Styles persist via localStorage and sync data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:18:26 -07:00
Jeff Emmett c2b821ba0d feat(rcal): dual zoom lenses — temporal + spatial sliders
Add a visible spatial zoom slider (teal) below the existing temporal slider
(indigo) with a coupling toggle between them. When coupled, dragging either
track moves both; when decoupled, spatial slider controls map zoom independently.
Fix T_TO_S mapping gaps (Season→Region, Decade→Planet).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:11:37 -07:00
Jeff Emmett 5053d69ade fix(rcal): map shows only events from visible calendar period
Previously the map rendered ALL events regardless of which time period
the calendar was displaying. Now markers, transit lines, and map bounds
are filtered to the visible date range (day/week/month/season/year).
The map auto-fits to the bounds of visible located events when zoom
coupling is active.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:54:05 -07:00
Jeff Emmett e7c285c752 feat(canvas): replace snap-push with continuous soft repulsion
Shapes that overlap now drift apart gently over ~1 second via an
ambient requestAnimationFrame loop, instead of snapping instantly
when dragged. folk-slide and folk-arrow are exempt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:22:06 -07:00
Jeff Emmett 47b1642156 fix: TDZ error from panX/panY/scale declared after await, add HTML no-cache
Root cause: scale/panX/panY were declared with let at line 5014, but
event handlers referencing them were registered before line 2771. Since
the module has top-level awaits (offlineStore.open, sync.initFromCache),
execution yields and events can fire before the let declarations,
causing "Cannot access variable before initialization" TDZ errors.

Fix: hoist scale/panX/panY declarations to before any await statements.
Also add Cache-Control: no-cache for HTML files and immutable for
Vite content-hashed assets to prevent stale bundle caching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:56:30 -07:00
Jeff Emmett 1568a5d0dc feat: user dashboard shown when all tabs are closed
When the last tab is closed, a dashboard appears showing the user's
spaces (sorted by most recent visit), notifications, and quick actions.
Clicking any item creates a new tab and hides the dashboard. Browser
back/forward handles dashboard state correctly.

Also adds proper cache headers for HTML and Vite-hashed assets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:55:39 -07:00
Jeff Emmett bee09b0e43 fix(canvas): toolbar labels pop out to the right as tooltips
Labels now appear as floating tags outside the toolbar on hover/open
instead of expanding the button width inside the narrow toolbar.
Toolbar overflow changed to visible so labels aren't clipped.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:38:55 -07:00
Jeff Emmett eac0817d4f fix(canvas): show emoji + title in toolbar panel header
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:29:01 -07:00
Jeff Emmett 0645628fb6 fix(canvas): mobile toolbar uses icon grid, tap to open panel
- Mobile toolbar shows compact 48x48 icon grid instead of full-width rows
- Labels hidden on mobile, title shown in popout panel header
- Separators hidden on mobile to save space
- Tap icon to open bottom-sheet panel with title + sub-tools

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:25:14 -07:00
Jeff Emmett fb69b41da6 fix(canvas): toolbar icons show title label on hover/open and in panel header
- Add tg-icon + tg-label spans inside toolbar group toggle buttons
- Label hidden by default, revealed on hover/open via CSS
- Panel header uses title attribute instead of emoji-only textContent
- Plus menu headings also use title attribute for group names
- Mobile: labels always visible alongside icons

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:22:10 -07:00
Jeff Emmett 5842bd9f9a fix: attachShadow guard, null toggleMemoryBtn, register canvas components
- Add if (!this.shadowRoot) guard in history panel and space settings
  connectedCallback to prevent error on element reconnection
- Null-check toggleMemoryBtn before addEventListener since #toggle-memory
  element was removed
- Import and register RStackSpaceSettings + RStackHistoryPanel in
  canvas.html so settings gear and history panel work on canvas page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:15:57 -07:00
Jeff Emmett e9eb56aa2e feat(rmeets): add landing page emphasizing data sovereignty
Rich landing page for rspace.online/rmeets with sections on self-hosted
infrastructure, data sovereignty, ecosystem integrations, and roadmap
(local transcription, BYOS, data integrations).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:04:15 -07:00
Jeff Emmett 9aab4c6409 feat(canvas): replace video chat with rMeets embed in toolbar
Replace folk-video-chat toolbar button with rMeets (Jitsi) rApp
embed in the Connect group. Add rmeets, rschedule, rsocials to
folk-rapp MODULE_META. Add rMeets entry to MI tool schema.

The old folk-video-chat shape remains available for direct use
but is no longer in the toolbar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:01:37 -07:00
Jeff Emmett e76bc09151 fix(canvas): use minimize _ icon instead of chevron for toolbar collapse
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:55:43 -07:00
Jeff Emmett 0cf1db56f4 feat(rmeets): register rMeets as rApp with Jitsi embed
Adds rMeets module with hub page (Quick Meet, Join Room, Jitsi Lobby)
and room pages that embed jeffsi.localvibe.live via renderExternalAppShell.
Jitsi URL configurable via JITSI_URL env var.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:54:10 -07:00
Jeff Emmett d45aaabea7 fix(rflows): theme toggle in shadow DOM + icon-only canvas toolbar
- Fix rFlows light/dark theme: change CSS selectors from :root /
  [data-theme] to :host / :host([data-theme]) so they work inside
  shadow DOM. Mirror data-theme attribute from <html> onto the
  folk-flows-app host element via MutationObserver.
- Canvas toolbar: icons only (no text labels), hover opens group
  name header + submenu flyout. Minimize button moved to top with
  chevron icon, collapses to wrench icon. Mobile gets emoji + text
  via ::after pseudo-element for touch accessibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:39:29 -07:00
Jeff Emmett 0b58ff364b fix(auth): sync .well-known/webauthn origins with EncryptID server
The main server's Related Origins list was stale — it listed 5 generic
r*.online domains instead of the priority domains where passkey ceremonies
actually happen. This caused p2pf socials (socials.p2pfoundation.net) and
other external domains to fail WebAuthn authentication because browsers
couldn't verify them as related origins for RP ID rspace.online.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:27:31 -07:00
Jeff Emmett 2ecea4ebb8 feat: history panel with author attribution + settings gear relocation
Move settings gear to header right (next to identity) on all pages.
Add history clock button in header left that opens a new slide-out
history panel with Activity feed and Time Machine tabs. Embed author
identity (DID, username, timestamp) in Automerge change messages via
JSON envelope, with backward-compatible parsing for old plain strings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:24:27 -07:00
Jeff Emmett f24fee942b feat(rflows): fix text-click drag, smart source labels, Pay by buttons
- Prevent foreignObject HTML clicks from starting node drag (select + inline edit instead)
- New source nodes get personalized "{username}'s stream to {flowName}" label
- Replace source type <select> dropdowns with clickable "Pay by" button grid
  in ICP panel, editor panel, and source modal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:19:46 -07:00
Jeff Emmett a28eb88140 chore: remove dead social.jeffemmett.com redirect labels
Domain has no DNS record and all traffic now routes via demo.rsocials.online.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 18:26:43 -07:00
Jeff Emmett 0e9d00d2ac feat(rsocials): add Listmonk newsletter page + legacy domain redirect
- Add /newsletter-list route embedding Listmonk via iframe
- Add LISTMONK_URL env var to docker-compose
- Add Traefik redirect: social.jeffemmett.com → demo.rspace.online/rsocials
- Add backlog task for linked wallets security hardening (TASK-HIGH.5)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 18:15:05 -07:00
Jeff Emmett bc810d34e4 fix(security): low-severity hardening and security headers
- L-1: Remove internal error details from SIWE verify response
- L-2: Stop forwarding raw Safe API error bodies to clients (log server-side)
- L-3: Evict stale keys from nonce rate limiter to prevent memory leak
- L-4: Add input length/type guards on wallet-link verify body fields
- L-5: Sanitize and cap limit query param on Safe transfers route (max 200)
- L-6: Server recomputes addressHash from SIWE address instead of trusting
  client-supplied value for dedup
- L-7: Reset LinkedWalletStore singleton on logout to clear cached keys
- I-1: Add X-Content-Type-Options, X-Frame-Options, Referrer-Policy headers
- I-9: Build EIP712Domain type array dynamically from domain fields in
  ExternalSigner.signTypedData (was hardcoded to empty, dropping fields)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 18:06:07 -07:00
Jeff Emmett 92fde65d60 fix(security): rate limit, sender verification, icon sanitization, SSRF prevention
- H-3: Rate limit wallet-link nonce to 5 per user per 5 minutes (429)
- H-4: Verify sender address matches JWT walletAddress in add-owner-proposal;
  also include walletAddress in JWT eid claims
- M-1: Sanitize EIP-6963 provider icons — only allow https: and safe
  data:image/(png|jpeg|gif|webp), block SVG and javascript: URIs
- M-2: Validate threshold is a positive integer ≤ newOwnerCount, fetch
  actual Safe owner list for bounds checking
- M-3: Add VALID_ETH_ADDR regex validation to all 9 routes that accept
  address params (Safe proxy, EOA proxy, propose, confirm, execute,
  add-owner-proposal) to prevent SSRF via path traversal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:51:18 -07:00
Jeff Emmett 45f5cea095 fix(security): AES-256-GCM encryption at rest, XSS escape, salted hashes
- C-1: Replace Base64 fake encryption with real AES-256-GCM server-side
  encryption for linked wallet data (HKDF-derived key from JWT_SECRET)
- H-1: Escape token name/symbol in balance table to prevent XSS
- H-2: Salt address hash with user ID to prevent cross-user correlation
- M-4: Remove cleartext sessionStorage cache for linked wallets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:42:09 -07:00
Jeff Emmett 8723aae3f6 fix(encryptid): show success page instead of auto-OIDC redirect
The auto-redirect through OIDC authorize fails because the client app
(Postiz) didn't initiate the OAuth flow and has no matching state.
Instead, show a branded success page with a link to the app. The user
signs in with their passkey when they visit the app normally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:31:32 -07:00
Jeff Emmett d861c0ad99 fix(encryptid): harden wallet link flow + add device_registration type
- Atomic nonce consumption prevents TOCTOU races
- SIWE domain validation against allowlist
- Unique constraint on linked_wallets(user_id, address_hash)
- Add device_registration to challenge type enum

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:17:50 -07:00
Jeff Emmett c789481d91 feat(rwallet): link external wallets via EIP-6963 + SIWE
Users can now connect browser wallets (MetaMask, Rainbow, etc.) to their
EncryptID identity via SIWE ownership proof, and view linked wallet
balances in the unified rWallet viewer.

New files:
- eip6963.ts: EIP-6963 multi-provider discovery
- external-signer.ts: EIP-1193 provider wrapper for tx signing
- linked-wallets.ts: encrypted client-side store (same AES-256-GCM pattern)

Server: wallet-link nonce/verify/list/delete routes, linked_wallets table,
Safe add-owner-proposal endpoint, new session permissions.

UI: "My Wallets" section with provider picker, SIWE linking flow,
wallet type badges, and click-to-view for linked wallets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:12 -07:00
Jeff Emmett ac156cbbf2 fix(encryptid): fix Docker build context for encryptid compose
Build context was set to parent dir (..) which broke all COPY paths.
Use context: . with additional_contexts for the encryptid-sdk sibling,
matching the pattern in the main docker-compose.yml.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:40:32 -07:00
Jeff Emmett b6bc1a756a fix: prioritize ridentity.online in WebAuthn Related Origins
Browsers enforce a 5 eTLD+1 limit on Related Origins. The previous
config dumped all 29 r*.online domains, causing ridentity.online to
be ignored (position 15). Now only lists the 5 domains that actually
need passkey auth: ridentity, rsocials, crypto-commons, p2pfoundation,
rwallet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:37:47 -07:00