rspace-online/modules
Jeff Emmett 69ce497aa8 feat(rschedule): complete native port of schedule-jeffemmett
Phases D-H of the rSchedule booking module:

- **Google Calendar sync** (`lib/gcal-sync.ts`): reuses rspace OAuth, syncs busy
  times into config doc, creates booking events, deletes on cancel.
- **Admin UI** (`components/folk-schedule-admin.ts`): 6-tab passkey-gated dashboard
  (overview, availability rules + overrides, bookings, invitations, gcal, settings).
  Timezone-shift banner when browser tz diverges from host tz.
- **Emails** (`lib/emails.ts`, `lib/calendar-links.ts`): confirmation with
  Google/Outlook/Yahoo add-to-calendar buttons + .ics attachment; cancellation
  with 3 suggested slots from availability engine; 24h reminder.
- **Cron** (`lib/cron.ts`): in-process 5-min reminder sweep + 10-min gcal sweep
  per connected space, started from onInit.
- **Invitations + timezone shift** (mod.ts, admin UI): PATCH
  /api/invitations/:id accept/decline; POST /api/admin/timezone/shift with
  optional booking relabel; invitations tab shows cross-space invites.

Full public booking flow (`components/folk-schedule-booking.ts`): month calendar,
date → slot drill, booking form, confirmation view, timezone picker.

EncryptID passkey gates admin routes via resolveCallerRole ≥ moderator.
Per-entity model: each space (and user-space) hosts its own bookable page;
bookings mirror into invitee spaces' :invitations docs so cross-space visibility
works without cross-space reads.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 18:19:10 -04:00
..
crowdsurf fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
ragents feat(ragents): add agent-to-agent exchange module 2026-04-12 23:27:29 +00:00
rauctions feat(rauctions): add rAuctions module with hub page and external app embed 2026-04-13 15:51:10 +00:00
rbnb fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rbooks feat(canvas): rApplet Phase 2 — port chips, data flow, toolbar palette, 15 module applets 2026-04-15 13:08:49 -04:00
rcal rename: finish rschedule → rminders migration 2026-04-16 17:18:17 -04:00
rcart infra(traefik): scope rate limit per CF-Connecting-IP, raise to 600/150 2026-04-16 17:04:15 -04:00
rchats feat(canvas): rApplet Phase 2 — port chips, data flow, toolbar palette, 15 module applets 2026-04-15 13:08:49 -04:00
rchoices feat(canvas): rApplet Phase 2 — port chips, data flow, toolbar palette, 15 module applets 2026-04-15 13:08:49 -04:00
rcred fix(auth,rcred): passkey autofill for mobile + rcred write access 2026-04-15 19:23:28 -04:00
rdata feat(rdata): traversible Data Cloud — click-to-focus graph navigation 2026-04-15 13:41:44 -04:00
rdesign feat(mcp): 101 MCP tools across all 35 rApps + security hardening + MI integration 2026-04-10 10:25:17 -04:00
rdocs rename: finish rschedule → rminders migration 2026-04-16 17:18:17 -04:00
rexchange feat(canvas): rApplet Phase 2 — port chips, data flow, toolbar palette, 15 module applets 2026-04-15 13:08:49 -04:00
rfeeds feat(rfeeds): add landing page and standalone domain (rfeeds.online) 2026-04-16 12:47:05 -04:00
rfiles fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rflows feat(rflows): add Drips Protocol read-only sync — import on-chain streams/splits as flow nodes 2026-04-15 15:41:54 -04:00
rforum fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rgov feat(canvas): add rApplet circuit components + template system 2026-04-15 12:01:30 -04:00
rinbox feat(canvas): rApplet Phase 2 — port chips, data flow, toolbar palette, 15 module applets 2026-04-15 13:08:49 -04:00
rmaps mobile: touch + pen compatibility pass across rApps 2026-04-16 17:13:35 -04:00
rmeets rename: finish rschedule → rminders migration 2026-04-16 17:18:17 -04:00
rminders fix(build): commit rminders module dir (orphaned during rschedule rename) 2026-04-16 17:16:15 -04:00
rnetwork feat(rschedule,rtasks): wire Calendly-style rSchedule + rTasks canvas port 2026-04-16 17:29:42 -04:00
rnotes mobile: touch + pen compatibility pass across rApps 2026-04-16 17:13:35 -04:00
rpast fix(rpast): always https for non-loopback hosts 2026-04-16 17:06:25 -04:00
rphotos mobile: touch + pen compatibility pass across rApps 2026-04-16 17:13:35 -04:00
rpubs fix(rpubs): canonical subdomain URLs for published pages 2026-04-16 15:51:28 -04:00
rschedule feat(rschedule): complete native port of schedule-jeffemmett 2026-04-16 18:19:10 -04:00
rsheets mobile: touch + pen compatibility pass across rApps 2026-04-16 17:13:35 -04:00
rsocials test(rsocials): Playwright smoke suite + planner reliability fixes 2026-04-16 16:59:59 -04:00
rspace rename: finish rschedule → rminders migration 2026-04-16 17:18:17 -04:00
rsplat fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rswag fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rtasks feat(rschedule,rtasks): wire Calendly-style rSchedule + rTasks canvas port 2026-04-16 17:29:42 -04:00
rtime feat(rtime): split-screen layout — commitment form left, pool viz right 2026-04-16 11:04:14 -04:00
rtrips fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rtube fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rvnb fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rvote fix: disable all feature tours — shell welcome tour, TourEngine, landing links 2026-04-15 11:12:00 -04:00
rwallet feat(canvas): add rApplet circuit components + template system 2026-04-15 12:01:30 -04:00