Commit Graph

1773 Commits

Author SHA1 Message Date
Jeff Emmett bc2b6ba23c Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m58s Details
2026-04-11 10:49:10 -04:00
Jeff Emmett cdb62e2ee8 feat(encryptid): social recovery guardian UX enhancements
- Red pulsing alert dot on avatar when social recovery not configured
- SVG puzzle piece visualization for guardian slots (empty/pending/accepted)
- Key assembly animation when 2+ guardians accepted
- Recovery drill system: test the full guardian approval flow without actual recovery
  - POST /api/recovery/drill/initiate, GET .../status, POST .../complete
  - Drill-specific emails with "TEST ONLY" branding
  - Live polling UI with puzzle pieces filling in as guardians approve
  - Drill timestamp tracking (last_drill_at on users table)
- Solo walkthrough modal: 5-step animated preview of how recovery works
- Approval page detects drill flag, shows DRILL badge
- Account status now returns acceptedGuardianCount and lastDrillAt
- Recovery section shows emergency override messaging

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 10:48:55 -04:00
Jeff Emmett 5fc7b4d6b1 Merge branch 'dev'
CI/CD / deploy (push) Successful in 3m6s Details
2026-04-11 10:14:36 -04:00
Jeff Emmett 98d3ce4d2f fix(canvas): per-user forgotten shape filtering + lazy loading for perf
Shapes deleted (forgotten) by a user no longer reappear on reload —
forgottenBy[localDID] filtering in #applyDocToDOM and #applyPatchesToDOM
means one delete = gone permanently for that user while preserving CRDT
data for others.

IntersectionObserver on FolkShape base class defers heavy init (API calls,
iframes, feed polling) until shapes enter viewport (+500px margin),
reducing initial load from 100+ concurrent requests to ~5-10 visible.

Also: folk-rapp #getModulePath always uses subdomain routing (no subpath
fallback), and DID re-syncs on auth-change events.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 10:14:24 -04:00
Jeff Emmett dda0492dbf feat(encryptid): add email login (magic link) and optional email on registration
- Sign-in modal: detect email input and send as { email } to auth/start
- Add "Send Magic Link" button alongside passkey sign-in
- Registration: optional email field sent with register/complete
- Enter on username field tabs to email; Enter on email submits

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 10:01:06 -04:00
Jeff Emmett 40df4468d4 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m6s Details
2026-04-11 09:06:08 -04:00
Jeff Emmett e9b2a9314b fix(rflows): bump JS cache versions to bust Cloudflare CDN
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 09:05:56 -04:00
Jeff Emmett ca6d5402b8 Merge branch 'dev'
CI/CD / deploy (push) Has been cancelled Details
2026-04-11 09:05:51 -04:00
Jeff Emmett c8622bd82b fix: show sign-in gate on private spaces instead of redirecting away
Previously, visiting a private space on *.rspace.online without a session
redirected to rspace.online, causing a redirect loop after login. Now shows
the sign-in gate in-place so the user logs in and stays on the same page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 09:05:44 -04:00
Jeff Emmett 25aedbbb94 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m1s Details
2026-04-11 08:33:20 -04:00
Jeff Emmett 928867a9e2 fix(encryptid): show all known usernames at login, reduce post-auth redirects
- getAllKnownUsernames() now pulls from 4 sources: current session,
  rspace-username cache, known-personas list, and encryptid-known-accounts
- On specific space: stay on that page (reload only, no redirect away)
- On landing: go straight to dashboard (hardcode "rspace" module)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:33:08 -04:00
Jeff Emmett d68f01e2b0 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m22s Details
2026-04-11 08:03:35 -04:00
Jeff Emmett 70c162b4e1 chore: add backlog tasks 142-143, fix task-120 filename encoding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:03:13 -04:00
Jeff Emmett 590cb67e02 feat(rflows): improve flow visualization with distinct edge colors and overflow glow
Differentiate spending (blue) and overflow (amber) edges from inflow (green),
increase fill opacity, add approaching-overflow pulse animation and status badge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:03:00 -04:00
Jeff Emmett c3457cf98f feat(encryptid): show registered usernames in login modal instead of text input
Display known accounts as clickable buttons in the sign-in modal so users
pick their username rather than typing it — prevents accidental new passkey
creation from typos. Falls back to manual input via "Use a different account".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 08:02:36 -04:00
Jeff Emmett d78b7fdb14 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m15s Details
2026-04-10 23:21:44 -04:00
Jeff Emmett c2c0dadebe fix: move shape-add toolbar next to bottom toolbar instead of bottom-right corner
Repositions the vertical shape-add toolbar (Write, Embed, AI, etc.) from
the fixed bottom-right corner to sit immediately right of the centered
bottom drawing toolbar. Prevents overlap with the bug report button.
JS dynamically positions on load/resize; mobile retains bottom-right.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 23:21:33 -04:00
Jeff Emmett ad218e72ad Merge branch 'dev'
CI/CD / deploy (push) Successful in 5m41s Details
2026-04-10 23:10:39 -04:00
Jeff Emmett e6328581a7 feat: customizable dashboard with persistent home icon and widget system
Adds always-visible home button in tab bar, toggleable dashboard overlay,
widget card system with 8 widgets (tasks, calendar, activity, members,
tools, quick actions, wallet, flows), customize mode with toggle/reorder,
and dashboard summary API endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 23:10:27 -04:00
Jeff Emmett fa6c7da419 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m47s Details
2026-04-10 22:31:10 -04:00
Jeff Emmett 2f4258aa32 feat: refresh landing page with glow animation, SVG icons, interop diagram
Restore personality from old Next.js landing: animated hero glow, playful
"MySpace → (you)rSpace" copy, SVG feature cards with teal/indigo accents,
shield graphic for EncryptID, interoperability ASCII diagram, sharper
philosophy copy, ecosystem grid with r*.online domains, richer footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:30:55 -04:00
Jeff Emmett 0641a3189f Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m34s Details
2026-04-10 22:26:34 -04:00
Jeff Emmett 53c757e68e fix: comprehensive memory leak and performance fixes across 44 files
Browser-side:
- Fix switchSpace() to LRU-evict idle space WebSocket connections (cap: 3)
- Add runtime.unsubscribe() to disconnectedCallback in 24 components
- Fix DocSyncManager.unsubscribe() to clean up syncStates, timers, listeners
- Fix 14 components leaking RAF loops, ResizeObservers, MutationObservers,
  document/window listeners, setIntervals, MapLibre WebGL contexts, and
  AbortControllers on disconnect
