rspace-online/shared
Jeff Emmett e34eec649f feat(canvas): unified rApp canvas interaction — keyboard + space-to-grab
Phase A.5: bring rApp mini-canvases to parity with the main rSpace canvas
on keyboard shortcuts and Space-to-grab behavior, plus ship reusable
primitives for fit-view and zoom chrome.

shared/canvas-interaction.ts — extend CanvasInteractionController:
  • enableSpaceToGrab — Space sets grab cursor and flips isSpaceHeld()
  • enableKeyboardShortcuts — 0 fit, +/- zoom, arrows pan, Ctrl+Z/Y
    undo/redo, Delete/Backspace delete (with shadow-DOM-aware text
    input detection so inline editors still work)
  • zoomByFactor() helper for chrome +/- buttons

shared/canvas-viewport.ts (new):
  • fitViewToRects / fitViewToNodes — standard fit algorithm matching
    the main canvas (40px padding, 0.1–1.5 clamp default)
  • persistViewport / restoreViewport — localStorage under
    rspace_viewport:<key> with finite-value validation

shared/components/rspace-canvas-chrome.ts (new):
  • <rspace-canvas-chrome> web component — zoom out/in/fit buttons +
    percent indicator + optional grid toggle. Emits canvas-zoom-*
    events. Available as drop-in for new/future canvases.

Migrate 8 rApp canvases to opt into space-to-grab + keyboard fit:
rsocials planner (keeps existing isEnabled gate), rsocials workflow,
rminders automation, rflows, rgov circuit, rnetwork CRM graph,
applet-circuit-canvas. rTime skips enableSpaceToGrab because it has
its own Space tracking integrated with node-drag state.

Bump asset cache versions so browsers pick up the new JS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 18:18:49 -04:00
..
components feat(canvas): unified rApp canvas interaction — keyboard + space-to-grab 2026-04-17 18:18:49 -04:00
converters feat(rmeets): require username on join, fix settings/background, add MI toolbar 2026-04-10 14:06:47 -04:00
db feat: Phase 5 — remove PostgreSQL from rForum, rSpace now fully PG-free 2026-03-02 16:25:26 -08:00
local-first fix(persistence): flush docs on shutdown, fix eviction race, mobile flush 2026-04-16 08:45:01 -04:00
markwhen rename: finish rschedule → rminders migration 2026-04-16 17:18:17 -04:00
x402 feat(x402): bridge on-chain USDC payments with CRDT token ledger 2026-03-21 14:23:24 -07:00
applet-types.ts feat(canvas): wire commitment weaving data flow between rTime and rTasks applets 2026-04-15 17:16:48 -04:00
auth-fetch.ts feat: auth-fetch, shape registry, and data pipes (TASK-13, TASK-41, TASK-42) 2026-03-11 15:59:51 -07:00
automerge-shim.ts fix: comprehensive memory leak and performance fixes across 44 files 2026-04-10 22:26:24 -04:00
canvas-interaction.ts feat(canvas): unified rApp canvas interaction — keyboard + space-to-grab 2026-04-17 18:18:49 -04:00
canvas-viewport.ts feat(canvas): unified rApp canvas interaction — keyboard + space-to-grab 2026-04-17 18:18:49 -04:00
collab-presence.ts fix(presence): keep peers online across rApp navigation in same space 2026-04-17 11:23:50 -04:00
comment-pin-types.ts feat(canvas): simplify comment pins — optional notes + link rNotes 2026-03-22 19:13:58 -07:00
compat.ts fix(compat): improve cross-browser support for Firefox, Safari, and older browsers 2026-03-20 10:43:38 -07:00
draggable.ts infra(traefik): scope rate limit per CF-Connecting-IP, raise to 600/150 2026-04-16 17:04:15 -04:00
ecosystem-manifest.ts feat(ecosystem): implement cross-app embedding protocol (TASK-46) 2026-03-11 18:32:28 -07:00
markdown-tiptap.ts feat(rinbox): add markdown rendering + TipTap collaborative editing 2026-03-30 20:40:49 -07:00
membrane.test.ts feat: object visibility membrane — per-object access filtering 2026-04-12 11:09:44 -04:00
membrane.ts feat: object visibility membrane — per-object access filtering 2026-04-12 11:09:44 -04:00
module-comment-schemas.ts feat(comments): spatial comment pins on all rApp module pages 2026-04-10 11:15:05 -04:00
module-comment-types.ts feat(comments): spatial comment pins on all rApp module pages 2026-04-10 11:15:05 -04:00
module.ts feat(canvas): add rApplet circuit components + template system 2026-04-15 12:01:30 -04:00
moonpay.ts feat(rcart): add MoonPay integration with Transak fallback 2026-04-03 06:23:14 +00:00
scope-resolver.ts feat: scope system, cross-space navigation, and spaces-as-layers 2026-03-09 06:33:32 +00:00
shortcut-config.ts feat(shell): cross-tab sync via BroadcastChannel + keyboard shortcuts & swipe gestures 2026-03-20 13:04:31 -07:00
tab-cache.ts feat: customizable dashboard with persistent home icon and widget system 2026-04-10 23:10:27 -04:00
tour-engine.ts fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
transak.ts fix: try gateway for Transak token refresh before legacy API 2026-04-03 03:58:09 +00:00
url-helpers.ts fix: enforce subdomain routing — spaces are subdomains, never path segments 2026-04-03 14:09:53 -07:00
view-history.ts feat(rmeets): require username on join, fix settings/background, add MI toolbar 2026-04-10 14:06:47 -04:00
yjs-ws-provider.ts feat(rinbox): add markdown rendering + TipTap collaborative editing 2026-03-30 20:40:49 -07:00