- Deduplicate Automerge WASM: module builds now use global shim from
  shell-offline instead of bundling ~2.5MB each (8 modules affected)

Server-side:
- Add LRU eviction to SyncServer.#docs (cap: 500, evicts idle docs with
  no subscribers, persists to disk before eviction)
- registerWatcher() now returns unsubscribe function

Data:
- Cap unbounded CRDT arrays: rexchange chatMessages (200), rcart events (200)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:26:24 -04:00
Jeff Emmett e3298ca7f1 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m53s Details
2026-04-10 19:58:10 -04:00
Jeff Emmett 76df746e15 feat: cross-browser/cross-device compatibility sweep
Browser compat gate (WASM/ESM check + structuredClone polyfill),
structured WebAuthn error handling with user-facing messages,
email-only login mode when passkeys unavailable, Firefox passphrase
fallback for document encryption (salt storage, modal UI, key
derivation bridge), CSS flex gap fallbacks for Safari <14.1,
MapLibre CDN load error handling, and server-side auth error
improvements with proper HTTP status codes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:57:59 -04:00
Jeff Emmett 7ccc80662d Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m8s Details
2026-04-10 19:46:32 -04:00
Jeff Emmett c6cb875ba4 feat(rcal): add Google Calendar sync integration with connectors menu
- Google Calendar API client (server/google-calendar.ts): token auto-refresh,
  list calendars, fetch events with incremental sync, create events, mapping
- OAuth scopes: added calendar.readonly + calendar.events, returnTo param
- rCal routes: subscribe, sync, sync-all, unsubscribe, push-to-Google endpoints
- Background sync loop: 10-minute interval with incremental sync tokens
- Frontend: calendar picker modal, sync button, per-event Google export
- MCP: source_type filter on rcal_list_events, new rcal_sync_google tool
- Connectors menu: Google shows services (Docs/Drive/Calendar) + calendar count,
  added Obsidian & Logseq as file-based connectors, Notion shows services
- Fix: import-export dialog API base corrected from rnotes to rdocs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:45:52 -04:00
Jeff Emmett 5ee8e9a5ca Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m17s Details
2026-04-10 19:16:19 -04:00
Jeff Emmett 885f0baeb1 feat: add Linea chain support and WalletAdapter abstraction
TASK-120 Phases 1-2: Add Linea mainnet (59144) and Linea Sepolia (59141)
to all chain maps (CHAIN_MAP, RPC, env names, native tokens, popular tokens,
CoinGecko, Zerion, chain colors/names, Safe prefixes). New WalletAdapter
class provides chain-parameterized abstraction over Safe/EOA/UP wallets
with immutable withUniversalProfile() and fromSafe/fromEOA/fromUP factories.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:14:31 -04:00
Jeff Emmett 595a8a5603 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m50s Details
2026-04-10 18:40:58 -04:00
Jeff Emmett be98bb542c fix: rename MIc to miC with mic emoji in voice conversation buttons
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:40:40 -04:00
Jeff Emmett 71482f0e2a Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m36s Details
2026-04-10 18:37:57 -04:00
Jeff Emmett 8d859b87bf feat(rmeets): add Meeting Intelligence page, space-scoped rooms, toolbar buttons
- Add /meeting-intelligence route with aggregate knowledge (action items,
  decisions, topics) and space-scoped meeting cards
- Add Meeting Intelligence link to hub page and in-room MI dropdown
- Prefix Jitsi room names with space slug for conference_id scoping
- Add shareaudio and meetingintelligence to embed toolbar buttons
- Recordings route now filters by conference_prefix

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:37:35 -04:00
Jeff Emmett 711a81e606 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m12s Details
2026-04-10 18:09:43 -04:00
Jeff Emmett fe605a33e2 fix: update vite config to copy notes.css from rdocs instead of deleted rnotes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:09:35 -04:00
Jeff Emmett f2353b9151 Merge branch 'dev'
CI/CD / deploy (push) Failing after 41s Details
2026-04-10 18:07:37 -04:00
Jeff Emmett 18b61fa5e6 feat: rebuild rNotes as vault browser, editor code now in rDocs
Phase 2-3 of the rNotes/rDocs split. Rewrites rNotes from a full TipTap
editor (~1800 lines) into a lightweight Obsidian/Logseq vault sync and
browse module (~560 lines). Rich editing features remain in rDocs.

rNotes vault browser:
- VaultDoc schema: metadata-only in Automerge (title, tags, hash, wikilinks)
- ZIP vault uploads stored on disk at /data/files/uploads/vaults/
- File tree browser, search, read-only markdown preview
- Wikilink graph data endpoint for visualization
- 5 MCP tools: list_vaults, browse_vault, search_vault, get_vault_note, sync_status
- Browser extension compat shim redirects old API calls to rDocs

Cleanup:
- Removed dead editor files from rnotes (converters, components, local-first-client)
- Updated MI integration to use getRecentVaultNotesForMI
- Updated ONTOLOGY.md with new module descriptions
- Bumped JS cache versions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:05:35 -04:00
Jeff Emmett a89a6fbebb Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m55s Details
2026-04-10 17:48:41 -04:00
Jeff Emmett 99492cc532 feat: extend browser back button support to all rApp modules with view navigation
Adds ViewHistory integration to 9 additional modules (rtime, rswag, rwallet,
rbnb, rvnb, rnetwork, crowdsurf, rtube, rflows-mortgage), bringing the total
to 17 modules. Browser back now navigates within the current rApp tab before
falling through to tab switching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:48:31 -04:00
Jeff Emmett eb6ea4e500 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m14s Details
2026-04-10 17:34:08 -04:00
Jeff Emmett 9147198ce5 fix: don't disable generate button for on-demand sidecars
FreeCAD, KiCad, and Blender shapes were permanently disabling the
generate button when their sidecar containers were stopped. Since these
are on-demand sidecars that start via ensureSidecar() when generate is
clicked, the health check should not disable the button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:33:59 -04:00
Jeff Emmett 5b2fe0e5f2 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m52s Details
2026-04-10 17:25:40 -04:00
Jeff Emmett 857a25e625 feat: add MakeReal canvas shape (sketch-to-HTML via Gemini vision)
New folk-makereal shape converts hand-drawn wireframes into functional
HTML/CSS using Gemini Flash 2.5 vision. Drawing canvas + live iframe
preview with framework selector (HTML/Tailwind/React), code view toggle,
and copy/open-tab actions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:25:28 -04:00
Jeff Emmett 45a5286df5 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m18s Details
2026-04-10 17:03:46 -04:00
Jeff Emmett edabad18e4 Add gesture recognition and collaborative sync to folk-drawfast
Implements $1 Unistroke Recognizer for detecting circles, rectangles,
triangles, lines, arrows, and checkmarks from freehand strokes. Detected
gestures are converted to clean geometric shapes with a confidence badge.

Fixes applyData() to restore strokes, prompt text, and generated images
from Automerge sync data, enabling collaborative drawing across clients.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:03:38 -04:00
Jeff Emmett 4704cebf08 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m37s Details
2026-04-10 15:29:38 -04:00
Jeff Emmett f58445c35e Add AI sketch-to-image generation to folk-drawfast
- Split layout: drawing canvas (left) + AI result (right)
- Prompt input with Generate button using /api/image-gen/img2img
- Auto-generate toggle: debounced generation after each stroke
- Provider selector (fal.ai / Gemini) and strength slider
- Loading spinner overlay with shimmer animation
- Image preloading before display for smooth transitions
- Port descriptors for folk-arrow connections (prompt, sketch, image)
- Wider default size (700x520) for split view

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 15:24:51 -04:00
Jeff Emmett 76e75c4e69 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m53s Details
2026-04-10 14:06:58 -04:00
Jeff Emmett de9cc21301 feat(rmeets): require username on join, fix settings/background, add MI toolbar
- Enable prejoin page so users must enter a display name before joining
- Add requireDisplayName, SETTINGS_SECTIONS, disableVirtualBackground config
- Add floating Meeting Intelligence button with recordings/search links
- Add chat, settings, participants-pane to folk-jitsi-room toolbar
- Also includes: rDocs module expansion, tab-cache/view-history updates,
  converter rewrites, MCP tool additions, OAuth fixes, backlog tasks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 14:06:47 -04:00
Jeff Emmett 9a0ebedf69 Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m25s Details
2026-04-10 11:19:40 -04:00